見出し画像

Scikit learn のチュートリアル vol.3

こんにちは。
Scikit learn の本家をたどり、User Guide を1から順に進めてます!
vol.3では、Linear Model の 1.1.5. Elastic-Net にトライします!

1.1. Linear Models

1.1.4. 以前の説明はこちらをご覧ください。

1.1.5. Elastic-Net

Elastic-Net は、scikit-learnライブラリ内の線形モデルの1つであり、複数の回帰問題を同時に解決するためのモデルです。このモデルは、下記のような特徴を持ちます。

  1. Elastic-Netは、Lasso(L1正則化)とRidge(L2正則化)の2つの正則化手法を組み合わせています。この組み合わせにより、モデルはスパース性(多くの係数がゼロである)を保ちながら、Ridgeのような正則化効果も維持できます。このため、Elastic-Netは特徴選択とモデルの複雑さの制御をバランスよく行うことができます。

  2. Elastic-Netでは、L1正則化とL2正則化の強度を調整するためのパラメータとして「l1_ratio」という値を使用します。このパラメータを調整することで、L1正則化とL2正則化の比率を変更できます。l1_ratioが0の場合、モデルは純粋なRidge回帰になり、l1_ratioが1の場合、純粋なLasso回帰になります。中間の値を選ぶことで、Elastic-Netの振る舞いを調整できます。

  3. Elastic-Netは、特徴間に相関がある場合に特に有用です。Lassoは相関する特徴のうちの1つをランダムに選択する傾向があるため、情報が失われることがありますが、Elastic-Netは相関する特徴を同時に選択する可能性があります。

  4. LassoとRidgeのトレードオフを利用することで、Elastic-Netは回転に対するRidgeの安定性を一部継承します。これは、データの特徴のスケールや回転に対してモデルがロバストであるという利点をもたらします。

例:(Lasso and Elastic Net)

<補足>
itertools:標準ライブラリに含まれるモジュールで、イテレータやジェネレータを操作し、組み合わせ、フィルタリング、および変更するための便利な関数とクラスを提供するツールセットです。効率的なイテレータ操作を行うためのユーティリティ関数を提供し、反復処理に関連する多くの一般的なタスクを簡単に実行できるようにします。
Coordinate Descent(座標降下法):最適化アルゴリズムの一種であり、特に線形モデルや正則化モデルのトレーニングによく使用されます。このアルゴリズムは、最小化または最大化したい目的関数を、各変数または座標に対して単一の変数の更新ステップを繰り返すことによって最適化します。

<補足>
Pythonのmatplotlibライブラリにおけるカラーコード:
"b": 青色(Blue)
"r": 赤色(Red)
"g": 緑色(Green)
"c": シアン(Cyan)
"k": 黒色(Black)

今回は、Scikit learn のチュートリアル vol.1 にて学んだ2つの正則化モデル (L1: Lasso と L2: Ridge)のトレードオフを補うモデルとして、Elastic-Net が登場しました。Elastic-NetはL1とL2の両方の効果を利用しつつ、柔軟に調整できるモデルになっているようです。
次回も、scikit-learn(サイキット-ラーン)ライブラリ内の線形モデルついて引き続きトライします!

本ページの検証には、scikit-learn 1.3.0 を用いています。


この記事が気に入ったらサポートをしてみませんか?