社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

単回帰分析の解を求めるのに最小二乗法を使うらしい

scikit-learn(サイキット・ラーン)を使うと、単回帰分析を(なんとなく)手軽にできました。

ただ、ライブラリに頼りっぱなしではなくて、そのアルゴリズムや計算をある程度理解したいと言う想いがあります。
使わないで計算で求める場合、”最小二乗法”を使うようですが、"最小二乗法"は聞いた覚えはあるけど、どんなものであったか覚えていません。

自分なりに分かり易かったのは以下の図で、存在している全てのデータからなるべく近い位置で引ける直線を求めることになるかと思います。

f:id:blueskyarea:20200111162831p:plain

ある直線は y = ax + b という一次方程式の形で表せるので、y - ax -b の絶対値がそのデータと直線の距離ということになります。
そして全てのデータからの距離を考える必要があるため、距離の二乗和が最小となるような解を求める必要があります。

\displaystyle{
J=\sum_{i=1}^n (y _ i-ax _ i-b)^ 2
}

この J を最小にする直線の a (傾き) と b(切片) を求めれば良いことになると思われます。
たしかにその直線であれば、そのデータの説明変数から目的変数を推測することができそうです。
これを求めるためには”偏微分”というキーワードが出てきました。
引き続き調べて、次は出来ればプログラム書いてみます。