PLS 알고리즘을 이용한 차원 축소

Beginner

This tutorial is from open-source community. Access the source code

소개

scikit-learn 의 cross_decomposition 모듈은 차원 축소 및 회귀를 위한 지도 학습 추정기 (supervised estimators) 를 포함하며, 특히 부분 최소 제곱 (PLS) 알고리즘을 제공합니다. 이러한 알고리즘은 두 행렬 사이의 기본적인 관계를 찾아, 변환된 행렬 간의 공분산이 최대가 되도록 두 행렬을 저차원 공간에 투영합니다.

이 실습에서는 scikit-learn 에서 제공하는 다양한 교차 분해 알고리즘을 탐색하고, 차원 축소 및 회귀 작업에 사용하는 방법을 배웁니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제약으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

필요한 라이브러리 가져오기

이 실습을 시작하기 위해 필요한 라이브러리를 가져옵니다.

import numpy as np
from sklearn.cross_decomposition import PLSRegression, PLSCanonical, CCA, PLSSVD

데이터셋 로드

다음으로, 교차 분해 알고리즘을 보여주기 위해 샘플 데이터셋을 로드합니다. 간단하게, 두 행렬 XY를 임의 값으로 생성합니다.

np.random.seed(0)
X = np.random.random((100, 5))
Y = np.random.random((100, 3))

PLSRegression

PLSRegression 모델 적합

정규화된 선형 회귀의 한 형태인 PLSRegression 알고리즘으로 시작합니다. 모델을 데이터에 적합시킵니다.

pls = PLSRegression(n_components=2)
pls.fit(X, Y)
데이터 변환

적합된 모델을 사용하여 원본 데이터를 변환할 수 있습니다. 변환된 데이터는 차원이 감소됩니다.

X_transformed = pls.transform(X)
Y_transformed = pls.transform(Y)

PLSCanonical

PLSCanonical 모델 적합

다음으로, 두 행렬 간의 표준 상관관계를 찾는 PLSCanonical 알고리즘을 사용합니다. 이 알고리즘은 특징들 간의 다중 공선성이 있을 때 유용합니다.

plsc = PLSCanonical(n_components=2)
plsc.fit(X, Y)
데이터 변환

적합된 모델을 사용하여 원본 데이터를 변환할 수 있습니다. 변환된 데이터는 차원이 감소됩니다.

X_transformed = plsc.transform(X)
Y_transformed = plsc.transform(Y)

CCA

CCA 모델 적합

CCA 알고리즘은 PLS 의 특수한 경우로, 표준 상관 분석 (Canonical Correlation Analysis) 을 의미합니다. 두 변수 집합 간의 상관관계를 찾습니다.

cca = CCA(n_components=2)
cca.fit(X, Y)
데이터 변환

적합된 모델을 사용하여 원본 데이터를 변환할 수 있습니다. 변환된 데이터는 차원이 감소됩니다.

X_transformed = cca.transform(X)
Y_transformed = cca.transform(Y)

PLSSVD

PLSSVD 모델 적합

PLSSVD 알고리즘은 PLSCanonical의 간소화된 버전으로, 교차 공분산 행렬의 특이값 분해 (Singular Value Decomposition, SVD) 를 단 한 번만 계산합니다. 이 알고리즘은 주성분의 수가 하나로 제한될 때 유용합니다.

plssvd = PLSSVD(n_components=1)
plssvd.fit(X, Y)
데이터 변환

적합된 모델을 사용하여 원본 데이터를 변환할 수 있습니다. 변환된 데이터는 차원이 감소됩니다.

X_transformed = plssvd.transform(X)
Y_transformed = plssvd.transform(Y)

요약

이 실험에서는 scikit-learn 에서 제공하는 교차 분해 알고리즘을 탐색했습니다. PLSRegression, PLSCanonical, CCA, PLSSVD 에 대해 학습했으며, 이러한 모델을 데이터에 적합하고 데이터를 저차원 표현으로 변환하는 방법을 살펴보았습니다. 이러한 알고리즘은 특징 간의 다중 공선성이 있거나 변수의 수가 샘플 수보다 클 때 차원 축소 및 회귀 작업에 유용합니다.