最小二乗法

前回、機械学習のアルゴリズムの一つ「線形回帰」について説明しました。今回は線形回帰を求める方法である「最小二乗法」について説明します。

前回説明した上図にある赤線を求めるために下記の数式を求める方法になります。

$$h_θ(x)= θ_0+θ_1x$$

 

最小二乗法(least squares method)

上記のパラメータであるθの0とθの1を求めればhの関数を作成することができます。どのようにしてデータに適合する関数を作成するのか、これはxという入力に対して、yという出力(予測値)が、h関数の答えとの誤差を最小にすればよいわけです。上記の図の赤い線はどの点に対しても一番差が小さくなるように線を引いています。それを算出する式が下記のものになります。

$$J(θ_0, θ_1) = \frac { 1 }{ 2m } \sum _{ i=1 }^{ m } (h_θ(x)^{(i)} – y^{(i)} )^2$$

この式で最小値を求めればよいです。(一番小さい誤差を求めることが目的です。)
難しく考える必要はなく、中身から見ていくと「h関数の答え(予測値)」から、「訓練セットの出力であるyの値(正解値)」を引きます。その引いた時に線形回帰より上にあれば、下にある場合もあるので、引いた値がプラスやマイナスになってしまわないように二乗します。そして全訓練データの誤差の最小値を求めるためにシグマで訓練データセット分(m)計算しているだけです。最後に2mで割ることで平均として計算を楽にしているということになります。

J(θ0, θ1)で誤差が最小値になるθ0、θ1を求めることができれば、h関数のイメージで出てきた赤い線を求めることができます。
最小値の求め方のイメージですが、まずh関数を代入すると下記の数式になります。

$$J(θ_0, θ_1) = \frac { 1 }{ 2m } \sum _{ i=1 }^{ m } ((θ_0+θ_1x^{(i)}) – y^{(i)} )^2$$

ここからxとyはデータセットとして値が入っていますので、J関数とθ0とθ1の三次元ということがわかります。三次元の二次関数になりますので、そこでJ関数の最小値を求めれば良いということになります。下記の画像は簡単なイメージです。

 

 

次回ではこの最小値を求める方法である「最急降下法」について説明します。