머신러닝의 문제는 train data가 많은 feature을 가지고 있기에 학습을 어렵게 한다. 이러한 문제를 차원의 저주라고 한다. 머신러닝에서는 feature의 수를 줄여 해결이 어려운 문제를 가능한 범위로 변경할 수 있다.

차원 축소를 위한 접근 방법

투영

대부분의 실전 데이터는 모든 차원에 걸쳐 균일하게 퍼져있지 않다. 따라서 시각화를 투영을 이용해 데이터의 feature간의 연관성을 확인할 수 있다. 즉, 3D 데이터를 2D로 시각화하는 방법을 통해 확인하는 것이 그 예라고 할 수 있다. 아래의 그림을 보자.

Untitled

Untitled

출처 : [1]

하지만 공간이 휘어져 있거나 하는 경우도 존재하는만큼 꼭 이 방법이 답이라고 할 수 없다.

매니폴드 학습

매니폴드란 스위스롤(위의 첫 번째 이미지 - 2D 매니폴드) 등과 같은 것을 의미한다. 이는 데이터가 놓여 있는 분포를 뜻한다고 볼 수 있고, 많은 모델들이 이러한 매니폴드를 학습하는 식으로 작동한다(image generation task 또한 이러한 매니폴드를 잘 학습하는 것이 목표이다).

PCA

주 성분 분석인 PCA는 가장 인기 있는 차원 축소 알고리즘 중 하나이다. 이는 데이터에 가장 가까운 hyperplane을 정의한 다음, 데이터를 그 평면에 투영시키는 것이다.

분산 보존

저차원의 hyperplane에 데이터를 투영하기 전에 절절한 hyperplane을 선택하여야 한다. 즉, 적절한 축을 선택하여 분산이 최대로 보존되도록 하는 것이 좋다는 것이다.

주성분

PCA는 훈련 데이터에서 분산이 최대인 축을 찾는다. 그리고 그 축과 직교하고 남은 분산을 최대로 보존하는 두 번째 축을 찾는다. 또한 그 두 축에 직교하는 선을 차원에 따라 계속 찾아가는 식으로 작동한다. 이 때 i번째 축을 데이터의 i번째 주성분(PC)이라고 한다.

그렇다면 축을 어떤 식으로 찾아갈까?

이는 특이값 분해(SVD, 행렬 분해 - 추천 알고리즘에도 등장)를 통해 찾아간다. 코드를 통해 보자.