딥러닝, 머신러닝에서 학습할 데이터의 차원을 줄이는 부분은 굉장히 중요한 요소입니다. 데이터의 차원을 줄임으로서 학습할 시간과, 데이터의 용량, AI 모델의 무게 등을 줄일 수 있기 때문이죠.
학습에 필요한 데이터를 수집하는 일도 정말 중요하지만, 수집된 데이터 중 의미 있는 데이터로 축소시켜 학습시키는 것 또한 매우 중요한 과정 중 하나입니다.
오늘은 PCA분석의 차원축소의 원리와 간단한 예제를 진행해보고자 합니다.
아래와 같은 2차원 데이터를 1차원으로 축소시킬려면 어떨게 하면 될까요?
쉽게 차원을 축소하는 방법은 무엇일까요? 아래 그림처럼 하나의 축으로 데이터를 모으는 것 입니다.
위 그림에서도 확인하실수 있듯이 한쪽 축으로 데이터를 옮기다 보면 겹치는 데이터가 발생할 수 있습니다.
데이터가 겹쳐지는 부분처럼, 차원을 축소하는 과정에서 데이터의 손실이 발생할 수 있습니다.
그렇다면 공학적으로 데이터 손실을 막으면서 차원을 축소시키는 방법은 무엇일까요?
분산이 가장 넓은 지역을 찾는 것입니다.
출처: 위키피디아( https://ko.wikipedia.org/wiki/%EB%B6%84%EC%82%B0) 분산이란? 확률론과 통계학에서 어떤 확률변수의 분산(分散, 영어: variance) 또는 '변량[출처 필요]'은 그 확률변수가 기댓값으로부터 얼마나 떨어진 곳에 분포하는지를 가늠하는 숫자이다.[1] 기댓값은 확률변수의 위치를 나타내고 분산은 그것이 얼마나 넓게 퍼져 있는지를 나타낸다. 분산은 표본 평균이나 분산의 제곱근인 표준편차와 보다 밀접한 관련이 있다.
아래 그림처럼 데이터를 차원축소 시키면 이전과 달리 데이터 손실을 최소화 하면서 차원축소를 할 수 있습니다. 이런 기법을 PCA 로 차원축소를 하는 원리라고 생각하시면 됩니다.
차원 축소를 위해 만든 축을 PC(Principal Component)라고 부릅니다.
그렇다면 PC는 어떻게 구하는 것일까요? PC는 데이터의 Featrue들이 가지고 있는 공분산 행렬의 Eigen Vector 값입니다.
Eigen Vector의 경우 n차원에 n개의 벡터수가 있습니다. 예를 들어 3차원의 경우 3개의 Eigen Vector가 있는 것이죠.
아래 그림의 예시를 보겠습니다. 2차원의 Eigen Vector는 2개 존재하게 됩니다.
Eigen Value가 크다는건 분산이 크다는것을 의미합니다.
PC1은 Eigen Value가 큰 Eigen Vector이고,
PC2는 Eigen Value가 작은 Eigen Vector가 됩니다.
Eigen Value가 큰 Eigen Vector값을 선택하여 한쪽으로 데이터 축소를 진행해주시면 됩니다.
다음번 블로그에는 Python과 Pandas를 이용하여 PCA분석을 구현해볼수있도록 하겠습니다.