多項式回帰 - データに多項式を当てはめる

はじめに

与えられたデータ \((x_0, y_0), (x_1, y_1), (x_2, y_2), \cdots (x_{N-1}, y_{N-1})\) に多項式 \begin{eqnarray} f(x,\boldsymbol{a}) &=& \sum_{m=0}^M a_m x^m,\quad \boldsymbol{a}=(a_0,a_1,a_2,\cdots a_M)^T \label{fx} \end{eqnarray} を最小二乗法で当てはめます。


図1 : 与えられたデータ \((x_n, y_n),\ n=0,1,2,\cdots N-1\)

正規方程式による計算法

ここでは簡単に、正規方程式によって解く方法を述べます。

当てはめ誤差の評価関数を \begin{eqnarray} J(\boldsymbol{a}) = \sum_{n=0}^{N-1}\left\{ f(x_n,\boldsymbol{a}) - y_n \right\}^2 \end{eqnarray} として係数 \(a_i\) について偏微分すると \begin{eqnarray} \frac{\partial}{\partial a_i} J(\boldsymbol{a}) &=& \frac{\partial}{\partial a_i} \sum_{n=0}^{N-1}\left\{ f(x_n,\boldsymbol{a}) - y_n \right\}^2 \\ &=& 2 \sum_{n=0}^{N-1}\left\{ f(x_n,\boldsymbol{a}) - y_n \right\} \frac{\partial}{\partial a_i} \left\{ f(x_n,\boldsymbol{a}) - y_n \right\} \\ && 式(\ref{fx}) より \nonumber\\ &=& 2 \sum_{n=0}^{N-1}\left( \sum_{m=0}^M a_m x^m - y_n \right) \frac{\partial}{\partial a_i} \left( \sum_{m=0}^M a_m x^m - y_n \right) \\ && i\neq m では \frac{\partial}{\partial a_i} a_m x^m = 0、かつ\ y_n\ は\ a_i\ に依存しないので \frac{\partial}{\partial a_i} y_n = 0\ だから \nonumber\\ &=& 2 \sum_{n=0}^{N-1}\left( \sum_{m=0}^M a_m x^m - y_n \right) x^i \\ &=& 2 \sum_{n=0}^{N-1} \sum_{m=0}^M a_m x^m x^i - 2 \sum_{n=0}^{N-1} y_n x^i \\ &=& 0 \end{eqnarray} 移項して整理すると \begin{eqnarray} \sum_{m=0}^M a_m \sum_{n=0}^{N-1} x^{m+i} &=& \sum_{n=0}^{N-1} y_n x^i \label{eqi} \end{eqnarray} 式(\ref{eqi}) を \(i=0,1,2,\cdots M\) について縦に並べて書くと、以下の正規方程式が得られます。 \begin{eqnarray} \left( \begin{array}{cccc} \displaystyle\sum_{n=0}^{N-1} x_n^0 & \displaystyle\sum_{n=0}^{N-1} x_n^1 & \cdots & \displaystyle\sum_{n=0}^{N-1} x_n^M \\ \displaystyle\sum_{n=0}^{N-1} x_n^1 & \displaystyle\sum_{n=0}^{N-1} x_n^2 & \cdots & \displaystyle\sum_{n=0}^{N-1} x_n^{M+1} \\ \vdots & & \ddots & \vdots\\ \displaystyle\sum_{n=0}^{N-1} x_n^M & \displaystyle\sum_{n=0}^{N-1} x_n^{M+1} & \cdots & \displaystyle\sum_{n=0}^{N-1} x_n^{2M} \\ \end{array} \right) \left( \begin{array}{c} a_0 \\[1.6em] a_1 \\[1.6em] \vdots \\[1em] a_M \end{array} \right) &=& \left( \begin{array}{c} \displaystyle\sum_{n=0}^{N-1} y_n x_n^0 \\ \displaystyle\sum_{n=0}^{N-1} y_n x_n^1 \\ \vdots \\ \displaystyle\sum_{n=0}^{N-1} y_n x_n^M \\ \end{array} \right) \label{eq} \end{eqnarray} 連立1次方程式(\ref{eq})を解けば、与えられたデータに最小2乗誤差でフィットする多項式の係数 \(\boldsymbol{a}=(a_0,a_1,a_2,\cdots a_M)^T\) が求まります。


図2 : 与えられたデータと、式(\ref{eq})を解いて得られた近似多項式 \(f(x,\boldsymbol{a})\)