PCA 변환 시각화

Python으로 배우는 Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

차원 축소

  • 저장·계산을 더 효율적으로 함
  • 정보가 적은 "노이즈" 특징 제거
  • 예: 분류, 회귀 등 예측 작업에 방해
Python으로 배우는 Unsupervised Learning

주성분분석(Principal Component Analysis)

  • PCA = "Principal Component Analysis"(주성분분석)
  • 핵심 차원 축소 기법
  • 1단계: 디코리레이션(여기서 다룸)
  • 2단계: 차원 축소(뒤에서 다룸)
Python으로 배우는 Unsupervised Learning

PCA로 데이터를 축에 정렬

  • 데이터를 회전해 축과 정렬
  • 데이터를 이동해 평균을 0으로 만듬
  • 정보 손실 없음

회전된 축과 와인 데이터 산점도

Python으로 배우는 Unsupervised Learning

PCA는 fit/transform 패턴을 따름

  • PCAKMeans, StandardScaler처럼 scikit-learn 구성요소입니다
  • fit()은 데이터로 변환을 학습
  • transform()은 학습된 변환을 적용
  • transform()은 새 데이터에도 적용 가능
Python으로 배우는 Unsupervised Learning

scikit-learn으로 PCA 사용

  • samples = 두 특징(total_phenolsod280)의 배열
[[ 2.8   3.92]
 ...
 [ 2.05  1.6 ]]
from sklearn.decomposition import PCA

model = PCA() model.fit(samples)
PCA()
transformed = model.transform(samples)
Python으로 배우는 Unsupervised Learning

PCA 특징

  • 변환된 행은 각 샘플을 의미합니다
  • 변환된 열은 "PCA 특징"입니다
  • 각 행은 해당 샘플의 PCA 특징값입니다
print(transformed)
[[  1.32771994e+00   4.51396070e-01]
 [  8.32496068e-01   2.33099664e-01]
 ...
 [ -9.33526935e-01  -4.60559297e-01]]
Python으로 배우는 Unsupervised Learning

PCA 특징은 상관되지 않음

  • 데이터셋의 특징은 흔히 상관됩니다. 예: total_phenols, od280
  • PCA는 데이터를 축에 정렬합니다
  • 결과 PCA 특징은 선형 상관이 없습니다(“디코리레이션”)

회전된 축과 와인 데이터 산점도

Python으로 배우는 Unsupervised Learning

피어슨 상관계수

  • 특징 간 선형 상관을 측정합니다
  • 값의 범위: -1 ~ 1
  • 0이면 선형 상관이 없음

상관 0.7, 0, -0.7의 산점도 3개

Python으로 배우는 Unsupervised Learning

주성분(Principal Components)

  • "주성분" = 분산의 방향
  • PCA는 주성분을 축과 정렬합니다

와인 데이터 산점도와 주성분 방향(빨간 화살표, 회전된 축)

Python으로 배우는 Unsupervised Learning

주성분(Principal Components)

  • PCA 객체의 components_ 속성으로 제공됩니다
  • 각 행은 평균으로부터의 변위를 정의합니다
print(model.components_)
[[ 0.64116665  0.76740167]
 [-0.76740167  0.64116665]]
Python으로 배우는 Unsupervised Learning

연습해 봅시다!

Python으로 배우는 Unsupervised Learning

Preparing Video For Download...