Machine Learning/Advanced (hands on machine learning)

25. 차원 축소 - PCA

jwjwvison 2021. 5. 26. 19:50

 주성분 분석(principal component analysis, PCA)는 가장 인기 있는 축소 알고리즘이다. 먼저 데이터에 가장 가까운 초평면을 정의한 다음, 데이터를 이 평면에 투영시킨다.

 

 사이킷런의 PCA 모델은 앞서 한 것처럼 SVD 분해 방법을 사용하여 구현한다. 다음은 PCA 모델을 사용해 데이터셋의 차원을 2로 줄이는 코드이다. (사이킷런의 PCA모델은 자동으로 데이터를 중앙에 맞춰준다).

 

 explained_variance_ratio_ 변수에 저장된 주성분의 설명된 분산의 비율도 유용한 정보 중 하나이다.

 이는 데이터셋 분산의 84.2%가 첫 번째 PC를 따라 놓여 있고 14.6%가 두 번째 PC를 따라 놓여 있음을 알려준다.

 

 축소할 차원 수를 임의로 정하기 보다는 충분한 분산(예를 들면 95%)이 될 때까지 더해야 할 차원 수를 선택하는 것이 간단하다. 물론 데이터 시각화를 위해 차원을 축소하는 경우에는 차원을 2개나 3개로 줄이는 것이 일반적이다.

 

 차원을 축소하고 난 후에는 훈련 세트의 크기가 줄어든다. 예를 들어 MNIST 데이터셋에 분산의 95%를 유지하도록 PCA를 적용해보겠다. 각 샘플은 원래의 784개 특성이 아니라 150개 정도만 가지고 있을 것이다. 대부분의 분산은 유지되었지만 데이터셋은 원본 크기의 20%미만이 되었다. 이는 상당한 압축률이고 이런 크기 축소는 (SVM 같은) 분류 알고리즘의 속도를 크게 높일 수 있다.

 

출처: 핸즈온 머신러닝