봉식이와 캔따개

주성분 분석(PCA)를 이해해보자 본문

머신러닝, 딥러닝/기초

주성분 분석(PCA)를 이해해보자

봉식이누나 2021. 2. 17. 15:04
반응형

 

 

PCA는 차원 축소 방법 중 하나이다.

 

 

 

차원축소란?

 

많은 feature들로 구성된 다차원의 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것을 말한다.

차원이 증가할수록(feature가 증가할수록) 예측 신뢰도가 떨어지고 과적합이 발생히고 개별 feature간의 상관관계가 높을 가능성이 있다.

 

 

차원 축소를 하는 이유에는 여러가지가 있는데

 

첫번째는 시각화

(차원이 3차원이 넘어가면 시각화를 할 수 없기 때문에 시각화를 위해 차원 축소를 한다)

 

두번째는 노이즈 제거

 

세번째는 메모리 절약

 

네번째는 모델 성능 향상

 

등의 이유가 있다.

 

 

 

→ 정리

데이터에 feature가 많은 경우가 있는데 모든 feature가 결과에 중요한 영향을 끼치는 것은 아니다.

따라서 가장 중요한 feature 몇 개 만을 선택하는 것. 이 주성분 분석(PCA)이다.

 

 

 

 

 

 

 

 

주성분 분석(PCA)의 원리

 

2차원을 1차원으로 줄이는 예를 보면서 이해해보자.

 

 

 

 

 

2차원 공간 안에 x1, x2 두 개의 feature를 축으로 설정했고 7개의 점을 찍었다.

 

어떻게 하면 2차원을 1차원으로 줄일 수 있을까?

 

가장 쉬운 방법은 하나의 축을 선택하여 점을 몰아넣는 방법이다.

 

 

 

 

 

이러한 방식을 사용하면 몇 개의 점은 서로 겹치게 되는 문제가 발생하는데, 이 경우 정보의 유실이 있을 수 있다.

 

정보의 유실을 막으면서 차원을 줄이는 방법은 분산이 가장 넓은 지역을 찾는 것이다.

분산이 가장 넓은 곳에 직선을 표시해보자

 

 

 

 

 

그리고 이 직선에 점들을 옮겨보았다.

 

 

 

 

 

각각의 점들이 퍼져있는 정도를 지켜줄 수 있게 되고 점들이 서로 겹치지 않게 된다.

 

 

 

 

이것이 PCA 알고리즘이다.

위에서 찾은 분산이 가장 넓은 지역을 주성분(PC)라고 한다.

사진을 보면 X축이나 Y축으로 모은 점들의 양 끝 거리보다 주성분에 모은 것이 더 긴 것을 확인할 수 있다.

 

 

 

축에 따라서 사영한 데이터들의 분포

 

이해를 위한 또 다른 사진..

 

 

 

 

 

 

수학적으로 주성분(PC) 구하기

 

주성분(PC)를 구하는 것을 수학적으로 말하면 각 점들이 가지고 있는 feature들의 공분산행렬의 고유벡터를 구하는 것이다.

고유 벡터를 구하는 방법은 공분산 행렬에 대해 가장 높은 고유값을 찾아 고유 벡터 값을 찾으면 된다.

 

이렇게만 얘기하면 뭔 말인지 1도 모르겠음...

 

 

 

공분산행렬이란?

 

공분산행렬은 데이터의 구조를 설명해준다. 

 

 

 

공분산 행렬은 데이터의 x값들의 분산, y값들의 분산, x와 y값의 분산으로 이루어져있다.

그리고 이 공분산 행렬의 고유벡터 라는 것은 데이터가 어떤 방향으로 분산되었는지를 나타내준다고 할 수 있다.

 

 

 

 

 

벡터와 행렬 연산에 대하여

 

벡터에 행렬 연산을 취해준다는 것은 벡터를 변환시켜 다른 벡터를 출력해주는 것을 의미한다.

변환 후의 벡터는 변환 전의 벡터와 비교했을 때, 크기도 방향도 모두 변할 수 있다.

 

 

행렬의 고유값과 고유벡터

 

그런데 특정한 벡터와 행렬은 변환을 취했을 때, 방향은 바뀌지 않고 크기만 바뀔 수 있다.

이 말은 즉, 어떠한 벡터에 행렬 A 연산을 취하여 변환시킨 값이 상수배라는 뜻이다.

 

임의의 n×n 행렬A에 취했을 때 크기만 바뀌게 하는 0이 아닌 벡터가 존재한다면

숫자 람다는 행렬 A의 고유값이라고 할 수 있고 이 때 벡터는 고유값 람다에 대응하는 고유벡터이다.

 

 

 

 

람다값(고유값)이 크면 선이 더 멀리 뻗어나가고 이는 분산이 크다는 것을 의미한다.

 

그렇게 구해진 고유벡터1을 PC1이라하고 고유벡터2를 PC2라고 한다.

PC는 차원의 개수만큼 구할 수 있다.

 

 

 

공분산 행렬의 고유값과 고유벡터

 

공분산행렬의 고유벡터는 데이터가 어떤 방향으로 분산되었는지를 나타낸다.

고유값은 고유벡터 방향으로 얼마만큼의 크기로 벡터 공간이 늘려지는지를 나타낸다.

고유값이 큰 순서대로 고유벡터를 정렬하는 것은 중요한 순서대로 주성분을 구하는 것을 의미한다.

반응형
Comments