일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 가설검정
- join
- 결정계수
- 데이터프레임
- distribution
- cross validation
- 밀도기반
- DataFrame
- 딕셔너리
- 다중공선성
- hive
- pig
- SPLIT
- 교차검증
- list
- 유사도
- 분포
- p-value
- merge
- 하둡
- 분산분석
- Python
- SQL on 하둡
- 병렬 쿼리 시스템
- k-means
- dict
- pca
- T-검정
- Sawzall
- DBSCAN
- Today
- Total
one of a kind scene
[알고리즘] PCA는 언제? 왜? 쓸까? 본문
차원축소 알고리즘인 PCA알고리즘에 대해서 정리하고자 함
PCA를 왜 쓰는지 그리고 쓰면 머가 좋은지에 대해서 결론적인 얘기만 하고자함
흔히, PCA 알고리즘을 차원축소 알고리즘으로 알고있다.
그렇기 때문에 면접때 PCA를 왜 사용했냐고 물어봤을때,
단순히 차원을 축소하기 위해서 썻다고 답변하는 경우가 허다하다.
(이 답변은 30점 정도 줄 수 있는 답변이다.)
PCA를 사용하면 다중공선성 문제, 차원의 저주 문제를 해결할 수 있고,
차원을 축소해주기때문에 사람이 쉽게 관찰하고 이해할 수 있는 2차원으로 데이터들을 보여줄 수 있기때문에
사용했다고 답변해야 좋은 답변이라 할 수 있다.
PCA는 어떤 알고리즘인가?
PCA는 차원축소 알고리즘으로 생각하기보다는 기존 변수를 조합해 새로운 변수를 만드는 변수 추출(Feature Extraction)기법 이라고 알고있으면 좋다. 이때, 변수 선택(Feature Selection) 기법과 용어가 헷갈릴 수 있는데
1) 변수 선택(Feature Selection) : 있는 변수 중 결과값을 잘 표현할 수 있는 변수를 (있는 변수들 중에서) 단순히 고르는것
2) 변수 추출(Feature Extraction) : 변수들을 조합해 새로운 변수를 만들어 결과값을 잘 표현하는 방법
좀 더 스마트하게 PCA 알고리즘을 설명해보면, 기존의 변수들을 선형 결합(linear combination)하여 새로운 변수를 만들어 내는 기법이라고 할 수 있겠다.
그렇다면 PCA를 통해서 1)차원의 저주 문제와 2)다중공선성 문제를 어떻게 해결할 수 있을까요?
1) 차원의 저주
차원의 저주란 차원이 증가할수록 (데이터를 표현할 수 있는 공간은 커지지만 데이터의 갯수는 그대로이기 때문에) 데이터의 밀도가 희소해지는 현상. 따라서 차원이 커진만큼(=데이터를 표현할 공간이 커진만큼) 데이터량도 많아야 학습이 잘된다. 차원은 커졌지만 데이터의 양이 부족하다면, 차원의 일부 공간에 제한되서 혹은 공간별로 소수의 데이터만을 설명하기 때문에 학습된 것만 잘 맞추는 과적합(Overfitting) 문제가 발생할 수 있다.
따라서, PCA 알고리즘으로 차원을 줄여주게 된다면 데이터가 적은 차원에서 밀도있게 표현되기 때문에 차원의 저주 문제를 해결할 수 있다.
(추가)
고차원 → 저차원 으로 줄이게 된다면 계산량이 줄어드는 효과도 기대할 수 있음
2) 다중공선성 문제
다중공선성 문제는 변수들간의 상관관계가 높을때 문제가 발생한다.
유식하게 표현해보자면 독립변수들 간의 강한 상관관계가 나타날때 다중공선성 문제가 발생한다.
다중공선성이 왜 문제냐?
회귀분석의 가정(전제 조건)인 변수들간의 상관관계가 높으면 안된다는 가정을 위배함
상관계수가 높다면 X1, X2라는 변수가 있을때 오롯이 X1이 Y값에 어느정도 영향을 미쳤는지
X2값은 얼마나 영향을 미쳤는지 알 수 없다. 따라서 X1, X2에 붙게되는 계수(=회귀계수)를 신뢰할 수 없게된다.
따라서, PCA 알고리즘은 주성분 PC1과 PC2를 찾는 과정에서 두 변수가 직교해야하기때문에
두 변수 사이의 상관관계가 0으로 나타나 다중공선성 문제를 해결할 수 있게된다
더 공부하면 좋을 참고url
https://ukchanoh.wordpress.com/2015/02/16/multicollinearity/
'데이터 분석 이론 > 데이터 사이언스' 카테고리의 다른 글
k-fold cross validation에 대해서 (0) | 2020.02.02 |
---|---|
word2vec에 대해서 (0) | 2020.02.01 |
[용어] 배치 작업 vs 실시간 작업 (0) | 2020.01.10 |
[용어 차이] regression에서 prediction vs forecast 차이 (0) | 2020.01.05 |
[유사도] 거리 기반 유사도(유클리디안 거리) vs 각도 기반 유사도(코사인 유사도) (1) | 2019.12.12 |