github.com/SeongwonTak/TIL_swtak/blob/master/DataScience/210321_PCA_Revisited.ipynb
3/21일에 공부했던 내용을 재복습 하면서, 해당 내용을 어느정도 인용 및 추가 설명을 붙여보려 한다.
수행 코드는 github에 있으며 오늘은 PCA의 배경과 원리, 간단한 알고리즘만 알아보도록 하자.
차원의 저주 및 OverFitting
데이터 분석을 하다보면, feature가 1-2개인 경우는 거의 없을 것이고 수십, 수백개 이상인 경우가 흔할 것이다. 이렇게 feature가 많아지면 무슨 일이 발생하게 될까?
차원, 특성이 점점 많이진다는 것은 표본 대비 변수의 개수가 점점 많아진다는 것이고, 이는 표본들간의 거리가 점점 멀어진다는 것을 의미한다.
차원의 저주가 치명적일 상황
차원의 저주가 발생하면 여러 문제가 발생할 것이다.
- 훈련의 저효율 발생
예를 들어, 이미지 분류 문제 중 대표적인 MNIST 손글씨 문제의 경우는 가로 28, 세로 28칸의 784칸의 데이터를 바탕으로 0~9까지의 숫자를 결정하는 문제인데. 픽셀 1칸 1칸, 총 784칸이 변수가 되어버린다. 이렇게 될 경우 훈련이 느려질 뿐더러, 최적의 솔루션을 찾기가 어려울 것이다.
- 예측의 불안정성
앞에서, 표본들간의 거리가 멀어진다고 표현했는데, 이는 kNN 알고리즘을 생각해보면 생각보다 문제가 많이 심각함을 알 수 있다. kNN은 분류 모델중의 하나로, 이웃한 k개의 분류 결과를 바탕으로 자신도 분류하는 모델을 말한다.
이 때, kNN은 기본적으로 Nan-Euclidean distance를 쓰는데, 저차원에서는 표본간의 거리가 가까울 수 있으나 고차원으로 갈 수록 점들간의 거리가 멀어지기에 kNN의 사용시에 훨씬 더 많은 작업이 필요할 뿐만 아니라 예측의 불안정성을 야기하게 된다.
따라서 차원을 줄이는 과정은 매우 중요하며, 이에 따라 차원을 축소하는 여러가지 방법이 존재한다.
대표적으로는 주성분 분석(PCA)와 선형판별분석(LDA)을 통해 차원을 축소할 수 있다. 여기서는 주성분 분석에 대해서 알아보자.
PCA의 직관적, 시각적 이해
PCA는 고차원 데이터에서 분산이 가장 큰 방향을 찾고, 좀 더 작거나 같은 수의 차원을 갖는 새로운 부분 공간으로 투영하게 된다. 즉, 분산이 큰 몇 방향을 선택하게 되는 것이 목표이다. 이 때, 새로운 축은 서로 직각을 이루게 만들면 편하다.
2차원을 1차원으로 내리는 과정을 생각해보면 명백해진다.
(a)와 (b)의 상황을 비교해보자. 2차원 평면이 있는 좌표값들을 직선으로 투영시킨 상황이다. 이 때 (a)의 경우에 비해 (b)의 경우의 오차제곱합이 당연히 적다. 한편 파란색 직선의 입장에서만 생각해보면 (a)에 데이터가 퍼진 정도보다 (b)에서 데이터가 퍼진 정도, 즉 분산이 더 크다는 것을 알 수 있다.
위의 과정을 통해 알 수 있는 것은 분산이 가장 큰 방향을 구하기 위해서는, 공분산 행렬을 통해 변수간 분산을 확인 하고, 가장 큰 방향을 확인하기 위해서는 고윳값을 확인하여 가장 큰 주성분을 찾게 된다.
PCA 알고리즘
따라서, PCA는 다음과 같은 순서를 따라간다.
1. 주어진 데이터셋을 전처리한다.
2. 공분산 행렬을 만든 후, 이를 고유값 분해를 실시한다.
3. 고윳값을 내림차순으로 정렬 후, 가장 큰 k개의 고윳값 및 이에 해당하는 고유벡터를 선택한다.
4. 최상위 k개의 고유 벡터로 투영 행렬 W를 만든다.
5. 투영 행렬을 활용하여 k차원으로 변환한다.
이의 과정에 따라 계산을 하게 되며, scikit-learn에는 이미 PCA가 잘 구현되어있다.
'Archive > 데이터 분석 관련' 카테고리의 다른 글
[Data] 분류 알고리즘 - Decision Tree, Random Forest (0) | 2021.06.01 |
---|---|
[Data] 로지스틱 회귀분석 (0) | 2021.06.01 |
[Data] Scikit-learn을 통한 Pipeline 구축 (0) | 2021.06.01 |
[Data] p-value Revisited, p-hacking이란? (0) | 2021.05.27 |
[Data] 분류의 성능평가 - Confusion Matrix (0) | 2021.05.18 |