最小二乗法のアルゴリズムを理解したのでメモ。そしてPythonで書いてみた。


概要
最小二乗法と正規方程式(normal equation)によってモデル関数を導き出す機械学習アルゴリズムを説明します。
はじめ具体的な数値で計算し、次に一般式を求め、最後にPythonで実装します。
最小二乗法って?
サンプルデータが当てはまるような関係式を導き出だして、未来を予測する方法を回帰分析といい、その代表的な手法の一つです。サンプルデータと式から得られる値の誤差が、最小になるような関係式を導き出します。
具体例
はつか大根の成長を予測するとします。
現在、4日目で、葉っぱが何センチ出ているかを、毎日測定しています。
1日目
2日目
3日目
4日目
$0.3$ cm
$1.9$ cm 
$2.8$ cm 
$4.3$ cm
このデータをグラフにしました。$x$ 軸が日数、$y$ 軸が葉っぱの長さです。
仮説の関数を1次関数とします。1次関数の方程式は
y = ax + b
なので、$a$ と $b$ の値を何にすると、いい感じの関数となるかを算出します。
イメージとしては、赤いグラフのように、出来る限りデータにフィットする1次関数を求めます。
まず、仮説関数 $y = ax + b $ から 0~4 日目 ( 日数は $x$ ) の $y$ の値を出して、実際の成長データとの誤差を出します。( 0日目は種を埋めた日 )
日数($x$)
0日目
1日目
2日目
3日目
4日目
記録
$0.0$cm 
$0.3$cm
$1.9$cm 
$2.8$cm 
$4.3$cm
式から算出($y$)
$b$
$a+b$
$2a+b$
$3a+b$
$4a+b$
誤差($y-$記録)
$b-0$
$(a+b)-0.3$
$(2a+b)-1.9$
$(3a+b)-2.8$
$(4a+b)-4.3$
誤差は、下のグラフのピンクの部分の長さのことです。
誤差がマイナスにならないように、2乗してから合計します。
誤差の合計を$J$とすると、以下のような計算になります。
J = b^2+((a+b)-0.3)^2+((2a+b)-1.9)^2+((3a+b)-2.8)^2+((4a+b)-4.3)^2\\
\\
=30a^2+20ab-59.4a+5b^2-18.6b+30.03
この$J$が最小となる$a$と$b$を求めれば、完了です。
$J$を$a$の…この記事の続きを読む

AINOW
人工知能専門メディアAINOW(エーアイナウ)です。人工知能を知り・学び・役立てることができる国内最大級の人工知能専門メディアです。2016年7月に創設されました。取材のご依頼もどうぞ。https://form.run/@ainow-interview
サイト名: Qiita

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する


Leave a Reply

Your email address will not be published.