Hippo's data
PCA(Principal Component Analysis) 주성분 분석 구현 본문
오늘은 PCA(Principal Component Analysis) 주성분 분석에 대해 알아보겠습니다!!
주성분 분석은 데이터의 차원을 줄이는(차원축소) 방법인데요 데이터의 분산을 최대한으로 유지하는 것이 포인트입니다
# 왜 분산을 최대한으로 유지해야하는가?
-> 우리의 목적은 정보의 손실을 최대한 줄이면서 차원을 축소하는 것
-> 데이터들이 많이 흩어져 있어야 차원을 줄일때(투영, projection) 겹치는 부분이 적어짐
-> 겹치는 부분인 적으면 그만큼 정보의 손실을 방지할 수 있음
# 사용목적?
1. 시각화
-> 데이터가 3차원 이상의 데이터는 한 눈에 시각화 하기 어려우므로 차원 축소를 통해 시각화에 활용하기 위함
2. 노이즈 줄이기
-> 쓸모없는 특성들을 없애서 노이즈를 줄이기 위함
3. 전처리(preprocessing)시 데이터 복잡성 줄이기
# PCA전 스케일링 진행(필수)
-> 데이터 세트의 모든 특성들의 중요도를 동일하게 판단하기 위함
https://hipposdata.tistory.com/35
-> 데이터 스케일링 방법 구현
<구현>
# 불러오기
from sklearn.decomposition import PCA
# PCA 객체로 주성분 개수만큼 출력
pca = PCA(n_components= 3) # 3개의 주성분(변수)을 유지하도록 설정
pca = PCA(n_components= 0.9) # 90%의 분산을 보존하는 만큼 주성분 개수(변수 개수) 선택
reduced_data = pca.fit_transform(data) # 데이터 차원 축소
# 주성분의 설명된 분산 값 확인
print(pca.explained_variance_)
# 주성분의 설명된 분산 비율 확인 / 각 주성분들의 기여율(원본 데이터를 얼만큼 반영하는지) 확인
print(pca.explained_variance_ratio_)
예) [0.65 0.2 0.05]
-> 첫번째 요소(변수)가 65%만큼 기여함 / 두번째는 20% ...
# 주성분 개수(변수 개수) 설정 기준
-> 보통 기여율합(누적 기여율)이 0.8 ~ 0.9 정도까지 주성분 개수 설정함
'ML(Machine Learning)' 카테고리의 다른 글
하이퍼파라미터(Hyperparameter) 튜닝 - optuna (0) | 2024.03.16 |
---|---|
t-SNE(t-distributed Stochastic Neighbor Embedding) 구현 (0) | 2024.01.20 |
하이퍼파라미터(Hyperparameter) 튜닝 - 그리드서치, 랜덤서치 (0) | 2024.01.11 |
앙상블(Ensemble) (0) | 2024.01.08 |
머신러닝 주요 모델 모델링(Scikit-learn) (0) | 2024.01.08 |