科学の箱

科学・IT・登山の話題

機械学習

線形回帰とリッジ回帰とラッソ回帰の違い

投稿日:2019年10月14日 更新日:

用語

線形回帰

データから平均二乗誤差を最低にするパラメータΘを求めて、直線で回帰すること

$$ y = Θ_0 + Θ_1 \times x $$

コスト関数

損失関数とも呼ばれる。実際のデータと予想される近似式との誤差。この誤差が最低になれば近似式はデータに適合しているといえる。ただし適合しすぎると過学習と呼ばれ、一般化できなくなる。学習に使われているデータに対しては100%の適合となるが、新しいデータが来ると適合が悪くなる。これに対して未学習であればそもそも適合していないので予測に使えない。

目的変数・説明変数

下記の式で目的変数はyであり、説明変数はxである。

$$ y = Θ_0 + Θ_1 \times x $$

目的変数は予測したい変数となる。この値は説明変数に従属する。説明変数が変わると目的変数も一定の法則で変化する。

重み・係数

説明変数が目的変数に対して与える影響の大きさを表す。下記の式ではΘとなる。Θが大きければ該当の説明変数は目的変数に対して大きな影響を与える。

$$ y = Θ_0 + Θ_1 \times x $$

正則化

直線線形回帰に対して正則化項(罰則化項)と呼ばれる項目を追加することで全体のモデルを安定させ、過学習を防ぐ手法。リッジ回帰、ラッソ回帰の違いはこの正則化項の違いである。

スパース

説明変数が多い場合には、目的変数に対して影響が少ない変数を取り除きたい。一般的には係数が0に近いものを取り除くことになる。しかしモデルによってはそもそも構築ができないことがある。このような場合に有効となるのがスパースと呼ばれる手法である。スパースでは係数の計算をすると同時に、変数選択も実施するのでモデル構築に対して重みが0に近い変数の影響がなくなる。

 

リッジ回帰

リッジ回帰ではL2ノルムと呼ばれる正則化項をモデルに追加する。L2ノルムは重みの二乗の総和である。

リッジ回帰の特徴

  • 重みを0に近づけることで過学習を防ぐ
  • パラメータの数に対してデータが少ない時に適切な重みづけをする

正則項の働きかた

$$ E_Θ =  \sum_{i=1}^{n} (y_i – Θ_0 – Θ_1 \times x ) + η \times \sum_{j=1}^{n} Θ_j $$

今 $$ Θ_0  = 1、Θ_1 = 5 $$で100%適合するデータを考える。この時コスト関数は以下のようになる。

$$ E_Θ = 0 + ( 1 + 25 ) = 26 $$

次に $$ Θ_0  = 1、Θ_1 = 4 $$、損失部分が5となるデータを考える。この時コスト関数は以下のようになる。

$$ E_Θ = 5 + ( 1 + 16 ) = 21 $$

上記により適合が低い$$ Θ_0 = 1、Θ_1 = 4 $$がモデルとして選ばれることになる。これをリッジ回帰と呼ぶ。

リッジ回帰は重みを0へと近づけるように働く。

 

リッジ回帰

リッジ回帰ではL1ノルムと呼ばれる正則化項をモデルに追加する。L2ノルムは重みの絶対値の総和である。

リッジ回帰の特徴

  • ラッソ回帰と同じで重みを0にに近づける
  • 過学習を防ぐ

ラッソ回帰と違う点

  • 重みを0にすることで影響が小さい変数を取り除くことができる

参考

 

メタ情報

inarticle



メタ情報

inarticle



-機械学習

執筆者:


comment

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

関連記事

no image

Pythonではじめる機械学習 – 多様体学習

多様体学習 次元削減に利用できる手法として主成分分析がある。これは柔軟であり、すぐに実装可能な次元削減アルゴリズムの一つである。しかし一つだけ問題がある。それは主成分分析に適用できるデータは線形のみで …

no image

DictVectorizerを使ってカテゴリデータについて特徴抽出をする

都市における温度データを考える。 measure = [ {‘city’: ‘Dubai’, ‘temperature’: 33.}, {‘city’: ‘London’, ‘temperature’ …

no image

R Dataset – bone

データの説明 261人の子供たちから得られた年齢別骨密度。 フォーマット idnum: 識別コード age: 測定時の年齢 gender: 性別 spnbmd: 骨密度 チェック テーブル全体について …

no image

pythonのデータ分析ライブラリで遊んでみる。

こちらを参考にしてPythonのデータ分析用のライブラリをそろえてみた。 まずはお手軽にヒストグラムを書いてみる。コマンドラインからipythonを立ち上げる。 ipython –pylab &#8 …

no image

手書き数字のデータセットについてイメージを確認

sklearnには手書き数字のデータが用意されている。このデータはイメージの分類モデルを学ぶためによいスタートである。今回はこのバイナリデータを読み込み、イメージとして確認する。 内容 load_di …

2019年10月
« 9月   11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー