자기계발/Python

[빅데이터분석기사] 25 릿지회귀모델

호등 2022. 6. 24. 17:51
반응형

릿지 회귀모델(Ridge)

선형회귀분석의 기본원리를 따르나 가중치(회귀계수) 값을 최대한 작게 만들어, 즉 0에 가깝게 만들어 모든 독립변수(특성)가 종속변수(레이블)에 미치는 영향을 최소화하는 제약(regularization)을 반영한 회귀모델이다.

각 특성의 영향을 최소화하여 훈련데이터에 과대적합되지 않도록 제약이 있는 모델이며 다항곡선 추정도 가능하다.

핵심 하이퍼파라미터는 alpha 값, 기본값은 1, 0에 가까울수록 규제를 하지 않고 숫자가 커질수록 더 많은 규제를 한다.

 

scikit-learn

릿지 회귀모델은 사이킷런의 linear_model 중 Ridge이다.

 

1) 기본모델 적용

from sklearn.linear_model import Ridge
model=Ridge()
model.fit(X_scaled_train, y_train)

pred_train=model.predict(X_scaled_train)
model.score(X_scaled_train, y_train)

sklearn.linear_model로 부터 Ridge 라이브러리를 불러왔다. 

정규화한 훈련데이터셋을 학습(fit)하고 예측값을 도출 및 저장(predict)한 후 정확도를 구했다.

정확도 약 54.6%로 선형회귀모델과 거의 유사하다.

 

2) RMSE 오차 구하기

#RMSE(Root Mean Squared Error)
import numpy as np
from sklearn.metrics import mean_squared_error
MSE_train = mean_squared_error(y_train,pred_train)
MSE_test = mean_squared_error(y_test,pred_test)

print(np.sqrt(MSE_train))
print(np.sqrt(MSE_test))

훈련데이터 오차는 64,342, 테스트데이터오차는 63,219로 나타났다.

 

3) Grid Search

#Grid Search
param_grid = {'alpha':[1e-4, 1e-3, 1e-2, 0.1, 0.5, 1.0, 5.0, 10.0]}
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(Ridge(),param_grid,cv=5)
grid_search.fit(X_scaled_train,y_train)

print("Best Parameter:{}".format(grid_search.best_params_))
print("Best Score:{:.4f}".format(grid_search.best_score_))
print("TestSetScore:{:.4f}".format(grid_search.score(X_scaled_test, y_test)))

alpha값을 0.0001, 0.001, 0.01, 0.1, 0.5, 1, 5, 10 총 11가지로 설정하여 그리드탐색을 했다.

최적의 하이퍼파라미터는 alpha가 0.1일 때로 규제가 작을 때 더 좋은 모델로 확인된다.

 

4) Random Search

#Random Search
from scipy.stats import randint
param_distribs = {'alpha':randint(low=0.0001,high=100)}
from sklearn.model_selection import RandomizedSearchCV
random_search=RandomizedSearchCV(Ridge(),param_distributions=param_distribs,cv=5)
random_search.fit(X_scaled_train, y_train)

print("Best Parameter:{}".format(random_search.best_params_))
print("Best Score:{:.4f}".format(random_search.best_score_))
print("TestSetScore:{:.4f}".format(random_search.score(X_scaled_test, y_test)))

랜덤탐색으로 alpha 값을 0.0001~100 사이에서 무작위로 100번 뽑아 릿지 회귀모델을 적용했다.

최적의 하이퍼파라미터는 alpha = 1일 때, 정확도는 각각 54.5%, 56.2%가 나왔다.

반응형