<회귀> 엘라스틱넷 (ElasticNet)
Data Analyticsㅤ/ㅤMachine Learningㅤ

<회귀> 엘라스틱넷 (ElasticNet)

ElasticNet 

- 릿지모델과 라쏘모델의 하이브리드형이라고 생각하면 된다

- L1 Ratio (default = 0.5)

  • L1_ratio = 0 (L2 규제만 사용). 
  • L1_ratio = 1 (L1 규제만 사용). 
  • 0 < L1_ratio < 1 (L1 and L2 규제의 혼합사용)

 

Step

모델 학습

from sklearn.linear_model import ElasticNet

# ratio 설정
ratios = [0.2, 0.5, 0.8]

# 학습
for ratio in ratios:
    elasticnet = ElasticNet(alpha=0.5, l1_ratio=ratio)
    elasticnet.fit(x_train, y_train)
    pred = elasticnet.predict(x_test)
    # mse_eval함수는 자체적으로 만든 것
    mse_eval('ElasticNet(l1_ratio={})'.format(ratio), pred, y_test)

- 엘라스틱넷 중에서는 ratio가 0.8일 때 가장 좋다

 

ratio별로 coefficient 확인

- L1 ratio가 0.2일 때

elsticnet_20 = ElasticNet(alpha=5, l1_ratio=0.2)
elsticnet_20.fit(x_train, y_train)
elasticnet_pred_20 = elsticnet_20.predict(x_test)

plot_coef(x_train.columns, elsticnet_20.coef_)

 

- L1 ratio가 0.8일 때

elsticnet_80 = ElasticNet(alpha=5, l1_ratio=0.8)
elsticnet_80.fit(x_train, y_train)
elasticnet_pred_80 = elsticnet_80.predict(x_test)

# coefficient 시각화
plot_coef(x_train.columns, elsticnet_80.coef_)
# coefficient 확인
elsticnet_80.coef_