Ridge Regressor(回帰分析)【Pythonとscikit-learnで機械学習:第16回】

Ridge回帰によって、連続データを線形回帰分析する手法を、実装・解説します。

本記事ではRidge Regressorを実装します。

Ridge回帰はL2ノルムのペナルティを与える解析手法です。

これは回帰直線とデータの誤差に加えて、「係数w, bの2乗和」を誤差に加えるというペナルティ手法です。

このL2ノルムによって、係数wが非ゼロになりやすくなることが知られています。

(つまりどの特徴も重要視しようとします)

Ridge回帰分析は以下のscikit-learnマップの黒矢印に対応します。

[scikit-learnのマップ]

目的変数の量を求める→サンプル数10万以下→説明変数xの特徴量がどれも重要→[Ridge Regressor]

です。

Ridge Regressorの実装

実装して、SGDとの結果を比較します。

これまでと同様に、住宅価格のデータを使用して実装します。

被説明変数yは住宅価格の中央値です。

本記事では、全部の特徴量を使用した回帰を行います。

実装コードは以下の通りです。

結果は次の通りになります。

上記結果は、SGDの場合とRidgeの場合の回帰直線の係数を示しています。

ほとんど同じになっており、誤差も変わりません。

実装コードを解説します。

#解説6:Ridge Regressorを適用する——————————————-
clf_lasso= linear_model.Ridge(alpha=1.0)

ここでRidge回帰を指定しています。アルファはL2ノルムのペナルティの大きさを示しており、アルファが大きいほど正則化(ペナルティ具合)が大きくなります。

それでは「結局、Ridge Regressionって何をやっていたの?」を説明します。

Lasso Regressionの心

正確な情報は以下をご覧ください。

scikit-learnの回帰の解説ページ

scikit-learnのRidge Regressorの解説ページ

SGD回帰と同じく、重みw, bを変化させて、学習データと回帰直線の誤差が少なくなる方向へ学習させます。

ただし、L2ノルムのペナルティを誤差に加え、wの大きさがだいたい同じようになるようにします。

イメージは次の図の左側の通りです。

[引用 https://www.slideshare.net/yasunoriozaki12/prml-29439402]

左側のL2ノルムの場合、丸い形になるので、係数が0になりにくいという特徴があります。

以上、Pythonとscikit-learnで学ぶ機械学習入門|第16回:Ridge回帰での回帰分析でした。

次回はElasticNetによる回帰について説明します。

【目次】Python scikit-learnの機械学習アルゴリズムチートシートを全実装・解説
scikit-learnのアルゴリズムチートマップで紹介されている手法を、全て実装・解説してみました。 ...