最小二乗法~一時回帰と二次回帰~

最小二乗法を用いて,一次関数と二次関数を回帰する手順を示す.

$N$個のデータ$(x_1,y_1)\cdots(x_N,y_N)$を線形回帰することを考える.求めたい直線を$y=ax+b$とおく.ここで, \begin{align} J=\sum_{i=1}^{N}\Bigl(y_i-(ax_i+b)\Bigr)^2 \end{align} を最小にする$a,b$を求める.ゆえに, \begin{align} \dfrac{\partial J}{\partial a}=0,\quad\dfrac{\partial J}{\partial b}=0 \end{align} を解いて,$a,b$を定めればよい.上式を$a,b$でそれぞれ偏微分すると,次式が求まる. \begin{align} &\dfrac{\partial J}{\partial a}=\sum_{i=1}^{N}(y_i-ax_i-b)(-x_i)=a\sum_{i=1}^{N}x^2_i+b\sum_{i=1}^{N}x_i-\sum_{i=1}^{N}x_iy_i \notag\\ &\dfrac{\partial J}{\partial b}=\sum_{i=1}^{N}(y_i-ax_i-b)(-1)=a\sum_{i=1}^{N}x_i+b\sum_{i=1}^{N}1-\sum_{i=1}^{N}y_i \end{align} これより,次の「正規方程式」が求まる. \begin{align} \left (\begin{array}{cc} \sum_{i=1}^{N}x^2_i & \sum_{i=1}^{N}x_i \\ \sum_{i=1}^{N}x_i & \sum_{i=1}^{N}1 \\ \end{array} \right)\left(\begin{array}{cc} a \\b \\ \end{array} \right) = \left (\begin{array}{cc} \sum_{i=1}^{N}x_iy_i \\ \sum_{i=1}^{N}y_i \\ \end{array}\right) \end{align} これを解いて,$a,b$が求まる.

2次回帰を行いたい場合は,求めたい2次式を$y=ax^2+bx+c$とし, \begin{align} J=\sum_{i=1}^{N}\Bigl(y_i-(ax^2_i+bx_i+c)\Bigr)^2 \end{align} を最小にする$a,b$を求める.ゆえに, \begin{align} \dfrac{\partial J}{\partial a}=0,\quad\dfrac{\partial J}{\partial b}=0,\quad\dfrac{\partial J}{\partial c}=0 \end{align} を解いて,$a,b$を定めればよい.上式を$a,b$でそれぞれ偏微分すると,次式が求まる. \begin{align} &\dfrac{\partial J}{\partial a}=\sum_{i=1}^{N}(y_i-ax^2_i-bx_i-c)(-x^2_i)=a\sum_{i=1}^{N}x^4_i+b\sum_{i=1}^{N}x^3_i+c\sum_{i=1}^{N}x^2_i-\sum_{i=1}^{N}x^2_iy_i \notag\\ &\dfrac{\partial J}{\partial b}=\sum_{i=1}^{N}(y_i-ax^2_i-bx_i-c)(-x_i)=a\sum_{i=1}^{N}x^3_i+b\sum_{i=1}^{N}x^2_i+c\sum_{i=1}^{N}x_i-\sum_{i=1}^{N}x_iy_i \notag\\ &\dfrac{\partial J}{\partial c}=\sum_{i=1}^{N}(y_i-ax^2_i-bx_i-c)(-1)=a\sum_{i=1}^{N}x^2_i+b\sum_{i=1}^{N}x_i+c\sum_{i=1}^{N}1-\sum_{i=1}^{N}y_i \end{align} ゆえに次の正規方程式が求まる. \begin{align} \left (\begin{array}{ccc} \sum_{i=1}^{N}x^4_i & \sum_{i=1}^{N}x^3_i & \sum_{i=1}^{N}x^2_i \\ \sum_{i=1}^{N}x^3_i & \sum_{i=1}^{N}x^2_i & \sum_{i=1}^{N}x_i \\ \sum_{i=1}^{N}x^2_1 & \sum_{i=1}^{N}x_i & \sum_{i=1}^{N}1 \ \end{array} \right)\left(\begin{array}{cc} a \\ b \\ c \\ \end{array} \right) = \left (\begin{array}{cc} \sum_{i=1}^{N}x^2_iy_i \\ \sum_{i=1}^{N}x_iy_i \\ \sum_{i=1}^{N}y_i \\ \end{array}\right) \end{align} これを解いて,$a,b,c$が求まる.