본문 바로가기

ML & AI/unsupervised

[알고리즘] 주성분 분석(PCA)

PCA(Principal Component Analysis), 주성분 분석이란 차원 축소 방법의 하나로써 많은 Feature(특성)로 구성된 다차원 데이터-셋의 차원을 축소하여 불필요한 Feature를 제거하여 새로운 데이터-셋을 생성하는 방법이다. 객체의 모든 특성이 학습을 위해 모두 필요하지도 않고, feature 가 증가할 수록 오히려 예측 신뢰도가 저하되거나 Overfitting이 발생할 가능성이 높기 때문에 이를 방지하고 시각화, 노이즈 제거, 모델 성능을 향상 하기 위해 PCA를 사용할 수 있다.

 

PCA 원리

2차원의 데이터-셋을 1차원으로 줄이는 방법은 x, y 좌표로 구성된 2차원 데이터를 1차원의 선으로 사영(Projection)하는 것이다. 좌표 공간에는 서로 다른 방향의 수많은 선이 존재한다. 문제는 각 좌표의 데이터를 어떻게 데이터의 유실 없이 사영할 수 있는가 이다.

PCA는 좌표들 간의 데이터 분산이 가장 넓은 지역에 직선을 만들어 모든 좌표를 사영시킨다.

 

좌표들을 가장 분산이 넓은 위치의 직선에 사영

 

좌표공간의 수많은 직선 중 가장 분산이 넓은 위치의 직선에 좌표를 사영하는 이유는 사영된 좌표값의 중복을 최소화하여 데이터의 유실을 줄이기 위함이다.

왼쪽의 그림과 같이 x축, y축을 기준으로 좌표를 사영한 결과를 보면 각 좌표들이 직선에 중첩되어 표시되는 점을 확인할 수 있으며, 오른쪽 그림과 같이 좌표 공간에 존재하는 수많은 직선 중 가장 데이터 중복이 적은 직선은 데이터 간의 분산이 가장 큰 위치의 직선임을 알 수 있다. 

 

이러한 직선을 주성분(PC, Principal Component)라 부르며, 주성분 위에 좌표를 사영하면 점들 간의 가장 긴 거리를 보장할 수 있다. 이렇게 차원을 분석하고, 분석된 차원으로 부터 주성분을 찾아서 새로운 데이터-셋을 만드는 것이 PCA 주성분 분석 기법이다. 

 

공분산 행렬을 통한 주성분 분석

PCA에서는 각 데이터의 공분산 행렬 연산을 통해 데이터의 분산 정도를 측정하고, 고유벡터와 고유값을 찾는다.

  • 공분산 행렬의 고유백터 : 데이터가 어느 방향으로 분산되어 있는지를 나타냄
  • 고유값 : 고유벡터의 방향으로 얼마의 크기 만큼 분산되어 있는지를 나타냄

[참고]https://angeloyeo.github.io/2019/07/27/PCA.html

즉 고유값이 가장 큰 고유벡터를 정렬하면 가장 분산이 큰 주성분을 찾을 수 있다.

 


내가 머신러닝(딥러닝) 알고리즘에 대하여 정리하는 이유는 학술적(수학적) 이해를 위해서가 아니다. 학습 모델을 만들고, 최적의 학습 결과를 만들기 위해 필요한 각 알고리즘의 특징과 활용방법을 이해하기 위함이다. 차제에 더욱 더 깊이있는 이해가 필요하겠지만 우선 내 나름대로 이해한 내용들을 부족하다마 정리해본다.

 

추가적으로 PCA 주성분 분석에 대해 이해하기 쉽도록 설명한 블로그(공돌이의 수학정리노트)가 있어 함께 남겨놓는다.(공돌이님 미리 양해를 구하지 못해 죄송합니다.) 

'ML & AI > unsupervised' 카테고리의 다른 글

[NLP] 자연어 처리 #2 인공신경망 언어모델  (0) 2020.12.04
[NLP] 자연어 처리 #1 개념  (0) 2020.12.04