[models] 주성분 분석PrincipalComponentAnalysisPrincipalComponentAnalysis

2021. 8. 16. 11:58Machine Learning/Models

이번 글에서는 데이터의 차원 축소에 많이 쓰이는 방법 중 하나인 주성분 분석에 대해 알아보겠습니다.

[관련 글] 가우시안 혼합 모델의 확장ExtentionofGaussianMixtureExtentionofGaussianMixture


DD차원의 NN개 데이터셋 x=(x1,,xN)Tx=(x1,,xN)T에 대해 생각해보겠습니다. 우리는 DD 차원의 데이터를 MM차원으로 축소하기를 원한다고 가정하겠습니다.

M=1M=1이라고 가정하고, 우리가 축소할 차원의 방향을 가진 u1u1벡터를 생각해보겠습니다.

각각의 데이터를 u1u1방향으로 사영projectionprojection 시킨 후, 그들의 분산을 구하면 다음과 같습니다.

1NNn=1{uT1xnuT1ˉx}2=uT1Su11NNn=1{uT1xnuT1¯x}2=uT1Su1

여기서 S=1NNn=1(xnˉx)(xnˉx)TS=1NNn=1(xn¯x)(xn¯x)T

우리는 최대한 데이터가 넓게 분포할 수 있는 차원의 벡터 u1u1을 원하기 때문에, 앞서 구한 분산을 최대화하는 u1u1을 찾아보겠습니다.

계산의 편의를 위해 uT1u1=1uT1u1=1이라는 제약 조건을 준다면, 위의 문제는 제약된 최적화 문제를 푸는 방법 중 하나인 라그랑지 승수 법으로 풀 수 있습니다. 즉 다음 식을 미분하여 0이 되는 u1u1을 찾아주면 됩니다.

uT1Su1+λ1(1uT1u1)uT1Su1+λ1(1uT1u1)

찾아준 u1u1의 식을 정리하면 다음과 같습니다.

Su1=λ1u1    (1)Su1=λ1u1    (1)

이렇게 찾아준 벡터 u1u1를 고유 벡터eigenvectoreigenvector라고 합니다.

또한 (1)(1)의 식 왼쪽에 uT1uT1를 곱해주면 다음과 같습니다.

uT1Su1=λ1uT1Su1=λ1

즉 데이터의 분산을 최대로 만드는 고유 벡터로 사영시켰을 때의 분산이 λ1λ1이라는 뜻이 되는데, 이 λλ 값을 고윳값eigenvalueeigenvalue라고 합니다.

위와 같은 방법을 써서 uu벡터를 더 많은 차원으로 확장한다면, 여러 개의 고유 벡터와 고윳값이 나올 수 있을 것입니다. 보통 시각화를 위해 두 개의 고유 벡터까지 고려하는 것이 일반적인 경우라고 할 수 있습니다.