1. 고유값 분해(eigen-decomposition)

정방 행렬 [eqn: A]에 대해 [eqn: Av= lambda v]를 만족하는 0이 아닌 열벡터 [eqn: v]를 고유벡터(eigenvector)라 하고, 상수[eqn: lambda]를 고유값(eigenvalue)이라 한다. 위 식을 통해 고유값과 고유벡터를 찾는 과정이 고유분해(eigen-decomposition)다.

[eqn: v != 0]이면서 [eqn: (A- lambda I)][eqn: v]=0을 만족한다는 말은 [eqn: (A- lambda I)]은 역행렬을 갖지 않는다는 말이다. 따라서 [eqn: lambda]가 특성방정식 det[eqn: (A- lambda I)]=0을 만족하면, [eqn: lambda]는 [eqn: A]의 고유값이다. 그리고 이 고유값을 다시 대입하여 고유값에 대응하는 고유벡터를 구할 수 있다.

2. 고유값 분해를 이용한 대각화

정방행렬[eqn: A IN R ^{M TIMES M}]에 대해 [eqn: {matrix{Av _{1}&=&lambda _{1} v _{1}#&VDOTS &#Av _{M}&=&lambda v _{M}}}]와 같이, M개의 [고유값,고유벡터]쌍이 존재할 수 있다. (※[eqn: A IN R ^{M TIMES M} ,`v IN R ^{M} ,` lambda IN R])

이를 한꺼번에 표현하여 정리하면 [eqn: A[v _{1} CDOTS v _{M} ]=[ lambda _{1} v _{1} CDOTS lambda _{M} v _{M} ]].이다. 따라서, 고유값행렬(대각행렬) [eqn: LAMBDA = {bmatrix{eqalign{lambda _{1}# 0}&eqalign{0# lambda _{2}}&eqalign{CDOTS # }&eqalign{# }&eqalign{0# 0}#VDOTS &&DDOTS &&VDOTS #&&&&#0&0&CDOTS &&lambda _{M}}}], 고유벡터 행렬 [eqn: V=[v _{1} CDOTS v _{M} ]]라 정의할 때, [eqn: A[v _{1} CDOTS v _{m} ]=AV=[ lambda _{1} v _{1} CDOTS lambda _{m} v _{m} ]=[v _{1} CDOTS v _{m} ] {bmatrix{lambda _{1}&0&CDOTS &0#0&lambda _{2}&CDOTS &0#VDOTS &VDOTS &DDOTS &VDOTS #0&0&CDOTS &lambda _{M}}} =V LAMBDA]이고

결과적으로 [eqn: AV``=V LAMBDA ``` LRARROW ``A``=V LAMBDA V ^{-1}]라고 말할 수 있다.

이와 같이, 행렬 A는 자신의 고유벡터들을 열벡터로 갖는 행렬([eqn: V])과 고유값을 갖는 대각행렬([eqn: LAMBDA])의 곱으로 대각화 분해가 가능하다.

3. 고유값과 고유벡터의 기하학적 의미

[eqn: {} ^{2)} Av= ^{1)} lambda v]

⓵ : 방향은 변하지 않으며, [eqn: lambda]에 따라 크기만 변함

⓶ : 벡터 v에 의해 선형변환 되는 어떠한 정방행렬A가 있을 때, 고유값의 크기에 따라 ‘길이만 변하고 방향은 그대로인, 고유벡터가 그린 직선.

-> 차원축소에서 매우 중요한 의미!

4. 대칭행렬의 고유분해

행렬 A가 대칭행렬(ex:공분산행렬)이면 [eqn: {} ^{1)}]고유값 분해를 이용한 대각화가 가능하며, [eqn: {} ^{2)}]A에 대한 고유벡터 행렬이 직교행렬(Orthogonal Matrix)이 된다. 이 2가지 중요한 성질은 PCA 차원축소에 적용된다.

※ 직교벡터(Orthogonal Vector) : [eqn: a ^{T} b= LEFT | vec{a} RIGHT | LEFT | vec{b} RIGHT | cos( {pi } over {2} )= LEFT | vec{a} RIGHT | LEFT | vec{b} RIGHT | TIMES 0=0]

즉, 0이 아닌 두 벡터 간 사잇각 90%를 이루면 두 벡터는 서로 직교하고 내적이 0

※ 직교정규벡터 : [eqn: LEFT ∥ a RIGHT ∥ = LEFT ∥ b RIGHT ∥ =1] & [eqn: a ^{T} b=0]

즉, 벡터의 크기가 각각 1이고 내적이 0이면 a와 b는 직교정규벡터라 한다.

# 직교행렬(Orthogonal Matrix) : [eqn: V ^{T} V=VV ^{T} =E`````` THEREFORE V ^{T} =V ^{-1}]

즉, 행렬을 이루는 열벡터가 크기가 1이며 서로 직교한다.

[eqn: {} ^{1)}]의 성질에 따라 [eqn: THEREFORE AV``=V LAMBDA ``` LRARROW ``A``=V LAMBDA V ^{-1}]을 만족하며

[eqn: {} ^{2)}]의 성질에 따라 [eqn: V ^{T} V=VV ^{T} =E`````` THEREFORE V ^{T} =V ^{-1}]을 만족한다.

5. Spectral decomposition

따라서, 직교대각화되는 대칭행렬 [eqn: A]는 ‘[eqn: A`=V LAMBDA V` ^{-1} `` LRARROW ``A``=V LAMBDA V ^{T}]’라 말할 수 있다. 그리고 이 행렬 A를 M개의 대칭행렬 [eqn: v _{i} v _{i} ^{T}]의 합으로 나타낼 수 있다.

[eqn: A=V LAMBDA V ^{T} =[v _{1} CDOTS v _{m} ] {bmatrix{lambda _{1}&0&CDOTS &0#0&lambda _{2}&CDOTS &0#VDOTS &VDOTS &DDOTS &VDOTS #0&0&CDOTS &lambda _{M}}} {bmatrix{v1#VDOTS #VDOTS #v _{m}}} = lambda _{1} v _{1} v _{1} ^{T} + lambda _{2} v _{2} v _{2} ^{T} + CDOTS + lambda _{m} v _{m} v _{m} ^{T}# ``````= sum _{i=1} ^{M} lambda _{i} v _{i} v ^{T}]

여기서, [eqn: sum _{i=1} ^{M} lambda _{i} v _{i} v ^{T}]가 큰 고유값의 순서([eqn: lambda _{1} > lambda _{2} > CDOTS CDOTS > lambda _{M}])로 정렬되어 있다고 가정하고, 고유값과 고유벡터의 기하학적 의미(선형변환된 어떤 행렬A가 있을 때, 고유값의 크기에 따라 ‘길이만 변하고 방향은 그대로인, 고유벡터가 그린 직선’)를 다시 떠올려보자. 여기서, 고유값은 고유벡터의 방향으로 얼마나 연장할 지 Scale상수의 역할을 하므로, ‘큰 고유값에 대응되는 고유벡터의 고유공간(or 방향축)’에 사영된 데이터들이 큰 변화량을 갖는다.

6. PCA(Principal Component Analysis)

이를 PCA에 적용해보자. 임의의 자료 X의 분포를 가장 잘 표현(=설명)하는 축은 ‘데이터의 분산이 최대가 되는 축’이다. 따라서, [eqn: {} ^{1)}]공분산행렬[eqn: A](=직교대각화되는 대칭행렬)를 구하고 [eqn: {} ^{2)}]고유분해를 통해 고유값과 고유벡터를 구한다. [eqn: {} ^{3)}]내림차순으로 고유값을 정렬하고 이에 대응하여 고유벡터 또한 재정렬을 시도한다. 결과적으로, [eqn: lambda _{1}]이 공분산행렬[eqn: A]의 가장 큰 고유값이 된다. 그리고 이에 대응되는 고유벡터 [eqn: v _{1}]가 포함한 ‘방향성’은 가장 큰 변화를 갖는 축을 나타낸다. 따라서 [eqn: {} ^{4)}]자료 X에 고유벡터 [eqn: v _{1}]를 곱해주었을 때, 데이터를 ‘가장 큰 변화량을 갖는 방향축(고유공간)’으로 사영시킨다. 그리고 이렇게 [eqn: v _{1}]로 곱해진 데이터를 X의 PC1(주성분1)이라 말한다.

따라서 X의 공분산행렬[eqn: A]에 대한 고유벡터행렬[eqn: V](=[eqn: [v _{1} , CDOTS v _{m} ]])와 자료 [eqn: X ^{n TIMES m}]의 곱, 즉 [eqn: XV]는 m개의 주성분으로 이루어져있다. 그리고 [eqn: COV(XV)= {bmatrix{eqalign{lambda _{1}# 0}&eqalign{0# lambda _{2}}&eqalign{CDOTS # }&eqalign{# }&eqalign{0# 0}#VDOTS &&DDOTS &&VDOTS #0&0&CDOTS &&lambda _{m}}}]로서, 각 주성분끼리 독립이면서, 분산은 [eqn: lambda _{i}]를 나타낸다. 이를 통해 [eqn: {} ^{5)}]데이터 전체의 분산 중 k번째 까지의 주성분이 갖는 분산의 비중[eqn: sum _{i=1} ^{k} lambda _{i} `÷` sum _{i=1} ^{m} lambda _{i}](=데이터를 설명하는 정도)을 확인할 수 있다. 전체 데이터의 분산 중 85%만큼을 설명하는 차원까지 감소시켜 준다.

7. PCA의 활용

차원이 높아질수록 공간의 크기가 매우 커지며, 데이터가 차지하는 밀도는 매우 낮아진다. 즉, 희박성이 높아진다. 흔히 차원의 저주라 말하는 현상이다. 이러한 문제를 해결하기 위해, PCA를 사용할 수 있다. 위 설명을 이용하여 ‘데이터를 가장 큰 변화량을 갖는 차원(=데이터를 설명하는데 유용한 차원)으로만 구성’하면 고차원을 저차원으로 축소시키면서도 데이터들의 특성을 최대한 살릴 수 있게 된다.

8. PCA의 알고리즘

1)행렬 X를 구성하는 열벡터끼리 단위가 일치하지 않을 수 있으므로 자료를 표준화

2)[eqn: COV=(X-m) ^{T} (X-m)/n]을 구한다. (단, 표본공분산의 경우 n-1)

3)[eqn: S](sample covariance)의 고유분해로, eigenvalue&eigenvector matrix를 구하기

4)고유값을 내림차순으로 정렬하고, 이에 대응되는 고유벡터들 또한 재정렬&정규화

5)충분한 설명력(누적분산비율)을 갖는 주성분의 개수 k를 구하기

6)k개의 고유벡터만 유지하고 나머지 작은 고유값을 갖는 고유벡터는 제거

7)행렬 X에 ‘k개의 고유벡터’ 행렬[eqn: V](변환행렬)를 곱해 고유공간으로 projection.

7)원래의 행렬 X로 근사시키고자 한다면, 역변환행렬 [eqn: V ^{T}]를 다시 곱함(※[eqn: VV ^{T} =E])