반응형
라쏘 회귀모델(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%로 확인된다.
반응형
'자기계발 > Python' 카테고리의 다른 글
[빅데이터분석기사] 28 군집분석 (0) | 2022.06.25 |
---|---|
[빅데이터분석기사] 27 엘라스틱넷 (0) | 2022.06.25 |
[빅데이터분석기사] 25 릿지회귀모델 (0) | 2022.06.24 |
[빅데이터분석기사] 24 선형회귀모델 (0) | 2022.06.24 |
[빅데이터분석기사] 23 앙상블 스태킹 (0) | 2022.06.24 |