鳥の巣箱

ネトゲしたり、機械いじったり、ソフト書いたり、山篭ったり、ギャンブルしたりする人

最小二乗法の考え方と導出~2次関数編~

birdhouse.hateblo.jp

これの続きです。
前回は直線に関して導出しましたが、2次関数の場合を考えてみます。


基本的な考えかたは前回と同じですが、今回はかなり計算量が多いです。
まず、式自体はy=ax^2+bx+cの形になるとして、差分の評価は
 \displaystyle ε(a,b,c)=\sum_{i=0}^n (y_i-ax_i^2-bx_i-c)^2
と考えることができます。

今度は変数が3つの関数なので、それぞれで偏微分する必要があります。
\displaystyle \frac{\partial ε(a,b,c)}{\partial a}= -2\sum_{i=0}^n x_i^2(y_i-ax_i^2-bx_i-c)
\displaystyle \frac{\partial ε(a,b,c)}{\partial b}= -2\sum_{i=0}^n x_i(y_i-ax_i^2-bx_i-c)
\displaystyle \frac{\partial ε(a,b,c)}{\partial c}= -2\sum_{i=0}^n (y_i-ax_i^2-bx_i-c)
これらを0にする連立方程式を考える。
{\displaystyle 
\begin{eqnarray}
  \left\{
    \begin{array}{l}
      \displaystyle -2\sum_{i=0}^nx_i^2(y_i-ax_i^2-bx_i-c)=0\\
      \displaystyle -2\sum_{i=0}^nx_i(y_i-ax_i^2-bx_i-c)=0\\
     \displaystyle -2\sum_{i=0}^n(y_i-ax_i^2-bx_i-c)=0
    \end{array}
  \right.
\end{eqnarray}
}

{\displaystyle 
\begin{eqnarray}
  \left\{
    \begin{array}{l}
      \displaystyle \sum_{i=0}^n x_i^2y_i-ax_i^4-bx_i^3-cx_i^2=0\\
      \displaystyle \sum_{i=0}^n x_iy_i-ax_i^3-bx_i^2-cx_i=0\\
     \displaystyle \sum_{i=0}^n y_i-ax_i^2-bx_i-c=0
    \end{array}
  \right.
\end{eqnarray}
}

{\displaystyle 
\begin{eqnarray}
  \left\{
    \begin{array}{l}
      \displaystyle a\sum_{i=0}^nax_i^4+b\sum_{i=0}^nx_i^3+c\sum_{i=0}^nx_i^2=\sum_{i=0}^nx_i^2y_i\\
      \displaystyle a\sum_{i=0}^nx_i^3+b\sum_{i=0}^nx_i^2+c\sum_{i=0}^nx_i=\sum_{i=0}^nx_iy_i\\
     \displaystyle a\sum_{i=0}^nx_i^2+b\sum_{i=0}^nx_i+c\sum_{i=0}^n1=\sum_{i=0}^ny_i
    \end{array}
  \right.
\end{eqnarray}
}

両辺をnで割る。
{\displaystyle 
\begin{eqnarray}
  \left\{
    \begin{array}{l}
      a\bar{x^4}+b\bar{x^3}+c\bar{x^2}=\bar{x^2y}\\
      a\bar{x^3}+b\bar{x^2}+c\bar{x}=\bar{xy}\\
      a\bar{x^2}+b\bar{x}+c=\bar{y}
    \end{array}
  \right.
\end{eqnarray}
}

行列で書き直す。

  \left(
    \begin{array}{ccc}
      \bar{x^4} & \bar{x^3} & \bar{x^2} \\
      \bar{x^3} & \bar{x^2} & \bar{x} \\
      \bar{x^2} & \bar{x} & 1
    \end{array}
  \right)
  \left(
    \begin{array}{ccc}
      a\\
      b\\
      c
    \end{array}
  \right)
=
  \left(
    \begin{array}{ccc}
      \bar{x^2y}\\
      \bar{xy}\\
      \bar{y}
    \end{array}
  \right)

ここで、

  A = \left(
    \begin{array}{ccc}
      \bar{x^4} & \bar{x^3} & \bar{x^2} \\
      \bar{x^3} & \bar{x^2} & \bar{x} \\
      \bar{x^2} & \bar{x} & 1
    \end{array}
  \right)
としたとき、両辺にA逆行列A^{-1}をかけることで、a,b,cを求めることができる。

  \left(
    \begin{array}{ccc}
      a\\
      b\\
      c
    \end{array}
  \right)
=
  \left(
    \begin{array}{ccc}
      \bar{x^4} & \bar{x^3} & \bar{x^2} \\
      \bar{x^3} & \bar{x^2} & \bar{x} \\
      \bar{x^2} & \bar{x}     & 1
    \end{array}
  \right)^{-1}
  \left(
    \begin{array}{ccc}
      \bar{x^2y}\\
      \bar{xy}\\
      \bar{y}
    \end{array}
  \right)

では次にA^{-1}を求める。
A^{-1}=\frac{1}{|A|}\widetilde{A}
なので、まず|A|を計算する。
\displaystyle |A|=\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}

次に余因子行列\widetilde{A}を求める。
iと列jを使って
Aの各成分をA_{ij}と表す。
次に行列Aから行iと列jを除いた行列をM_{ij}とすると
M_{11}=
 \left(
    \begin{array}{ccc}
      A_{22} & A_{23}\\
      A_{32} & A_{33}
    \end{array}
  \right)
M_{12}=
 \left(
    \begin{array}{ccc}
      A_{21} & A_{23}\\
      A_{31} & A_{33}
    \end{array}
  \right)
M_{13}=
 \left(
    \begin{array}{ccc}
      A_{21} & A_{22}\\
      A_{31} & A_{32}
    \end{array}
  \right)
M_{21}=
 \left(
    \begin{array}{ccc}
      A_{12} & A_{12}\\
      A_{33} & A_{33}
    \end{array}
  \right)
M_{22}=
 \left(
    \begin{array}{ccc}
      A_{11} & A_{13}\\
      A_{31} & A_{33}
    \end{array}
  \right)
M_{23}=
 \left(
    \begin{array}{ccc}
      A_{11} & A_{12}\\
      A_{31} & A_{32}
    \end{array}
  \right)
M_{31}=
 \left(
    \begin{array}{ccc}
      A_{12} & A_{13}\\
      A_{22} & A_{23}
    \end{array}
  \right)
M_{32}=
 \left(
    \begin{array}{ccc}
      A_{11} & A_{13}\\
      A_{21} & A_{23}
    \end{array}
  \right)
M_{33}=
 \left(
    \begin{array}{ccc}
      A_{11} & A_{12}\\
      A_{21} & A_{22}
    \end{array}
  \right)
つまり、
M_{11}=\bar{x^2}-\bar{x}\bar{x}
M_{12}=\bar{x^3}-\bar{x^2}\bar{x}
M_{13}=\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}
M_{21}=\bar{x^3}-\bar{x^2}\bar{x}
M_{22}=\bar{x^4}-\bar{x^2}\bar{x^2}
M_{23}=\bar{x^4}\bar{x}-\bar{x^3}\bar{x^2}
M_{31}=\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}
M_{32}=\bar{x^4}\bar{x}-\bar{x^3}\bar{x^2}
M_{33}=\bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3}
ここで、余因子行列\widetilde{A}の各成分\widetilde{A_{ij}}
\displaystyle \widetilde{A_{ij}}=(-1)^{i+j}|M_{ij}|であるので

\widetilde{A}=
  \left(
    \begin{array}{ccc}
      \bar{x^2}-\bar{x}\bar{x}              & -\bar{x^3}+\bar{x^2}\bar{x}            & \bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}   \\
      -\bar{x^3}+\bar{x^2}\bar{x}            & \bar{x^4}-\bar{x^2}\bar{x^2}          & -\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2}   \\
      \bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}   & -\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2}   & \bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3}
    \end{array}
  \right)
よって逆行列A^{-1}
\displaystyle
A^{-1}=\frac{1}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}
  \left(
    \begin{array}{ccc}
      \bar{x^2}-\bar{x}\bar{x}              & -\bar{x^3}+\bar{x^2}\bar{x}            & \bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}   \\
      -\bar{x^3}+\bar{x^2}\bar{x}            & \bar{x^4}-\bar{x^2}\bar{x^2}          & -\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2}   \\
      \bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}   & -\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2}   & \bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3}
    \end{array}
  \right)

最後にa,b,cを求める。
\displaystyle
  \left(
    \begin{array}{ccc}
      a\\
      b\\
      c
    \end{array}
  \right)
=\frac{1}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}
  \left(
    \begin{array}{ccc}
      \bar{x^2}-\bar{x}\bar{x}              & -\bar{x^3}+\bar{x^2}\bar{x}            & \bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}   \\
      -\bar{x^3}+\bar{x^2}\bar{x}            & \bar{x^4}-\bar{x^2}\bar{x^2}          & -\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2}   \\
      \bar{x^3}\bar{x}-\bar{x^2}\bar{x^2}   & -\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2}   & \bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3}
    \end{array}
  \right)
  \left(
    \begin{array}{ccc}
      \bar{x^2y}\\
      \bar{xy}\\
      \bar{y}
    \end{array}
  \right)
行列の計算だけすすめると
\displaystyle
  \left(
    \begin{array}{ccc}
      a\\
      b\\
      c
    \end{array}
  \right)
=\frac{1}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}
  \left(
    \begin{array}{ccc}
      \bar{x^2y}(\bar{x^2}-\bar{x}\bar{x})+\bar{xy}(-\bar{x^3}+\bar{x^2}\bar{x})+\bar{y}(\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2})\\
      \bar{x^2y}(-\bar{x^3}+\bar{x^2}\bar{x})+\bar{xy}(\bar{x^4}-\bar{x^2}\bar{x^2})+\bar{y}(-\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2})\\
      \bar{x^2y}(\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2})+\bar{xy}(-\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2})+\bar{y}(\bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3})
    \end{array}
  \right)
\displaystyle
  \left(
    \begin{array}{ccc}
      a\\
      b\\
      c
    \end{array}
  \right)
=
  \left(
    \begin{array}{ccc}
      \displaystyle \frac{\bar{x^2y}(\bar{x^2}-\bar{x}\bar{x})+\bar{xy}(-\bar{x^3}+\bar{x^2}\bar{x})+\bar{y}(\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2})}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}\\
      \displaystyle \frac{\bar{x^2y}(-\bar{x^3}+\bar{x^2}\bar{x})+\bar{xy}(\bar{x^4}-\bar{x^2}\bar{x^2})+\bar{y}(-\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2})}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}\\
      \displaystyle \frac{\bar{x^2y}(\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2})+\bar{xy}(-\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2})+\bar{y}(\bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3})}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}\\
    \end{array}
  \right)
よって
\displaystyle a=\frac{\bar{x^2y}(\bar{x^2}-\bar{x}\bar{x})+\bar{xy}(-\bar{x^3}+\bar{x^2}\bar{x})+\bar{y}(\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2})}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}

\displaystyle b=\frac{\bar{x^2y}(-\bar{x^3}+\bar{x^2}\bar{x})+\bar{xy}(\bar{x^4}-\bar{x^2}\bar{x^2})+\bar{y}(-\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2})}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}

\displaystyle c=\frac{\bar{x^2y}(\bar{x^3}\bar{x}-\bar{x^2}\bar{x^2})+\bar{xy}(-\bar{x^4}\bar{x}+\bar{x^3}\bar{x^2})+\bar{y}(\bar{x^4}\bar{x^2}-\bar{x^3}\bar{x^3})}{\bar{x^4}\bar{x^2}+2\bar{x^3}\bar{x^2}\bar{x}-\bar{x^2}\bar{x^2}\bar{x^2}-\bar{x^3}\bar{x^3}-\bar{x^4}\bar{x}\bar{x}}

と求めることができた。
この方法でn次関数の近似ももちろん可能だけど、変数の導出はその分手間が増える。
2次関数でもこれだし()
なので最小二乗法についてこれ以上の記事は書きません。書きたくない
必要なときは頑張って計算してみてください。