정리노트
Machine Learning 에 필요한 기초 지식 - PCA(SVD) 본문
PCA(Principal Component Analysis)
PCA는 Principal Component Analysis의 약자로,
말 그대로 주성분을 분석하여 Minor한 Component를 없앰으로서
Machine Learning에서는 주로 record수에 비해 feature 수가 많은(High Dimensionality) 데이터셋의 차원수를 낮추고 싶을때 주로 사용한다.
먼저 PCA의 기본개념인 SVD에대해 이야기해보도록 하자.
한 Matrix는 Left Singular vector matrix와 Singular Value Matrix, 그리고 Right Singular Vector matrix, 3가지로 Decomposition이 될 수 있으며, 이때, Singular Value matrix의 각 요소는,
Matrix에서 해당 Singular vetor 방향에 importance를 의미한다.
+ 참고..Eigenvalue vs Singularvalue (Eigenvector vs Singularvector)
Matrix의 Geometric한 의미는,
특정공간을 Linear하게 틀어버리는 것이다.
https://www.youtube.com/watch?v=PFDu9oVAE-g&t=314s
위 영상에서 너무 완벽하게 설명되어있어서 첨부한다
Eigenvector의 의미는 어느방향으로 틀어버릴것인가? 의 의미라면,
Eigenvalue의 의미는 틀어버린 방향으로 얼마만큼 Span할 것인가? 가 된다.
Matrix는 이렇게 공간적 Mapping을 하는 특성을 가지고 있는데,
이에 담긴 정보를 보다 단순화한다면, 그리고 만약 A가 Square Matrix라면,
아래와 같이 Orthogonal Eigenvector인 Q로 Diagonalization이 가능하다.
이때 Q는 A의 Eigenvector방향이되며,
가운데 Sigma Term은 Eigenvalue가 Diagonal Term에 배치된 Matrix이다.
그런데, 보통 정보처리 과정에서 Full rank를 가진 Square Matrix만을 다루게 되진 않는다.
우리가 다루게 될 행렬은 보통 mXn의 Rectangular Matrix인데,
그럴때도 위의 Square Matrix상황처럼 정보를 단순화 할수는 없을까?
-> 바로 이럴때 쓰는 것이 SVD이다.
즉, SVD는 일종의 Rectangular Matrix버전의 Matrix Diagonalization인 것이다.
Symmetric matrix는 Diagonalization이 가능하다는 명제를 이용하면
A*Transpose(A)와,
Transpose(A)*A의 Eigenvector... Left Singular Vector와 Right Singular Vector를 각각 u,v로 놓고
(만약 A가 Square Matrix면 u=v가 됨)
아래와같이 Decomposition이 가능하다.
(여기서는 Diagonalization이라는 말 대신 Decomposition이라는 표현을 사용한다.)
SVD에 대한 이야기가 조금 길었는데, 더 자세히는 다루지 않고,
PCA로 다시 돌아와 보자.
PCA는 Principal Component Analysis의 약자로,
말 그대로 데이터의 주성분을 분석하는 기법이고, 데이터는 보통 행렬형태로 많이 주어진다.
행렬로 주어진 데이터를, 아래와같이 Decomposition해주고,
이중 Singular Value가 가장 작은 Component의 차원을 없애는 것을 PCA라고 말한다.
-> 가장 데이터손실이 적은 Subspace로 데이터를 Compression하는 것과 같다.
2차원 데이터를 1차원으로 Compression하는 예제를 통해 이를 간단히 이해해 보도록 하자.
위와같은 2X6 matrix가 있다고 하자.
그리고 이때 S행렬의 Diaginal Term은 각 해당 Sample의 distance(크기)가 되며, Non-Diagonal Term은 두개의 Feature간 상관관계를 나타내는 Covariance Term이 된다. 이때 Covariance가 양수면 Positive Covariance(비례관계),
Covariance 가 음수면 Negative Covariance(반비례 관계) 의 관계성을 띈다고 해석할 수 있다.
위의 S행렬을 SVD해주면,
이때 루트57과 루트3은 S의 Eigenvalue. 즉, A의 Singularvalue이다.
그리고 루트 57이 루트3보다 훨씬 큰값이므로, u1 방향으로 더 Variance가 높은 데이터임을 알 수 있으며,
Component의 Variance는 importance, 즉 해당 Component가 담고있는 정보의 크기라고 해석할 수 있으므로,
PCA로 Data를 Compression하게되면,
U2 벡터방향의 정보를 없애는(압축하는)이며, 그 크기는
1차원 subspace로 압축하는 모든 경우의 수 중, 가장 적은 Variance(루트 3)변화를 일으키는 방향으로 압축하는 것이다.
이를 Graphical하게 표현하면 아래와 같다.
Variance가 가장 많이 보존되는 C1방향의 Component가 Principal Component가된다.