Scikit-Learn에서는 PLSRegression 클래스를 이용하여 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR) 모형을 학습할 수 있다. 이번 포스팅에서는 PLSRegression 클래스의 기본적인 사용법에 대해서 알아본다.
부분 최소 제곱 회귀(Partial Least Square Regression : PLSR) 모형에 대한 개념은 아래 포스팅을 참고하면 된다.
38. 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR)에 대해서 알아보자 with Python
PLSRegression 사용법
여기에서는 Scikit-Learn의 예제에서 나오는 코드를 이용했다. PLSRegression은 알고리즘 최대 반복수(max_iter), 선형 결합 개수(n_components), 설명 변수와 반응 변수 행렬의 스케일링 여부(scale) 등의 인자를 설정할 수 있다. 그리고 fit 메서드를 이용하면 PLSR 모형을 학습할 수 있다.
import numpy as np
from sklearn.cross_decomposition import PLSRegression
X = np.array([[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [2.,5.,4.]])
Y = np.array([[0.1, -0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]])
pls_reg = PLSRegression(
max_iter=500, ## 알고리즘 최대 반복수
n_components=2, ## 선형 결합 개수
scale=False, ## 스케일링 여부 (평균 센터링은 하지만 일반적으로 스케일링은 할지 말지 지정)
tol=1e-06 ## 오차 한계
).fit(X, Y)
모형을 학습하고 난 뒤 접근할 수 있는 속성들은 다음과 같다(Scikit-Learn 최신 버전에서는 intercept_ 속성을 통해 절편항 정보도 가져올 수 있다).
X_score = pls_reg.x_scores_ ## 선형 결합
X_loading = pls_reg.x_loadings_ ## 로딩 행렬
X_rot = pls_reg.x_rotations_ ## 회전 행렬 (X - np.mean(X, axis=0)) @ X_rot = X_score 가 된다.
Y_score = pls_reg.y_scores_ ## 반응 변수 선형 결합
Y_loading = pls_reg.y_loadings_ ## 로딩 행렬
Y_rot = pls_reg.y_rotations_ ## 회전 행렬
beta = pls_reg.coef_ ## 회귀 계수
마지막으로 predict 메서드를 이용하면 예측값(여기에서는 행렬)을 얻을 수 있다.
print('예측 :', pls_reg.predict(X))
댓글