소개
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
데이터셋 로드
다음으로, 교차 분해 알고리즘을 보여주기 위해 샘플 데이터셋을 로드합니다. 간단하게, 두 행렬 X와 Y를 임의 값으로 생성합니다.
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 에 대해 학습했으며, 이러한 모델을 데이터에 적합하고 데이터를 저차원 표현으로 변환하는 방법을 살펴보았습니다. 이러한 알고리즘은 특징 간의 다중 공선성이 있거나 변수의 수가 샘플 수보다 클 때 차원 축소 및 회귀 작업에 유용합니다.