ML

[TIL 54일차] 머신러닝 - 비지도학습 : PCA(주성분 분석)

_한량 2025. 1. 30. 01:56
PCA(주성분 분석)

 

[목차]

  1. PCA란?
  2. 간단한 활용 예시

[주요내용]

 1. PCA(Principal Component Analysis)란?

  • 고차원 데이터를 저차원으로 변환하는 차원 축소(dimensionality reduction) 기법
  • 변수의 개수 = 차원의 개수
    • 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) 및 분류 모델에 활용 가능