2020年8月8日Lasso回帰でパラメータのalphaを変化させるとどんな風に特徴量が選択されていくのか見てみました。特徴量が選択されて削減されると言っても、どの特徴量が削られていくか気になるね。Lasso回帰でもalphaというパラメータが存在していて、この値を大きくすると、過学習を防ぐように働くとのことです。alphaの値が大きいと、どのように重みが変化しているのかをボストンの住宅価格データでみてみました。以前行った手動での特徴量選択と比較してみたいと思いました。特徴量選択については、こちらの記事もご参考ください。今までは特徴量多ければ良いと思ってたけど、色々調べてたらどうやら違うみたい。確かに、多ければ一概にいいってものでもなさそうだね。目次プログラムで確認してみよう今回、Lasso回帰がどんな風に特徴量を削減していくのか、という点をみてみようと思いましたので、特徴量選択を行わないボストン価格データを「X」とします。訓練データとテストデータに分割後、特徴量を手動で選択したものを「X_train_select」と「X_test_select」としています。分割後に特徴量選択を行うように変更したのは、「X_train」と「X_train_select」が同じtrain_test_splitのデータを元にするようにしたかったからです。Lasso回帰には「X_train」を使用、線形回帰には「X_train_select」を利用することで、それぞれの特徴量選択の比較ができます。12]]alpha=0.1まずは、Lasso回帰のalpha=0.1です。パラメータのmax_iterはこのくらいの数値を入れておくと警告が出ません。-6.11339673e-01]0.1程度だとまだ0になる重みはないね。alpha=1次に、alpha=1にした時です。-0.80925382]影響が少ないと判断された、INDUSとCHAS、NOXが0になりました。12:LSTATalpha=10次にalpha=10です。-0.59952539]かなり多くの特徴量が0となってしまいました。手動で選択した特徴量「RM」はかなり有力な特徴量だと思いましたが、ここでは0となっています。決定係数は52%となり、精度もかなり悪くなってしまいました。-0.56134587]今回は、手動で特徴量選択をしたものより、alpha=0.1のLasso回帰の方が決定係数がよくなりました。LassoCVというものもあるRidge回帰の時もRidgeCVという、複数のパラメータ全ての交差検証を行っていちばん精度の良いパラメータ設定にしてくれるsciit-learnの便利機能がありました。Lasso回帰にも存在していて、これも同じように利用することができます。先ほど個別にalphaを0.1〜10と三回に分けて記載していたものが次のように短縮できます。-6.11339673e-01]切片23.139614734437025一番よかったalpha=0.1で精度が69%と先ほどの結果に一致しています。いくつかのLasso回帰パラメータで一番良いものを選択したい場合、このように簡略化することができます。pythonよかったらシェアしてね!URLをコピーしました!URLをコピーしました!パンダの中のパンダサウンドクリエータ、プログラマひたすら脳内の思考と雑念を記事にしている気が・・・ご容赦ください!音楽、プログラム、自分の作品となる何かが作れる日を目指して邁進中です。