今回は最小二乗法を紹介します。
最小二乗法とは、データ群とモデル(関数)の二乗誤差を最小にするパラメータを求める手法で、回帰問題等でよく用いられる手法です。
今回は単回帰の最もシンプルな例を用います。
少し数式が多くなりますが丁寧に解説していきます。
二乗誤差
まず最小化したい二乗誤差ですが、
これはモデル(関数)と実際のデータと差(誤差)を二乗した誤差です。
例えば以下のようなデータがあります。
そして、今回は線形モデル\(y=ax+b\)によって表現したいとします。
このときのモデルとデータとの二乗誤差は、
この図の\(E_i\)の総和がモデルと各データとの二乗誤差の和が二乗誤差となります。
\begin{eqnarray}
E &=& E_1 + E_2 + E_3 + E_4 + E_5 \\
&=& \bigl(y_1- (ax_1+b) \bigr)^2+ \bigl(y_2- (ax_2+b) \bigr)^2+ \bigl(y_3- (ax_3+b) \bigr)^2 \\
&+& \bigl(y_4- (ax_4+b) \bigr)^2 + \bigl(y_5- (ax_5+b) \bigr)^2 \\
&=& \sum_{i=1}^{5}\bigl(y_i- (ax_i+b) \bigr)^2 \\
\end{eqnarray}
$$
これをデータがn個の場合で一般化すると
\begin{eqnarray}
E &=& \sum_{i=1}^{n}\bigl(y_i- (ax_i+b) \bigr)^2\\
&=& \sum_{i=1}^{n}\bigl(y_i- ax_i-b) \bigr)^2
\end{eqnarray}
$$
これを二乗誤差と言います。
なぜ、誤差に二乗するのかというと、単純な誤差(これを絶対誤差という)だと 誤差を総和誤差同士で打ち消してしまい、誤差が消えて可能性があるからです。
最小二乗法では、この二乗誤差を最小化するようなパラメータを求めます。
最小二乗法の手順
では、先程の二乗誤差を最小化するパラメータを求めてみましょう。
手順としては、以下のようになります。
- 二乗誤差をパラメータ\(a\), \(b\)によって微分(偏微分)し、勾配が0となる2つの方程式を得る
- 2つの連立方程式を解いて、パラメータ\(a\), \(b\)を求める
では、最小二乗法によってパラメータ\(a\)と\(b\)を求めてみましょう。
まず、データの集合とモデルの誤差\(E\)は以下のようになります。
1. 二乗誤差をパラメータ\(a\), \(b\)によって微分し、勾配が0となる2つの方程式を得る
この二乗誤差を最小にする値は、
この二乗誤差の各パラメータ\(a\), \(b\)に対する勾配が0になるところを求めれば良いことがわかります。
まず、二乗誤差\(E\)をパラメータ\(a\)によって微分してみましょう。
同様にパラメータ\(b\)によって微分します。
2つの方程式(連立方程式)が得られました。
\begin{eqnarray}
-\sum_{i=1}^{n} x_iy_i +a\sum_{i=1}^{n}x^2_i + b\sum_{i=1}^{n}x_i = 0 \tag{1} \\
\sum^{n}_{i=1}y_i -a \sum^{n}_{i=1}x_i -nb = 0 \tag{2}
\end{eqnarray}
$$
この連立方程式を使って\(a\)と\(b\)を求めていきます。
2. 得られた連立方程式を解く
(1)式に\(\times n \)
\begin{eqnarray}
– n\sum^{n}_{i}x_i y_i + na \sum^{n}_{i} x^{2}_{i} + nb\sum^{n}_{i}x_i = 0 \tag{3}
\end{eqnarray}
$$
(2)式に\(\times \sum_{i}x_i\)
\begin{eqnarray}
\sum^{n}_{i=1}x_i\sum^{n}_{i=1}y_i -a (\sum^{n}_{i=1}x_i)^{2} -nb\sum^{n}_{i=1}x_i = 0 \tag{4}
\end{eqnarray}
$$
(3)+(4)は
\begin{eqnarray}
na\sum^n_{i=1} x_i^2 + \sum^n_{i=1} x_i \sum^n_{i=1} y_i -n \sum^n_{i=1} x_i y_i -a (\sum^n_{i=1} x_i)^2=0 \\\\
a(n\sum^n_{i=1} x_i^2 – (\sum^n_{i=1} x_i)^2) = -\sum^n_{i=1} x_i \sum^n_{i=1} y_i + n\sum^n_{i=1} x_i y_i \tag{5} \\
\end{eqnarray}
$$
(5)式をパラメータ\(a\)で整理すると
よって、
\begin{eqnarray}
a = \frac{\frac{1}{n}\sum^n_{i} x_i y_i-\bar{x}\bar{y}}{\frac{1}{n}\sum^n_{i} x_i^2 – \bar{x}^2}
\end{eqnarray}
$$
同様にパラメータ\(b\)についても求めます。
式(2)と先程求めた\(a\)から
\begin{eqnarray}
nb &=& \sum^n_{i} y_i -a \sum^n_{i} x_i \\
nb &=& n\bar{y} – a n\bar{x} & \scriptstyle{\bar{x}=\frac{1}{n}\sum_{i}^{n}x_i\text{から}} \\
\end{eqnarray}
$$
から、式を整理すると\(b\)は、
\begin{eqnarray}
b = \bar{y} – \bar{x} \frac{\frac{1}{n}\sum^n_{i} x_i y_i-\bar{x}\bar{y}}{\frac{1}{n}\sum^n_{i} x_i^2 – \bar{x}^2}
\end{eqnarray}
$$
\(a\)と\(b\)を求めることができました。
参考文献
イメージでつかむ機械学習入門 ~豊富なグラフ,シンプルな数学,Rで理解する~
コメント