자기계발/Python

[빅데이터분석기사] 26 라쏘회귀모델

호등 2022. 6. 25. 08:13
반응형

라쏘 회귀모델(Lasso)

라쏘(Lasso) 회귀모델은 릿지회귀모델과 유사하게 특성의 계수값을 0에 가깝게 하지만 실제 중요하지 않은 변수의 계수를 0으로 만들어 불필요한 변수를 제거하는 모델이다.

 

scikit-learn

라쏘(Lasso)회귀모델은 사이킷런의 linear_model 중 Lasso이다.

 

alph값이 하이퍼파라미터이며, 디폴트값은 alpha=1 이다.

alpha값이 커지면 계수를 0에 가깝게 제약하여 훈련데이터의 정확도는 낮아지지만 일반화에는 기여한다. 반면 alpha값이 0에 가까울수록 선형회귀와 유사하게 작용한다.

 

1) 기본모델 적용

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

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

pred_test = model.predict(X_scaled_test)
model.score(X_scaled_test, y_test)

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

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

테스트, 훈련 데이터셋의 정확도는 각각 54.6%, 56.3%로 확인된다.

 

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))

RMSE는 훈련데이터 64,340, 테스트데이터는 63,220으로 확인된다.

 

3) Grid Search

#Grid Search
param_grid={'alpha':[0.000001,0.00001,0.0001,0.001,0.01,0.1,0.0,0.5,1.0,2.0,3.0]}
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(Lasso(),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("TestSet Score:{:.4f}".format(grid_search.score(X_scaled_test, y_test)))

alpha값을 0.000001부터 3.0까지 11가지로 설정하여 그리드탐색을 진행했다.

분석결과 최적의 하이퍼파라미터는 alpha가 0.5일때이며 정확도는 각각 54.5, 56.2%로 나왔다.

 

4) Random Search

from scipy.stats import randint
param_distribs = {'alpha':randint(low=0.00001, high=10)}
from sklearn.model_selection import RandomizedSearchCV
random_search=RandomizedSearchCV(Lasso(),param_distributions=param_distribs,n_iter=100,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("TestSet Score:{:.4f}".format(random_search.score(X_scaled_test, y_test)))

랜덤탐색에서 alpha값 0.00001~10 사이에서 무작위 100번 추출하여 라쏘회귀모델을 적용했따.

최적의 하이퍼파라미터는 alpha가 1일때, 정확도는 각각 54.5, 56.3%로 확인된다.

 

반응형