Cyrill님의 강의를 듣고 PCA를 이해하고 공부했습니다.
먼저 Dimensionalty Reduction을 언급합니다. 왜냐하면 PCA도 차원을 줄이기 위한 용도로 많이 사용하기 때문입니다. 왜, 어떻게 차원을 줄이는 것일까요?
시간, 공간 복잡도는 입력에 따라 많이 영향을 받습니다. 그래서 입력의 차원을 낮춰 복잡도를 감소 시키고자 하는데 이때, solution에 기여도가 가장 작은 특징공간을 잘라내고자 하는게 차원을 줄이고자하는게 목표입니다.
차원을 줄이는 방법을 2가지로 구분지어 설명합니다.
Selection vs Extraction
Selection은 D차원의 데이터에서 K차원의 feature 얻고자 한다면 D-K차원을 버리고 K을 선택합니다.
Extraction은 D차원의 데이터에서 적절한 조합을 통해 새로운 K차원을 특징을 추출합니다.
따라서 의미를 해석하기 어려운 입력 데이터에서는 Extraction이 더 효율적으로 보입니다.
PCA, Fisher-LDA, LLE가 다 이 extraction 방법에 속한다고 합니다.
오늘은 그중에서도 PCA에 대해서 설명하겠습니다.
PCA는 Principle Component Analysis의 줄임말로 주성분 분석을 의미합니다. 즉 입력 데이터에서의 주요한 성분을 extract하는 방법입니다.
PCA의 아이디어는 다음과 같습니다.
- 정보 손실을 최소화하는 D차원의 원본데이터를 K차원의 공간으로의 mapping을 찾는 것
- 데이터의 분포를 분석하고, 가장 잘 커버할 수 있는 새로운 찾는 것
- 데이터를 정사영 시켜 차원을 낮추는 것
데이터를 처리할 때 데이터의 차원의 수와 갯수에 따라서 아래 행렬로 표현할 수 있습니다.
위의 데이터를 n x d가 아니라 n x k 형태의 행렬로 바꾸어 주는게 PCA의 목적입니다. 각 데이터 간의 관계를 해석하기 위해서 공분산 행렬을 구해 줍니다. 행렬의 형태로 되어 있기 때문에 단순 transpose를 취해서 행렬곱을 진행한다면 공분산 행렬을 얻을 수 있습니다.
이렇게 획득한 공분산 행렬은 각 위치의 따른 기하학적 의미를 가지고 있습니다.
고유벡터는 그 행렬을 가장 잘 나타내는 주요한 방향을 나타냅니다. 획득한 공분산행렬에서의 고유 벡터는 데이터가 데이터가 어떤 방향으로 분산되어 있는지를 나타내줍니다. 또 그 고유 벡터에 대한 고유 값은 얼마만큼의 크기로 벡터공간이 늘려지는지를 표현합니다. 따라서 고유 값이 큰 값 부터 고유 벡터를 구해준다면 가장 잘 분산된 방향의 성분을 구할 수 있습니다.
밑의 증명은 공분산 행렬의 고유값과 고유벡터가 분산 값과 그 분산의 방향을 의미하는지에 대한 증명입니다.
그중 가장 고유값이 큰 값을 주성분으로 생각하여 주성분으로 추출합니다.
따라서 PCA를 이용하여 입력 데이터의 차원의 줄여 복잡도를 줄이는 방법을 확인하였습니다. PCA는 이 외에도 특징을 찾는 방법에도 많이 사용되었습니다. 얼굴에서 눈 ,코, 입을 찾기 위해 주성분을 분석하기도 하였다고 합니다.