오구의코딩모험

[선형대수학] 주성분 분석(PCA)이란? 본문

AI/선형대수학

[선형대수학] 주성분 분석(PCA)이란?

오구.cpp 2022. 12. 11. 21:41
반응형

 

PCA(Principal Component Analysis), 주성분 분석

데이터들을 정사영 시켜 차원을 낮추는 차원 축소 역할을 한다고만 알고 있었다.

 

정의는 아는데..

정확하게 이해를 하지 못하여 누구에게 설명할 수가 없다!

 

그러므로

오늘은 주성분 분석에 대해서

자세히 알아보자!

 

 

https://angeloyeo.github.io/2019/07/27/PCA.html

 

주성분 분석은 그림과 같이

데이터(파란점)의 분포를 잘 설명해주는 방향(노란색 직선)을 나타내는 방법이다.

 

그림에서 2차원 좌표에 있던 데이터들을 1차원인 직선으로 표현했다.

즉, 차원이 2 → 1 로 줄었다. (차원축소)

 

 

 

그럼 여기서

  1. 분포를 잘 설명해준다는 건 뭐고,
  2. 방향은 무엇을 기준으로 설정하는 걸까?

 

 

 

 

분포를 잘 설명해준다.

데이터의 구조를 잘 설명해준다. 특히 특징 쌍(feature pairs)들의 변동이 얼마나 닮았는가?

이를 행렬로 나타낸 것이 공분산 행렬이다!

 

 

아래 그림을 보면,

왼쪽 데이터들이 Matrix1 이라는 공분산 행렬을 적용하여

오른쪽 그림과 같이 선형 변환 되었다.

 

 

Matrix1이 어떤 값인진 모르겠지만

그림만 보았을 땐,

좌표들이 1,3사분면을 기준 대각선 모양으로 퍼진 것처럼 보인다.

 

여기서 진짜

Matrix1 공분산 행렬 값은

 

Matrix 1

위의 그림과 같다!

공분산 행렬 각 원소들의 의미를 해석해본다면

 

x,y축 방향으로 함께 퍼진 정도가 양수이기에

1,3사분면을 기준으로 지나게 되며,

x,y축 방향으로 퍼진 정도는 기존의 데이터와 큰 차이가 없기에

그래프의 x축, y축 퍼짐은 유사하게 보인다!

 

이처럼 공분산 행렬은 데이터의 구조를 나타내는 행렬이란걸 볼 수 있다!

 

 

 

고유 벡터(eigenvector)의 의미를 잘 생각해보면,

고유 벡터는 그 행렬이 벡터에 작용하는 주축(principal axis)의 방향을 나타낸다.

 

 

결국 공분산 행렬의 고유 벡터

데이터가 어떤 방향으로 분산되어 있는지를 나타내준다고 할 수 있다.

 

여기서 고유벡터의 방향

분산이 가장 큰 방향인 고유벡터1, 고유벡터1과 수직인 고유벡터2로 나타난다.

 

 

왜 저 두 방향일까?

공분산 행렬의 고유벡터와 최대 variance

 

저 의문점을 해결해주는 긴 수식이 있다.

 

요약하자면..

오차가 가장 작게 하도록 수식을 구성하여 계산하니

곧, 최대 분산일 때랑 같다는 내용이고,

그 다음은 최대 분산과 직교하는 방향이다..

수식만 보고 이해하기 힘들어...

영상을 참고하도록 하자!

 

 

특히

영상에서 AE(Autoencode)의 mainfold 학습과 연관지어 설명해주는 부분이 인상깊었다..! 

 

 

 

참고자료

공돌이 수학정리 노트

혁펜하임 PCA

 

반응형
Comments