線形回帰⑥ (LASSO回帰モデル)

今回はLASSO回帰モデルを構築します。

LASSO回帰モデルは、重みが大きくなるのを抑えるために重回帰による各変数の重みの算出時に正則化項というペナルティを設定しています。

この正則化項はL1ノルムと言われ、変数の重みを0に近づけると同時に、特定の変数の重みを完全に0にする効果があります。

この効果によって過学習を抑えられるだけでなく、一部の変数の重みが0になることでモデルがシンプルになり、分かりやすくなるというメリットもあります。

LASSO回帰モデルの構築

LASSO回帰モデルを構築するためにはscikit-learnに用意されているLassoクラスを使用します。

データは前回の重回帰分析でスケーリングしたものを使います。

[Google Colaboratory]

1
2
3
from sklearn.linear_model import Lasso

lasso = Lasso().fit(X_train_scaled, y_train)

続いて予測値を出力します。

[Google Colaboratory]

1
2
3
4
5
y_train_pred = lasso.predict(X_train_scaled)
y_test_pred = lasso.predict(X_test_scaled)

print(y_train_pred[:5])
print(y_test_pred[:5])

[実行結果]

予測値を確認すると、前回重回帰分析で出力されたデータ形式とは違うようです。

データ形式の変更

データ形式をこれまで出力したものと合わせておきます。

Numpyのexpand_dims関数を使い次元を追加します。

第1引数にデータを指定し、第2引数に次元を追加する位置を指定します。

[Google Colaboratory]

1
2
3
4
5
y_train_pred = np.expand_dims(y_train_pred, 1)
y_test_pred = np.expand_dims(y_test_pred, 1)

print(y_train_pred[:5])
print(y_test_pred[:5])

[実行結果]

次回は、今回構築したLASSO回帰モデルの評価を行います。