쉽게 이해하는 PCA
카테고리: arithmetic
태그: PCA
기하학적 관점에서 주성분분석(PCA, Principal Component Analysis)의 의미를 쉽게 이해해본다.
대각행렬은 공간을 신축시킨다
가장 간단한 $2\times2$ 행렬을 이용하여 행렬의 곱이 2차원 공간을 기하학적으로 어떻게 변경시키는지 이해하는 것은 선형대수의 핵심이다.
가로 세로 $x$축과 $y$축으로 이루어진 2차원 공간을
\[D_2 = \begin{bmatrix} \vec{x}&\vec{y} \end{bmatrix}\]라고 할 때 공간 $D_2$에 행렬
\[A=\begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix}\]을 곱하면, 행렬 $A$는 2차원 평면을 $x$축으로 2배, $y$축으로 1배 늘린다.
\[D_2 \times A = \begin{bmatrix} \vec{x}&\vec{y} \end{bmatrix} \times \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 2 \vec{x} & \vec{y} \end{bmatrix}\]$x$축으로 2배가 늘어나는 것은 행렬 $A$의 첫 번째 열의 첫 번째 성분 $2$의 영향이고, $y$축으로 1배 늘어나는 것은 행렬 $A$의 두 번째 열의 두 번재 성분 $1$의 영향이다.
같은 논리로 행렬
\[B=\begin{bmatrix} 1 & 0 \\ 0 & 1.5 \end{bmatrix}\]는 2차원 평면을 $x$축으로 1배, $y$축으로 1.5배 늘리는 변형을 만든다는 것을 알 수 있다.
\[D_2 \times B = \begin{bmatrix} \vec{x}&\vec{y} \end{bmatrix} \times \begin{bmatrix} 1 & 0 \\ 0 & 1.5 \end{bmatrix} = \begin{bmatrix} \vec{x} & 1.5\vec{y} \end{bmatrix}\]
행렬 $A$와 행렬 $B$처럼 대각 성분만 존재하고, 나머지는 모두 $0$인 행렬을 대각행렬이라고 부르는데, 대각행렬은 대각성분만큼 각각의 축을 신축시킨다. 따라서 다음과 같은 $N$차원에서 정의된 대각행렬 $M_{NN}$을 생각해보면
\[M_{NN} = \begin{bmatrix} m_{11} & \cdots & 0 \\ \vdots &\ddots & \vdots \\ 0 & \cdots & m_{NN} \end{bmatrix}\]행렬 $M_{NN}$은 주어진 공간의 첫 번째 축을 $m_{11}$배 만큼 신축시키고, $N$이하의 $i$에 대해 $i$번째 축을 $m_{ii}$배만큼 신축시킨다.
일반적인 행렬은 공간을 비튼다
대각행렬이 공간을 신축시키는 반면, 일반적인 행렬을 공간을 신축시키는 것을 넘어 공간을 비튼다. 예를 들어, $2 \times 2$ 행렬
\[C_{1} = \begin{bmatrix} 1 & 0.6 \\ 0.6 & 1 \end{bmatrix}\]에 의해 2차원 공간 $D_2$는 다음과 같이 비틀어 진다.
\[D_2 \times C_1 = \begin{bmatrix} \vec{x} & \vec{y} \end{bmatrix} \times \begin{bmatrix} 1 & 0.6 \\ 0.6 & 1 \end{bmatrix} = \begin{bmatrix} \vec{x} + 0.6 \vec{y} & 0.6 \vec{x} + \vec{y} \end{bmatrix}\]즉, 행렬 $C_1$이 만드는 변형은, 공간이 우상(↗)/좌하(↙)로는 늘어나고, 좌상(↖)/우하(↘)로는 수축된다. 마치, 오른쪽 상단과 왼쪽 하단을 양손으로 잡고 길게 늘리는 모양이다.
행렬
\[C_2 = \begin{bmatrix} 1 & -0.4 \\ -0.4 & 1 \end{bmatrix}\]의 경우 2차원 공간을 다음과 같이 변형시킨다.
\[D_2 \times C_2 = \begin{bmatrix} \vec{x} & \vec{y} \end{bmatrix} \times \begin{bmatrix} 1 & -0.4 \\ -0.4 & 1 \end{bmatrix} = \begin{bmatrix} \vec{x} -0.4 \vec{y} & -0.4 \vec{x} + \vec{y} \end{bmatrix}\]즉, 공간이 좌상(↖)/우하(↘)로는 늘어나고, 우상(↗)/좌하(↙)로는 수축된다. 마치, 왼쪽 상단과 오른쪽 하단을 양손으로 잡고 길게 늘리는 모양이다.
이렇게 공간이 비틀어지는 이유는 기본적으로 한 축에 다른 축의 성분이 묻어(더해져) 영향을 미치기 때문이다.
- 행렬 $C_1$의 경우 다른 축의 성문이 $+0.6$배 만큼 묻고,
- 행렬 $C_2$의 경우 다른 축의 성분이 $-0.4$배 만큼 묻어 영향을 미친다.
행렬 $C_1$과 $C_2$는 실무에서 자주 접하는 두 자산간 상관관계 행렬의 한 예다. $C_1$은 양의 상관관계를 갖는 경우, $C_2$는 음의 상관관계를 갖는 경우이다. 임의로 생성한 $N$차원 난수에 $N \times N$ 상관관계 행렬 $C$를 곱하면, 상관관계를 가진 난수를 생성할 수 있다.
고유값(Eigenvalues)과 고유벡터(Eigenvectors)
앞에서 일반적인 $2 \times 2$행렬이 2차원 공간을 비트는 것을 확인했는데, 사실 공간이 비틀린다고 느껴지는 것은 우리가 2차원의 기준이 되는 두 축을 무의식적으로 가로 방향을 나타내는 $x$축과, 세로 방향을 나타내는 $y$축을 기준으로 생각하기 때문이다. 어떤 기준으로 공간을 바라보느냐에 따라 주어진 행렬에 의해 공간이 비틀리는 것처럼 보일 수 있고, 대각행렬의 경우처럼 단지 신축되는 것으로 볼 수도 있다.
앞에서 $2\times2$ 행렬
\[C_1 = \begin{bmatrix} 1 & 0.6 \\ 0.6 & 1 \end{bmatrix}\]은 2차원 공간을 다음과 같이 비트는 것을 확인했다.
만약 $x$축, $y$축이 아닌 다른 축을 기준으로 생각해보면 행렬 $C_1$에 의해 2차원 공간은 비틀리지 않고 신출할 수도 있다. 예를 들면, 아래처럼 $x$축, $y$축을 지우고, 새로운 두 벡터를 기준으로 공간을 바라보면, 두 벡터를 기준으로 하는 2차원 공간에서는 행렬 $C_1$이 공간을 비틀지 않고 단지 축을 따라 늘리고 줄일 뿐이다.
이렇듯 주어진 ($N \times N$) 정방행렬 $M$에 의해 회전하지 않고, 신축하는 벡터를 행렬 $M$의 고유벡터(Eigenvectors)라고 하며, 이때 각각 고유벡터에 적용되는 신축률을 고윳값(Eigenvalues)라고 한다. 이를 수식으로 표현하면 다음과 같다.
행렬 $M$의 고유벡터를 $W$라고 표기하고,
\[W = \begin{bmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \end{bmatrix} = \begin{bmatrix} \vec{w_1} & \vec{w_2} \end{bmatrix}\]라 하고, 그것에 대응하는 고윳값 벡터를 $\Lambda$라고 표기하고,
\[\Lambda = \begin{bmatrix} \lambda_{11} & 0 \\ 0 & \lambda_{22} \end{bmatrix} = \begin{bmatrix} \vec{\lambda_1} & \vec{\lambda_2} \end{bmatrix}\]라고 했을 때,
\[MW = \Lambda W \Leftrightarrow (M-\Lambda)W=0 \Leftrightarrow \det(M-\lambda I) = 0\]이 성립한다. 여기서
\[I=\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\]인 Identity 행렬이다. 이 개념은 2차원뿐만 아니라 임의의 자연수 $N$에 대해 $N$차원인 경우에도 적용할 수 있다.
공분산(Covariance)과 상관관계(Correlation) 행렬
분산이 하나의 데이터 세트의 흩어진 정도를 측정하는 것과는 달리 공분산은 이름처럼 두 데이터 세트의 분산을 “함께” 다루며 두 데이터의 구조를 나타낸다. 예를 들어, 두 정규분포 (평균 $0$, 분산 $1^2$), (평균 $0$, 분산 $2^2$)를 따르는 데이터 $X$와 $Y$가 $0.6$의 상관관계를 갖는다고 가정해보자. $X$와 $Y$의 표준편차를 각각 $\sigma_X$, $\sigma_Y$로 표시하고, $X$와 $Y$의 상관관계를 $\rho_{XY}$라고 할 때, $X$와 $Y$의 공분산 행렬 $\Sigma_{XY}$은 다음과 같다.
\[\Sigma_{XY} = \begin{bmatrix} \sigma_{X}^2 & \sigma_{XY} \\ \sigma_{YX} & \sigma_{Y}^2 \end{bmatrix} = \begin{bmatrix} \sigma_{X}^2 & \rho_{XY} \sigma_{X} \sigma_{Y} \\ \rho_{YX} \sigma_{Y} \sigma_{X} & \sigma_{Y}^2 \end{bmatrix} = \begin{bmatrix} 1^2 & 0.6 \times 1 \times 2 \\ 0.6 \times 2 \times 1 & 2^2 \end{bmatrix}\]여기서 $X$의 분산 $\sigma_{X}^2$은 데이터 $X$가 흩어진 정도를, $Y$의 분산 $\sigma_{Y}^2$은 데이터 $Y$가 흩어진 정도를 뜻한다. 반면 $X$와 $Y$의 공분산 $\sigma_{XY}$과 $\sigma_{YX}$은 두 데이터의 변동이 서로 얼마나 닮았는지를 나타낸다.
이해를 돕기 위해 $X$와 $Y$를 그림으로 나타내면 다음과 같다. 히스토그램을 보면 분산이 큰 $Y$의 분포가 $Y$축 평균으로부터 더 넓게 흩어져 있으며, 산포도를 보면 두 데이터가 $X$축과 $Y$축으로 “함께” 어떻게 흩어져 있는지 알 수 있다.
다만, $Y$의 표준편차와 $X$의 표준편차의 절대적인 크기의 차이가 존재할 경우 데이터의 흩어진 정도를 가늠하기 어려운 경우가 발생하기 때문에, 데이터의 표준편차를 $1$로 조절하는 정규화 과정을 거친 뒤 데이터를 분석하는 것이 일반적이다.
이렇게 각각의 데이터를 표준편차로 나누어 흩어진 정도를 통일시켜 조정한 공분산 행렬을 상관관계 행렬이라고 한다. 상관관계 행렬은 공분산 행렬을 정규화시킨 결과이기 때문에 상관관계 행렬의 대각 성분(분산)은 모두 1의 값을 가지며, 대각 외의 성분은 $-1$과 $+1$ 사이의 값을 갖는다.
위 예에서 $X$와 $Y$는 행렬 $C_1$을 상관관계 행렬로 갖는 두 데이터이다. 즉, $X$와 $Y$는 2차원 공간의 임의의 점들이 두 고유벡터 방향으로 고유값배 만큼 늘려진 공간에서 추출된 데이터라고도 이해할 수 있다. 상관관계 만큼 관련이 있는 것이다.
주성분 분석(Principal Components Analysis)
데이터 $X$와 데이터 $Y$의 움직임을 관통하는 하나의 힘을 표현한다면, 가장 고유값이 큰 고유벡터 방향으로 표현할 수 있다. 이를 $N$차원으로 확장하여 해석하면, $N$차원 데이터를 $N$보다 작은 $P$차원으로 사상시켜 데이터를 다룰 수 있음을 의미한다. 즉, 고유값이 큰 순서대로 해당 벡터 방향으로 큰 힘이 작용한다고 해석하는 것이다. 위의 예에서는 2차원 평면을 1차원 고유벡터로 내려서 생각할 수 있다. 첫 번째 주성분이 전체 데이터의 움직임에 있어 가장 중요한 요소이기 때문에 가능하다. 차원이 더 높다면, 하나의 차원으로 내리는 것이 아니라 더 높은 차원으로 내리되, 원본보다는 낮은 차원에서 데이터를 다룰 수 있다.
데이터가 행렬 $C_1$을 상관관계 행렬로 갖는 것처럼 분포되어 있다면, $C_1$의 고유벡터 방향의 큰 힘이 작용하고 있는 것이다. 이는 $x$축, $y$축과는 다른, 다른 어떤 요소가 두 데이터에 크게 작용하고 있는 것이며, 그것이 첫 번째 주성분이다. 행렬 $C_1$은 원래 공간의 오른쪽 상단과 왼쪽 하단을 양손으로 잡고 길게 늘리는 모양이었다. 해당 방향으로 작용하는 무언가가 중요한 것이다. 즉, 가장 영향력이 큰 팩터(factor, 요소)이다.
댓글남기기