Python でのリッジ回帰 (ステップバイステップ)


リッジ回帰は、データに多重共線性が存在する場合に回帰モデルを近似するために使用できる方法です。

簡単に言うと、最小二乗回帰は、残差二乗和 (RSS) を最小化する係数推定値を見つけようとします。

RSS = Σ(y i – ŷ i )2

金:

  • Σ : 和を意味するギリシャ語の記号
  • y i : i 番目の観測値の実際の応答値
  • ŷ i : 重回帰モデルに基づく予測応答値

逆に、リッジ回帰は以下を最小限に抑えようとします。

RSS + λΣβ j 2

ここで、 jは 1 からp 個の予測子変数であり、λ ≥ 0 です。

方程式のこの 2 番目の項は、撤退ペナルティとして知られています。リッジ回帰では、可能な限り最小の MSE テスト (平均二乗誤差) を生成する λ の値を選択します。

このチュートリアルでは、Python でリッジ回帰を実行する方法の段階的な例を示します。

ステップ 1: 必要なパッケージをインポートする

まず、Python でリッジ回帰を実行するために必要なパッケージをインポートします。

 import pandas as pd
from numpy import arange
from sklearn. linear_model import Ridge
from sklearn. linear_model import RidgeCV
from sklearn. model_selection import RepeatedKFold

ステップ 2: データをロードする

この例では、33 台の異なる車に関する情報が含まれるmtcarsというデータセットを使用します。応答変数としてhp を使用し、予測変数として次の変数を使用します。

  • mpg
  • 重さ
  • たわごと
  • qsec

次のコードは、このデータセットをロードして表示する方法を示しています。

 #define URL where data is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data_full = pd. read_csv (url)

#select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]

#view first six rows of data
data[0:6]

	mpg wt drat qsec hp
0 21.0 2.620 3.90 16.46 110
1 21.0 2.875 3.90 17.02 110
2 22.8 2.320 3.85 18.61 93
3 21.4 3.215 3.08 19.44 110
4 18.7 3,440 3.15 17.02 175
5 18.1 3.460 2.76 20.22 105

ステップ 3: リッジ回帰モデルを当てはめる

次に、sklearn のRidgeCV()関数を使用してリッジ回帰モデルを適合し、 RepeatedKFold()関数を使用して k 分割交差検証を実行し、ペナルティ項に使用する最適なアルファ値を見つけます。

注: Python では「ラムダ」の代わりに「アルファ」という用語が使用されます。

この例では、k = 10 分割を選択し、相互検証プロセスを 3 回繰り返します。

また、RidgeCV() はデフォルトでアルファ値 0、1、1、10 のみをテストすることに注意してください。ただし、独自のアルファ範囲を 0 から 1 まで 0.01 刻みで設定できます。

 #define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]

#define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )

#define model
model = RidgeCV(alphas= arange (0, 1, 0.01), cv=cv, scoring=' neg_mean_absolute_error ')

#fit model
model. fit (x,y)

#display lambda that produced the lowest test MSE
print( model.alpha_ )

0.99

テストの MSE を最小化するラムダ値は0.99であることがわかります。

ステップ 4: モデルを使用して予測を行う

最後に、最終リッジ回帰モデルを使用して、新しい観測値についての予測を行うことができます。たとえば、次のコードは、次の属性を持つ新しい車を定義する方法を示しています。

  • mpg: 24
  • 重量: 2.5
  • 価格: 3.5
  • qsec: 18.5

次のコードは、適合リッジ回帰モデルを使用して、この新しい観測値のhp値を予測する方法を示しています。

 #define new observation
new = [24, 2.5, 3.5, 18.5]

#predict hp value using ridge regression model
model. predict ([new])

array([104.16398018])

入力された値に基づいて、モデルはこの車の馬力値が104.16398018になると予測します。

この例で使用されている完全な Python コードは、 ここで見つけることができます。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です