본문 바로가기
math4ai/Linear Algebra

M4AI) Eigenvector & Eigenvalue

by 잼민ai 2024. 7. 15.

으와 드디어 나왔다 선형대수학의 🌸

 

고윳값/고유벡터라고 부르기도 하는 eigenvalue/eigenvector!! 개인적으로 이름이 있어보여서 좀 좋아함

 

Eigenvalue & Eigenvector

지난 포스트에서 linear transformation을 다뤘었지요~.~

보통 선형변환을 하면, 원래 벡터가 본인이 갖고 있던 방향에서 "knocked off" 되는 경우가 당연히 많아요. 요렇게!

 

출처: 3Blue1Brown

근데 우리 수학자들.. 선형변환에서도 변하지 않고 방향을 유지하는 벡터가 궁금했나봐요.. 그래서 등장한 eigenvalue, eigenvector.

\begin{equation}\label{*}\mathbf{A}\mathbf{v} = \lambda\mathbf{v}\tag{*}\end{equation}

를 만족하는 상수 $\lambda$를 eigenvalue, 이에 상응하는 벡터 $\mathbf{v}$를 eigenvector라고 부릅니다. 어떻게 구하냐고?

\begin{equation}\label{eq1}\tag{1}\det\left(\mathbf{A}-\lambda I\right) = 0\end{equation}

$\ref{eq1}$은 $\ref{*}$의 항들을 약간의 트릭(항등행렬)을 써서 좌변으로 몰아준 후 유도한 식임! 왜 determinant나면, (지난번에 다뤘는지 기억이 안 나는데ㅠㅠ) 영벡터가 아닌 벡터와 행렬을 곱해서 영벡터가 되게 만들려면, 곱해주는 행렬이 full-rank가 아니면 되어서 그렇습니다. 그러면.. determinant가 0이 되면 되고요.

Eigenvector는

\begin{equation}\label{eq2}\tag{2}\text{null}\left(\mathbf{A}-\lambda I\right) = 0\end{equation}

요로케 구한대요.

엇 여기서 질문, Q. 그럼 eigenvector는 방향만 고정이고 무한히 많은 거 아닌가요.. A. ㅇㅇ 맞아용~ 그치만 서로 independent한 애들끼리, eigenvalue의 개수만큼 그냥 골라준다..고 함

이게 왜 중요한가, 하는 생각이 들 수 있는데, 우선 방향이 변하지 않는다는 점에서 어떤 공간의 특징을 나타내줄 수 있는 고유 성질이 될 수도 있을 것 같고요, 이 자체로도 linear transformation 후 기저벡터가 될 수도 있고, 특히 3차원 공간에서는 회전(linear transformation)의 축이 되는 경우도 있다고 하는군요?! 흥미롭

 

Eigendecomposition

고윳값분해(?)가 맞는 번역어인가.. 암튼

자 다시 $\ref{*}$로 돌아가보죠. 편의상 $2\times2$ 행렬로 예시를 들어볼게요. 어떤 행렬 $\mathbf{A}$가 2개의 eigenvalue/eigenvector $\lambda_1,\: \lambda_2,\: \mathbf{v}_1, \: \mathbf{v}_2 $를 가지고 있다고 합시다. 그러면 $\ref{*}$는 이렇게 다시 쓸 수 있어요.

\begin{align}\label{eq3}\tag{3}
\mathbf{A}\begin{bmatrix}\mathbf{v}_1 & \mathbf{v}_2\end{bmatrix} &= \begin{bmatrix}\lambda_1\mathbf{v}_1 & \lambda_2\mathbf{v}_2\end{bmatrix}\\
&=\begin{bmatrix}\mathbf{v}_1 & \mathbf{v}_2\end{bmatrix}\begin{bmatrix}\lambda_1 & 0 \\ 0 & \lambda_2\end{bmatrix},\\
\mathbf{A}\mathbf{V} & = \mathbf{V}\boldsymbol{\Lambda}
\end{align}

하 이런 생각을 대체 어떻게 하는 건지..

\begin{align}\label{eq4}\tag{4} 
\mathbf{A} & = \mathbf{V}\boldsymbol{\Lambda}\mathbf{V}^{-1} &&\text{(eigendecomposition)} \\
& \quad \text{or, }\\ 
\boldsymbol{\Lambda} & = \mathbf{V}^{-1}\mathbf{A}\mathbf{V} && \text{(diagonalizable)}
\end{align}

그래서 어떤 행렬 $\mathbf{A}$를 $\ref{eq4}$처럼 나타낼 수 있다면 이때 $\mathbf{A}$는 diagonalizable하다고 하고, 이는 곧 $n\times n$ 행렬 $\mathbf{A}$가 $n$개의 eigenvalue를 갖는다는 말과 동치입니다.

 

근데 왜.. 왜해 이거? 뭐 굳이 따지자면 대각행렬의 장점을 최대한 활용하기 위함이에요. 

  • $\mathbf{A}^k$를 왕쉽게 계산할 수 있음; $\mathbf{A}^k = \cdots \mathbf{V}\boldsymbol{\Lambda}^k\mathbf{V}^{-1}$ 그리고 $\boldsymbol{\Lambda}$는 $\boldsymbol{\Lambda}_{ij}=\begin{cases}\lambda_{i}^k & i=j\\0&\text{otherwise}\end{cases} $ 이죠.
  • 아 귀찮아짐.. $\det(\mathbf{A})$, $\text{trace}(\mathbf{A})$ 등을 다 쉽게 구할 수 있습니다.

그리고 혁펜하임 피셜 제일 중요한 사실이라는데 (아마 문제를 풀기 위해서..?) symmetric matrix는 무조건 diagonalizable하대요! 특히 이때 $\mathbf{V}^{-1} = \mathbf{V}^\top$, 즉 직교행렬(orthogonal matrix)이기 때문에.. $\mathbf{A} = \mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^\top$로 표현이 가능하다~($\mathbf{Q}$가 통상적으로 직교행렬을 의미하는 기호인가봄)고 합니다.

 

Principal Component Analysis (PCA)

주성분 분석이라고 하죠. 머신러닝 지긋지긋한데 되게 중요한 토픽이라 울며 공부했던 기억이.. (안 울었음)

주성분 분석은 말그대로, 주성분(principal component) 즉 데이터 분포를 가장 잘 설명하는 성분을 찾자는 것이에요. 

 

출처: Casey Cheung, Principal Component Analysis (PCA) Explained Visually with Zero Math, Towards Data Science, 2022

이미지 클릭하면 갓갓 매거진(?) Towards Data Science의 해당 포스트로 이동합니다! 암튼 저 현란한 데이터 분포에서, 각 클러스터마다 삐쭉 튀어나온 벡터가 보이시는지? 그 아이들이 바로 주성분(으로 추정되는) 벡터입니다. 

결론부터 말하자면, 대빵 되시는 주성분은 저 데이터 분포에서 분산이 가장 큰 방향이고, 주성분끼리는 전부 수직한 방향으로 나타난다는 특징이 있습니다. 쉽게 말해 타원같은 분포를 가진다면 장축이 주성분이고 단축이 그 다음 주성분...이라는 거죠. 원래는 수학적으로 엄밀히 찾아야 하는 게 맞지만 난 면접준비 하니까..ㅋㅋ 입으로 털어보자면

  1. "데이터 분포를 가장 잘 설명한다"면, 평균을 시작점으로 하는 벡터 $\mathbf{u}$ 위로 다른 데이터 포인트를 projection했을 때 그 오차가 최소이면 되겠다!는 아이디어에서 시작하는 겁니다.
  2. 보통 MSE 방식으로 접근하니까, 원래 데이터 포인트 $\mathbf{d}_i$와 정사영된 벡터 $\tilde{\mathbf{d}_i}$의 오차를 MSE로 놓고 접근하면 될 거 같아요 그치
    => $\min\:(\mathbf{d}_i-\mathbf{d}_i^\top\mathbf{u}\cdot\mathbf{u})^\top(\mathbf{d}_i- \mathbf{d}_i^\top\mathbf{u}\cdot\mathbf{u}) = \cdots = \min\:-\mathbf{u}^\top\Sigma\mathbf{u}$
  3. 이 식을 라그랑주 승수법을 동원해 (최적화 문제라서) 어찌저찌 정리하다보면, 저 데이터 분포의 공분산행렬 $\Sigma$의 eigenvalue/eigenvector를 찾는 문제로 바뀌어요.
  4. 근데 이때 공분산 행렬은 symmetric하다는 특징이 있고 따라서 반드시 diagonalizable하니까 eigendecomposition을 해주면 가장 큰 eigenvalue와 상응하는 eigenvector가 곧 principal component라는 결론을 낼 수 있고, $\min\:-\mathbf{u}^\top\Sigma\mathbf{u}=\max\:\mathbf{u}^\top\Sigma\mathbf{u}$에 대입해보면 $\mathbf{u}_1$가 곧 데이터 분포의 분산이 가장 큰 방향이라는 것을 쉽게 유추할 수 있어요.

..나 어떻게 선대 A받음.. ㄹㅈㄷ

728x90