PCA(주성분 분석)
[목차]
- PCA란?
- 간단한 활용 예시
[주요내용]
1. PCA(Principal Component Analysis)란?
- 고차원 데이터를 저차원으로 변환하는 차원 축소(dimensionality reduction) 기법
- 변수의 개수 = 차원의 개수
- ex) 4개의 독립변인들이 하나의 공간에 표현되기 위해서는 공간이 4차원이어야 함
-> 차원이 증가할수록 데이터가 표현해야 하는 공간이 복잡해짐
- ex) 4개의 독립변인들이 하나의 공간에 표현되기 위해서는 공간이 4차원이어야 함
- 따라서, 변수가 너무 많아 기존 변수를 조합해 새로운 변수를 가지고 모델링을 하려고 할 때 주로 PCA 사용
그럼?? PCA가 왜 필요한가??
1-1) PCA의 목적
- 활용
- feature engineering 과정에서 차원을 줄이면서 과적합(overfitting)위험감소 & 모델 학습 속도 증가 시킬 수 있음
- 회귀분석에서 다중공선성(multicllinearity)이 있는 설명 변수를 직접 제거하지 않아도 됨
- 데이터가 고차원(3D이상)일 때, PCA를 활용하여 2D 또는 3D로 변환하여 시각화 가능
- 고차원 데이터의 문제점
- 고차원 데이터는 분석 및 모델링 시 여러 가지 문제가 발생할 수 있음
문제점 | 설명 |
차원의 저주(Curse of Dimensionality) | 차원이 증가하며 데이터 간 거리가 희소해지고, 모델의 일반화 성능이 저하됨 |
계산 비용 증가 | 차원이 많을수록 연상량이 급증하여 학습 속도가 느려짐 |
시각화 어려움 | 3차원 이상의 데이터는 사람이 직접 시각적으로 이해하기 어려움 |
노이즈 제거 필요 | 일부 차원은 정보보다 노이즈(불필요한 데이터)를 포함할 가능성이 높음 |
2. 간단한 활용 예시
2-1) 필요한 라이브러리 불러오기
import seaborn as sns
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
2-2) 데이터 로드
# Iris 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names
2-3) PCA 적용(2차원으로 축소)
# PCA 적용 (2차원으로 축소)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
2-4) 데이터프레임 변환
# 데이터프레임 변환
df_pca = pd.DataFrame(X_pca, columns=["PC1", "PC2"])
df_pca["Target"] = y
2-5) 시각화
# 시각화
plt.figure(figsize=(8, 6))
sns.scatterplot(x="PC1", y="PC2", hue=df_pca["Target"], palette="Set1", data=df_pca)
plt.title("Iris 데이터의 PCA 변환 결과")
plt.show()
2-6) 결과
- 원래 4차원(꽃받침 길이, 꽃잎 너비 등) 데이터를 2차원으로 변환
- 각 클래스(품종) 간의 차이를 시각적으로 확인 가능
- 군집 분석(Clustering) 및 분류 모델에 활용 가능
'ML' 카테고리의 다른 글
[TIL 62일차] 머신러닝 프로젝트 - 노래 추천 시스템 개발(Spotify 활용) (1) | 2025.02.11 |
---|---|
[TIL 56일차] 머신러닝 - Scaler (0) | 2025.01.31 |
[TIL 55일차] 머신러닝 - 지도학습 (0) | 2025.01.30 |
[TIL 53일차] 머신러닝 - 비지도학습 : 군집화 (0) | 2025.01.28 |
[TIL 52일차] 머신러닝 - 비지도 학습 (0) | 2025.01.28 |