주성분분석PCA 개요
머신러닝에서 "차원축소" 방법으로 쓰이는 기법이다.
"차원축소"는 여러개의 특성(Feature)를 가지고 있는 고차원 데이터를 저차원 데이터로 줄이는 것을 말한다.
모델의 성능을 강화시키고, 통계적으로는 적은 수의 특징만으로 특정 현상을 설명할 수 있게 된다.
"차원축소" 방법에는 2가지 방법이 있는데, Feature Selection 과 Feature Extraction 이며 PCA는 후자에 속한다.
PCA는 특성(Feature)들 간의 분산-공분산 관계를 이용하여, 특성들의 선형결합(linear combination)으로 표시되는 주성분(Principal Component)을 찾는다. 주성분이라 함은 그 선형결합 방향으로 데이터들의 분산이 가장 큰 방향벡터를 의미한다. 즉 PCA로 찾은 주성분(PC1)은 원 데이터의 분산을 최대한 보존하여(=데이터가 가장 많이 흩뿌려져 있는) 분산이 큰 기저이다. 그리고 주성분(PC1)에 수직이면서 다음으로 분산이 큰 방향벡터를 PC2로 나타내며, 보통 이 PC1과 PC2를 2차원 데이터셋으로 많이 사용한다.
주성분분석PCA 절차
- 기존 데이터 xx의 공분산행렬 계산
- 공분산행렬의 고유값과 고유벡터 계산
- 고유값의 크기 순서대로 고유벡터를 나열
- 정렬된 고유벡터 가운데 일부 선택
- 해당 고유벡터와 XX 내적
이 절차들에 대하여 통계적, 선형대수학적으로 증명하는 과정은 차차 공부해도 무방할 것이다.
어차피 PCA 계산은 sklearn라이브러리가 돌려줄 것이다.
지금은 공분산행렬, 고유벡터 와 PCA가 어떻게 연결되는지 용어만 조금 집고 넘어가자
주성분(PC1)의 분산 = 공분산행렬의 가장 큰 고유값
주성분 행렬 = 기존데이터행렬 * 공분산 행렬의 고유벡터
주성분분석PCA sklearn 라이브러리 함수
from sklearn.preprocessing import StandardScaler, Normalizer
from sklearn.decomposition import PCA
#데이터셋 정규화
scaler = StandardScaler()
Z = scaler.fit_transform(X)
# PC1과 PC2 2차원 주성분분석
pca = PCA(2)
# 데이터셋Z 분산 공분산 계산
pca.fit(Z)
# 고유벡터 : PC1, PC2
print("\n Eigenvectors: \n", pca.components_)
# 고유값
print("\n Eigenvalues: \n",pca.explained_variance_)
# PC 매트릭스 계산 = 데이터셋 매트릭스Z * 고유값
B = pca.transform(Z)
print("\n Projected Data: \n", B)
refer)
https://ratsgo.github.io/machine%20learning/2017/04/24/PCA/
https://rpubs.com/Evan_Jung/pca
반응형
'IT > AI-ML' 카테고리의 다른 글
[YOLOv5]Colab Tutorial을 이용하여 학습 및 Inference시키기 1. (0) | 2022.08.20 |
---|---|
[Yolo] YOLO v5 튜토리얼 1.설치 (0) | 2022.08.03 |
[AI-ML] 지도학습 vs 비지도학습 (0) | 2021.08.13 |
[AI-ML] 지도학습 머신러닝모델 일반화, 편향/분산의 트레이트오프 개념, 과적합/과소적합 개념 (0) | 2021.08.11 |
Colab에서 Kaggle의 dataset 활용하기 (0) | 2021.07.27 |