소개
이 실습에서는 커널 릿지 회귀 (KRR) 와 Python 의 scikit-learn 라이브러리를 사용한 구현 방법을 배웁니다. KRR 은 커널 트릭을 릿지 회귀와 결합하여 커널에 의해 유도된 공간에서 선형 함수를 학습합니다. 입력과 출력 변수 간의 비선형 관계를 처리할 수 있는 비선형 회귀 방법입니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습용 Jupyter Notebook에 접근합니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 가져오기
먼저, 이 실습에 필요한 라이브러리를 가져옵니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.kernel_ridge import KernelRidge
합성 데이터 생성
다음으로, 작업할 합성 데이터를 생성합니다. 사인 함수 타겟 함수를 생성하고 일부 랜덤 노이즈를 추가합니다.
## 입력 데이터 생성
np.random.seed(0)
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
y += 0.5 * (0.5 - np.random.rand(y.size))
커널 릿지 회귀 모델 적합
이제 데이터에 커널 릿지 회귀 모델을 적합합니다. 비선형 회귀에 일반적으로 사용되는 RBF(Radial Basis Function) 커널을 사용합니다.
## 커널 릿지 회귀 모델 적합
alpha = 1.0 ## 정규화 매개변수
gamma = 0.1 ## RBF 커널의 커널 계수
krr = KernelRidge(alpha=alpha, kernel='rbf', gamma=gamma)
krr.fit(X, y)
예측 함수 시각화
모델 학습이 완료되면 원본 데이터 포인트와 함께 예측 함수를 시각화해 봅니다.
## 테스트 데이터 포인트 생성
X_test = np.linspace(0, 5, 100)[:, None]
## 타겟 값 예측
y_pred = krr.predict(X_test)
## 데이터와 예측 함수 시각화
plt.scatter(X, y, color='blue', label='Data')
plt.plot(X_test, y_pred, color='red', label='Predicted Function')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()
하이퍼파라미터 최적화
이전 단계에서는 alpha 와 gamma 에 대한 기본 하이퍼파라미터 값을 사용했습니다. 모델 성능을 개선하기 위해 그리드 검색을 사용하여 이러한 하이퍼파라미터를 최적화할 수 있습니다.
from sklearn.model_selection import GridSearchCV
## 파라미터 그리드 정의
param_grid = {'alpha': [1e-3, 1e-2, 1e-1, 1, 10],
'gamma': [1e-3, 1e-2, 1e-1, 1, 10]}
## 그리드 검색 수행
grid_search = GridSearchCV(krr, param_grid, cv=5)
grid_search.fit(X, y)
## 최적 하이퍼파라미터 가져오기
best_alpha = grid_search.best_params_['alpha']
best_gamma = grid_search.best_params_['gamma']
best_krr = grid_search.best_estimator_
print("최적 alpha:", best_alpha)
print("최적 gamma:", best_gamma)
최적화된 예측 함수 시각화
마지막으로, 최적화된 하이퍼파라미터를 사용하여 예측 함수를 시각화해 보겠습니다.
## 최적화된 모델을 사용하여 타겟 값 예측
y_pred_opt = best_krr.predict(X_test)
## 데이터와 최적화된 예측 함수 시각화
plt.scatter(X, y, color='blue', label='Data')
plt.plot(X_test, y_pred_opt, color='green', label='Optimized Predicted Function')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()
요약
이 실습에서는 커널 릿지 회귀 (KRR) 에 대해 배우고 Python 의 scikit-learn 라이브러리를 사용하여 구현하는 방법을 살펴보았습니다. 합성 데이터를 생성하고, KRR 모델을 데이터에 맞추고, 예측 함수를 시각화하고, 그리드 검색을 사용하여 하이퍼파라미터를 최적화했습니다. KRR 은 변수 간의 복잡한 관계를 처리할 수 있는 강력한 비선형 회귀 방법입니다.