선형대수 정리 - 주성분 분석 (PCA)

» math

해당 내용은 이기창 저자의 한국어 임베딩이라는 책의 부록에 속한 선형 대수 - 주성분 분석 파트를 정리한 내용입니다.

1. 주성분 분석 (PCA)

  • 주성분 분석은 행렬 분해 방법을 사용한 차원 축소 기법중에 하나로 Principal Component Analysis의 줄임말인 PCA라고 부릅니다.

  • PCA는 고차원의 데이터를 데이터의 분산을 최대로 보존하는 방향의 벡터를 찾아서 해당 벡터로 데이터들을 사영시키고, 사영된 데이터들을 더 작은 차원으로 축소시키기 위해서 앞선 방향 벡터와 직교하는 벡터로 다시 데이터들을 사영시키는 과정을 반복하여 차원을 축소시킵니다.

  • 데이터의 분산을 최대로 보존하는 방향의 벡터는 새로운 공간의 축 역할을 하는 기저임을 알수 가 있습니다.

  • 데이터 행렬 $X$에 PCA를 수행한다는 것은 선형변환 $A$을 적용하여 새로운 변수 $Z$를 구하는 의미와 같습니다.

    $Z = A^TX$

    위의 식을 PCA에 목적에 맞게 분산이 최대가 되야 하므로 공분산 행렬 $\sum$의 식으로 정리를 하면 다음과 같습니다.

    $\begin{matrix} \max_a(Var(Z)) &=& max_a(Var(A^TX)) \\ &=& max_a(A^2Var(X)) \\ &=& max_a(A^T\sum A) \end{matrix}$​

    하지만, 해당 조건을 만족하는 선형변환 $A$​가 무수히 많이 존재 할 수 있기 때문에 $A$의 크기에 제약식 $\lvert \lvert A \lvert \lvert = A^TA = 1$ 을 걸어줍니다.

    이를 종합하여 라그랑지안 문제로 변형하면 다음과 같습니다.

    $L = A^T\sum A - \lambda(A^TA - 1)$

    해당 식에서 최대값을 구하기 위해서 $L$을 $A$에 대하여 편미분한 식이 0이 되도록 만들면 다음과 같습니다.

    $\frac{\partial{L} }{\partial A} = \sum A - \lambda A = 0$​

    $(\sum - \lambda)A = 0$

    해당 식을 통하여 $A$는 공분산 행렬 $\sum$의 고유 벡터이고 $\lambda$는 공분산 행렬의 고유값이라는 것을 알 수가 있었습니다.

    여기서 공분산 행렬의 고유 벡터인 $A$​는 주성분 이라고도 합니다.​

  • $A$​는 공분산 행렬 $\sum$ 의 고유 벡터이기 때문에 공분산 행렬 $\sum$ 을 고유값 분해를 시키면 다음과 같습니다.

    $\sum = A \land A^{-1}$​​

    여기서 $\land$​ 는 대각 성분이 고유값인 대각행렬을 의미합니다.

    공분산 행렬은 대칭 행렬 $(\sum = \sum^T)$​ 이고, $\land$ 는 대각 행렬이기 때문에 다음과 같이 정리가 가능합니다.

    $A\land A^{-1} = (A^{-1})^T \land A^T$​​

    $A^{-1} = A^T$

    $A^TA = I$

    위의 정리를 통하여 고유 벡터끼리는 서로 직교하는 관계임을 알 수가 있습니다.

    이를 통하여 사영하기전의 벡터끼리는 서로 연관성이 있을지라도 사영하고 난 후의 벡터끼리는 서로 연관성이 없다는 것을 알 수가 있습니다.

  • 앞에서의 새로운 변수의 식을 고유값으로 다시 정리를 하면 다음과 같습니다.

    $Z = A^TX$ ​​​

    $\sum A = \lambda A$​ , 공분산 행렬의 고유값 분해

    $A^TA = I$ , 제약식

    $\begin{matrix} Var(Z) &=& Var(A^TX) \\ &=& A^T\sum A \\ &=& A^T \lambda A \\ &=& \lambda A^TA \\ &=& \lambda \end{matrix}$​​

    결국 정리를 하면 PCA를 수행하여 나온 새로운 변수 $Z$ 는 $\lambda$의 대각행렬인 고유값에 해당하며 변수 $Z$의 분산은 고유값들의 총합과 동일합니다.

  • 결과적으로 고유값 대각행렬에서 큰 값을 기준으로 상위 K개의 고유값을 선택하고 데이터 행렬 $X$에 내적을 하게되면 데이터의 분산을 최대한 보존하는 K차원으로 축소가 가능해집니다.