앞의 글을 읽으시면 이해에 도움이 됩니다.
2022.10.19 - [Computer Science/머신러닝] - [머신러닝 - 이론] Dimensionality Reduction (차원 축소)
1. PCA란?
PCA(principla component analysis, 주성분 분석)은 가장 인기있는 차원 축소 알고리즘입니다.
먼저 데이터에 가장 가까운 초평면(hyperplane)을 정의한 다음, 데이터를 이 평면에 투영시킵니다.
근데 hyperplane을 찾는게 어려워요.
아래의 그림에서 무엇이 맞는 hyperplane일까요?
누가봐도 c1이 맞는 초평면이겠죠?
다른 방향으로 Projection하는 것 보다 분산이 최대로 보존되는 축을 선택하는 것이 정보가 가장 적게 손실되므로 합리적인 것 가습니다.
이 말은 다른 말로 원본 데이터셋과 투영된 것 사이의 MSE를 Minimize하는 축이 최선의 축이라고 볼 수 있습니다.
1.1 주성분
PCA는 훈련 데이터에서 분산이 최대인 축을 찾습니다.
(위의 그림에서는 c1)
이후 첫 번째 축에 직교하고 남은 분산을 최대한 보존하는 두 번째 축을 찾습니다.
(위의 그림에서는 어쩔 수 없이 c2)
고차원 데이터라면 이 두 축에 직교하는 세 번째 축을 찾으며 데이터의 차원의 수만큼 계속해서 n번째 축을 찾습니다.
i번째 축을 이 데이터의 i번째 주성분(principal component, PC)라고 합니다.
그럼 훈련 세트의 주성분은 어떻게 찾을까요?
바로 Singular Value Decomposition(특잇값 분해)을 통해서 찾을 수 있습니다.
훈련 데이터 행렬을 3개 행렬의 행렬 곱셈으로 분해할 수 있고, 이를 통해서 주성분을 찾을 수 있습니다.
이것에 해당하는 수식은 나중에 자세히 다루도록 하겠습니다
아무튼 원본 데이터에서 주성분을 찾은 후에 투영하면 됩니다.
1.2 적절한 차원 수
그러면 어느 정도 차원으로 줄이는 것이 적절할까요?
통상적으로 차원을 줄일 때, 기존의 분산의 95%정도까지 줄이는 것이 차원을 잘 줄였다고 얘기합니다.
물론 시각화를 해야한다면 2D, 3D로 축소하는 경우가 일반적입니다.
차원을 줄일수록 분산이 감소하는데 이때 약 150 인근 차원이 가장 적합한 것으로 보입니다.
만약 이렇게 MNIST 데이터를 150차원까지 줄인다면, 784차원에서 150차원으로 줄인 것 입니다.
대부분의 분산은 유지되었지만, 데이터는 원본의 크기는 20% 미만이 되었습니다.
또한 압축된 데이터셋에 PCA 투영의 변환을 반대로 적용하여 784개의 차원으로 되돌릴 수도 있습니다.
하지만 이때 이미 5%의 정보를 잃어버렸기 때문에, 원본 데이터셋을 얻을 수 없습니다.
이때 원본 데이터와 재구성된 데이터 사이의 평균 제곱 거리를 재구성 오차(reconstruction error)라고 합니다.
2. LLE (Locally Linear Embedding, 지역 선형 임베딩)
LLE는 강력한 NLDR(nonlinear dimensionality reduction) 기술입니다.
작성 중 …
'인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝 - 이론] Dimensionality Reduction (차원 축소) (2) | 2022.10.19 |
---|---|
[머신러닝 - 이론] Support Vector Machine (SVM, 서포트 벡터 머신) (0) | 2022.10.19 |
[머신러닝 - 이론] Ensemble - Stacking (앙상블 학습 - 스태킹) (2) | 2022.10.19 |
[머신러닝 - 이론] Ensemble - Boosting (앙상블 학습 - 부스팅) (0) | 2022.10.19 |
[머신러닝 - 이론] Ensemble - Random Forest (앙상블 학습 - 랜덤 포레스트) (0) | 2022.10.19 |