1. 주성분 분석 (Principal Component Analysis, PCA)
ㅇ 많은 수의 변량을 적은 수의 변량으로 축약시켜 (차원 축소), 분석하는 대표적인 방법
- 다 변량 자료에서, 분포된 여러 데이터들의 주 성분을 찾아냄으로써,
- 데이터의 개성이 돋보이게 하여, 새로운 시각으로 관찰이 가능케함
2. 주성분 (Principal Component) 이란?
※ 데이터의 분산(Variance)이 최대가 되는 축(Axis) 위에 투영된 새로운 변수
ㅇ 주성분의 방향 (Direction)
- 데이터 구름(Cloud)의 흩어진 정도(분산)가 가장 큰 방향 벡터를 의미함
- 2차원 데이터는 최대 2개, n차원 데이터는 최대 n개의 서로 직교하는 주성분 벡터를 가짐
ㅇ 주성분의 정보량 (Information Content)
- 분산의 크기가 곧 해당 축이 담고 있는 정보의 양을 나타냄
- 분산이 큰 순서대로 제1, 제2, ..., 제n 주성분이라 하며, 뒤로 갈수록 정보 가치가 낮아짐
ㅇ 주성분 추출 (Extraction)
- 원래 변수들의 선형 결합(Linear Combination)을 통해 새로운 변수를 만드는 과정임
- 이때의 계수(Weight)는 분산을 최대화하는 최적화 문제의 해로 결정됨
3. 주성분 분석의 특징
ㅇ 차원 축소 (Dimensionality Reduction)
- 정보 손실을 최소화하면서 변수의 수를 줄여, 데이터의 복잡성을 제거함
ㅇ 직교 변환을 통한 상관관계 제거 (Decoupling)
- 변수들 간의 상관관계(Correlation)를 제거하여, 서로 독립적인(Orthogonal) 성분들로 재구성함
ㅇ 데이터의 구조적 시각화
- 잠재된 특성을 저 차원 공간(2D, 3D)에 투영하여, 데이터의 패턴을 시각적으로 파악 가능
ㅇ 비지도 학습 (Unsupervised Learning)
- 정답(Label) 없이 오직 변수들 간의 상호의존성(구조)만을 분석하여 특징을 추출함
4. 주성분 분석의 핵심 논리
ㅇ 공통 요인의 가정
- 수많은 변량이 서로 관련되어 움직이는 이유가,
- 배후에 존재하는 몇 개의 '핵심적인 공통 성분'을 공유하기 때문이라고 봄
ㅇ 선형 결합과 투영 (Projection)
- 기존 데이터({#\mathbf{x}#})에 가중치 벡터({#\mathbf{w}#})를 내적하여, 새로운 좌표로 변환함
. 변환된 새로운 변수들의 분산이 최대가 되도록 하는,
. 최적의 투영 방향({#\mathbf{w}#})을 찾는 것
5. 주성분 분석의 전처리 과정 : (통계량을 통해 데이터의 구조를 파악하려고 함)
※ 주성분 분석은, 데이터의 분산이 가장 큰 방향을 찾는 것이며,
- 이를 위해 데이터의 중심을 잡고 변수 간의 상관관계를 행렬로 정식화하는 과정이 선행되어야 함
ㅇ 평균 벡터 (Mean Vecor) : 데이터의 중심점 (n차원 벡터)
- 데이터 벡터 집합의 산술 평균으로, 전체 데이터의 중심 위치를 결정
- 이후 모든 데이터로부터 이 평균 벡터를 빼줌으로써 데이터를 원점 중심으로 이동시키는 역할
[# \mathbf{m} = \frac{1}{k} \sum^k_{i=1} \mathbf{x}_i #]
ㅇ 공분산 행렬 (Covariance Matrix) : 데이터의 퍼짐과 방향성 (n x n 정방행렬)
- 각각 서로 얼마나 닮았는지, 그리고 어느 방향으로 데이터가 길게 늘어져 있는지를 나타냄
[#C = \frac{1}{k} \sum^k_{i=1} (\mathbf{x}_i - \mathbf{m}) (\mathbf{x}_i - \mathbf{m})^T#]
※ 여기서, 개별 데이터들은, k개의 n차원 데이터 벡터({#\mathbf{x}_i#})들을 말함
6. 전처리 과정 이후 : 고유값 분해 (Eigen-decomposition)
※ 공분산 행렬 {#C#}를 구한 후, 실제 주성분을 뽑아내기 위해 다음의 절차를 밟음
ㅇ 고유값과 고유벡터 추출
- 공분산 행렬 {#C#}에 대해 {#C\mathbf{v} = \lambda \mathbf{v}#}를 만족하는 고유값({#\lambda#})과 고유벡터({#\mathbf{v}#})를 구함
. 고유벡터 ({#\mathbf{v}#}) : 각 주성분의 방향을 결정
. 고유값 ({#\lambda#}) : 해당 방향으로의 분산 크기(정보량)를 결정
ㅇ 데이터의 재구성
- 분산이 큰 상위 몇개의 고유벡터를 선택하여, 데이터를 투영시킴으로써,
- 정보는 최대한 보존하면서, 차원이 축소된 새로운 데이터를 얻게 됨