차원 축소 알고리즘인 PCA 에 대해 알아보자.

Big & High Dimensional Data

Real World Data 는 양이 방대하고, 차원이 높다. 즉, feature 의 수가 많다. 이런 데이터는 인사이트 도출이 어렵다. 이를 해결하기 위해 한 번의 관찰에서는 특정 차원에서 보이는 특정한 성분만 관찰하는 방법을 사용할 수 있다.

image.png

위 그림처럼 공의 움직임을 관찰할 때, 여러 대의 카메라를 이용해 각 방향에서의 운동을 관찰하면 여러 정보를 한 번에 관찰하는 것 보다 인사이트 도출이 쉽다. 하지만 전체적인 현상을 관찰하는 능력이 감소한다는 단점이 있다.

PCA

고차원 데이터셋 속에 숨겨진 데이터를 추출하기 위해 차원을 축소하는 비지도학습 기법이다. 숨겨진 데이터라는 것은 사람의 인지 능력 밖의 데이터를 의미한다. 이를 위해 중요도가 덜한 차원을 축소하는 것이다.

PCA 가 유용한 경우는 다음과 같다.

Principal Components

데이터의 차원을 축소한다는 것은, 선형 변환을 통해 데이터를 더 낮은 차원에 투영시킨다는 것이다. 여기서 문제는 데이터를 어디에 투영시키는가다.

image.png

왼쪽 그림을 살펴보자. 원본 데이터 (파란색) 을 검은 선에 투영시켜 빨간 데이터 분포가 생겼다. 새로 생긴 데이터 분포는 Variance 가 이전보다 낮은 모습을 보인다. 이는 특정 차원의 데이터가 버려져 데이터 포인트 간 구별이 힘들어졌다는 것을 의미한다. 반대로 오른쪽 경우는 Variance 가 높도록 투영시켜, 차원이 축소되었음에도 데이터 간 구별이 비교적 쉽다.

PCA의 목표는 데이터를 투영할 방향 중에서 데이터의 분산(variance)이 가장 큰 방향을 찾는 것이다. 이때 찾은 방향 벡터를 주성분 벡터(Principal Component) 라고 하며, 이 방향으로 데이터를 투영하면 정보 손실을 최소화하면서 차원을 축소할 수 있다. 이를 이용해 데이터의 특성을 최대한 보존하면서 데이터 표현에 필요한 비트 수를 줄이는 것이다.

Covariance Matrix

두 데이터 집단 간의 분산 (공분산) 을 나타내는 행렬로, 두 변수의 편차의 이동을 관찰해 상관관계를 측정한다.

image.png