주성분 분석(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 같은) 분류 알고리즘의 속도를 크게 높일 수 있다.
출처: 핸즈온 머신러닝
'Machine Learning > Advanced (hands on machine learning)' 카테고리의 다른 글
28. 비지도 학습 - 군집(K-평균(1)) (0) | 2021.05.26 |
---|---|
26. 차원 축소 - 커널 PCA (0) | 2021.05.26 |
24. 차원 축소 - 차원의 저주 (0) | 2021.05.26 |
22. 앙상블 학습과 랜덤 포레스트 - 스태킹 (0) | 2021.05.22 |
21. 앙상블 학습과 랜덤 포레스트 - 부스팅(Ada,Gradient,xgboost) (0) | 2021.05.22 |