最小二乗法は残差が正規分布に従うと仮定した場合の最尤法と同じだった。
最小二乗法は機械学習のパラメータ推定で広く使われています。
パラメータ推定とは、AIが予測する時に使う式の係数を一番良い値に決めることです。
AIの肝と言って良いでしょう。
これほど重要な最小二乗法ですが、実は最尤法と密接なつながりがあります。
どういうことなのでしょうか?
最小二乗法は残差の分散を最小にすること
以前の記事で標準偏差はデータのばらつきを表すことを解説しました。
標準偏差がばらつきを表すのに丁度いい理由をわかりやすく解説します。
標準偏差が大きいほど平均値から離れているデータが多くあるということです。
標準偏差の二乗が分散ですから、分散が大きいほど平均値から離れているデータが多くあるといっても同じことです。
最小二乗法とは、この分散が最も小さくなるようにパラメータを決める方法です。
例で示します。
作業者の人数により、作業の処理量が下記のように変わったとしましょう。
人数 x |
処理量 y |
4 | 60 |
5 | 85 |
9 | 127 |
これをグラフにするとこうなります。
点線で書いた直線が、人数xから処理量yを推定するのに一番当てはまりの良い式です。
この式の求め方は後で出てきますので、ここでは分からなくて大丈夫です。
この直線は一番当てはまりの良い式ですが、完璧ではありません。
3点すべてを通る直線を作ることは無理なので、妥協しています。
どうしても直線上からズレる点は出てきます。
そして、一番マシな妥協をするために、ズレの二乗の合計が一番小さな直線にしているのです。
下のグラフを見て下さい。
これら3つのズレの二乗の合計が一番小さくなるように式の係数を決めているのです。
係数とは上図にある式で12.571や15.238のことです。
係数のことをパラメータともいいます。
12.571は傾き、15.238はy切片と中学校で習いましたね。
最小二乗法では、このようにしてパラメータを決めるやり方です。
「ズレの二乗の合計」
どこかで出てきましたね。
そうです、分散です。
分散でいうズレとは平均値からのズレ(偏差)のことでした。
これに対して、最小二乗法でいうズレとは直線からのズレ(残差)のことです。
この違いはありますが、ズレの二乗和でばらつきを表している点は一緒です。
ですので、最小二乗法とはばらつき、つまり分散が一番小さくなるようにパラメータを決める方法ともいえます。
最小二乗法は残差が正規分布の場合の最尤法と同じ
なぜ、こんなに似ているのでしょうか?
それは偶然ではありません。
まず、安全在庫理論では需要が正規分布に従うことを仮定しています。
その上で、標準偏差の何個分かを安全在庫として持ちましょうという理論です。
正規分布の式を見てみましょう。
累乗部分に(x-μ)2があります。
これは各データと平均値の差(偏差)の二乗ということです。
データがn個あるとしましょう。
そして、それらn個のデータから「平均として一番尤もらしい」平均を求めたいとします。
これは、n個のデータをx1からxnとすると、
f(x1)f(x2)・・・f(xn)
の確率(尤度)が最大になるようなμを求めることと同じです。
これは最尤法という考え方で、詳しくはこちらの記事を参考にして下さい。
ポアソン分布のパラメータλをExcelソルバーを使って最尤法で求めてみた。
さて、この
f(x1)f(x2)・・・f(xn)
を計算するということは、eの累乗部分を足すということです。
指数部分には(x-μ)2が含まれていますので、
(x1-μ)2+(x2-μ)2+・・・+(xn-μ)2
を計算するということです。
なぜなら、指数の掛け算は累乗部分の足し算になるからです。
また、eの累乗部分にはマイナスが付いています。
ということは、
f(x1)f(x2)・・・f(xn)
の最大値を求めることは、
(x1-μ)2+(x2-μ)2+・・・+(xn-μ)2
の最小値を求めることと同じです。
ここで、最小二乗法の話しに戻ります。
最小二乗法では予測値とのズレ(残差)を最小化しようとします。
n個のデータx1からxnにとって、実測値と予測値の差が残差です。
ですので、yiをi番目の実測値、f(xi)をi番目の予測値とすると、
(f(x1)-y1)2+(f(x2)-y2)2+・・・+(f(xn)-yn)2
の最小値を求めることです。
つまり、最小二乗法は残差が正規分布に従うと仮定した場合の最尤法と同じことをやっているのです。
最小二乗法をExcelで解いてみる
では、具体的にどのように式のパラメータを計算しているのかを見ていきましょう。
式のパラメータは最初は何も分かりませんので、傾きはa、切片はbとします。
つまり式は
y=ax+b
です。
これを使ってズレ(残差)を表すには、各点の座標と、各点から直線上に下した垂線が交わる座標が必要ですが、次のようになります。
これで3つの残差が求まります。
それぞれy座標の差を取れば良いので、
60-(4a+b)
85-(5a+b)
127-(9a+b)
ですね。
しかし1つ目と3つ目はマイナスの値になってしまいます。
プラスとマイナスで打ち消し合ってしまうと残差の合計を表せませんので、それぞれ二乗した値を足し合わせます。
{60-(4a+b)}2+{85-(5a+b)}2+{127-(9a+b)}2
後は、この式の値が最小になるようなaとbを求める問題になります。
ここから式変形するには平方完成か偏微分の知識が必要になりますが、実務上は結果だけを知っていれば十分です。
a=(xとyの共分散)/(xの分散)
b=(yの平均)-(xの平均)×a
となります。
詳しくは、こちらを参照してみて下さい。
https://rikei-logistics.com/post-2729
これはエクセルで簡単に計算できて、次のようになります。
回帰式は
y=12.571x+15.238
になりました。
このように最小二乗法とは、回帰直線からのズレ(残差)の二乗和の合計が最小になるようにパラメータを決める方法です。
そしてパラメータは
a=(xとyの共分散)/(xの分散)
b=(yの平均)-(xの平均)×a
で計算できます。
「なんだ、機械学習なんて簡単じゃないか」
そう思うのはまだ早いのですが、残差の二乗和を最小化するという基本は同じです。
難しいのはパラメータを計算するところです。
この例ではxという1つの変数からyを推定するため単回帰と呼ばれるモデル式を作ったわけですが、実際には膨大な数の変数からyを推定することが多く、そのための数値計算が難しいのです。
そのために例えば勾配降下法などが知られています。
勾配降下法で最小値が見つかる理由を数式と視覚でわかりやすく解説
単回帰のパラメータの求め方については、公式を使う以外にもExcelを使って求められる方法が少なくとも6つあります。
こちらで解説しています。
【6つの方法を実演!】Excelで最小二乗法を計算する方法をわかりやすく