応用数学 ch1メモ(最小二乗法)

応用数学 ch1メモ(最小二乗法)#

金谷健一. (2003). これなら分かる応用数学教室: 最小二乗法からウェーブレットまで.

目的:一部の例題の行間を埋めて、論理の飛躍無く説明できるようにする

最小二乗近似#

任意の関数\(f(x)\)\(n\)個の関数\(\{\phi_i(x)\}\)の線形結合で近似する

\[ f(x) \approx c_0 \phi_0(x)+c_1 \phi_1(x)+\cdots+c_n \phi_n(x) \]

例題#

例題1.7#

p.12 例題1.7

【例 1.7】 \(N\) 個のデータ \(\left(x_1, y_1\right), \ldots,\left(x_N, y_N\right)\)\(n\) 次式を当てはめよ.

(解)

当てはめる \(n\) 次式を \(y=c_0 x^n+c_1 x^{n-1}+\cdots+c_n\) とし,

\[ y_\alpha \approx c_0 x_\alpha^n+c_1 x_\alpha^{n-1}+\cdots+c_n, \quad \alpha=1, \ldots, N \]

となる \(c_1, \ldots, c_n\) を最小二乗法

\[ J=\frac{1}{2} \sum_{\alpha=1}^N\left(y_\alpha-\left(c_0 x_\alpha^n+c_1 x_\alpha^{n-1}+\cdots+c_n\right)\right)^2 \rightarrow \min \]

によって定める. それには

\[ \frac{\partial J}{\partial c_0}=0, \quad \frac{\partial J}{\partial c_1}=0, \quad \ldots, \quad \frac{\partial J}{\partial c_n}=0 \]

を解いて \(c_0, \ldots, c_n\) を定めればよい。式を \(c_k\) で偏微分すると次式を得る。

\[\begin{split} \begin{aligned} \frac{\partial J}{\partial c_k} & =\sum_{\alpha=1}^N\left(y_\alpha-c_0 x_\alpha^n-c_1 x_\alpha^{n-1}-\cdots-c_n\right)\left(-x_\alpha^{n-k}\right) \\ & =c_0 \sum_{\alpha=1}^N x_\alpha^{2 n-k}+c_1 \sum_{\alpha=1}^N x_\alpha^{2 n-k-1}+\cdots+c_n \sum_{\alpha=1}^N x_\alpha^{n-k}-\sum_{\alpha=1}^N x_\alpha^{n-k} y_\alpha \end{aligned} \end{split}\]

これを 0 と置いて \(k=0,1, \ldots, n\) に対する式を並べると次の正規方程式を得る.

\[\begin{split} \left(\begin{array}{cccc} \sum_{\alpha=1}^N x_\alpha^{2 n} & \sum_{\alpha=1}^N x_\alpha^{2 n-1} & \cdots & \sum_{\alpha=1}^N x_\alpha^n \\ \sum_{\alpha=1}^N x_\alpha^{2 n-1} & \sum_{\alpha=1}^N x_\alpha^{2 n-2} & \cdots & \sum_{\alpha=1}^N x_\alpha^{n-1} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{\alpha=1}^N x_\alpha^n & \sum_{\alpha=1}^N x_\alpha^{n-1} & \cdots & \sum_{\alpha=1}^N 1 \end{array}\right)\left(\begin{array}{c} c_0 \\ c_1 \\ \vdots \\ c_n \end{array}\right)=\left(\begin{array}{c} \sum_{\alpha=1}^N x_\alpha^n y_\alpha \\ \sum_{\alpha=1}^N x_\alpha^{n-1} y_\alpha \\ \vdots \\ \sum_{\alpha=1}^N y_\alpha \end{array}\right) \end{split}\]

これを解いて \(c_0, \ldots, c_n\) が定まる.

当てはめる \(n\) 次式を \(y=c_0 x^n+c_1 x^{n-1}+\cdots+c_n\) とし,

\[ y_\alpha \approx c_0 x_\alpha^n+c_1 x_\alpha^{n-1}+\cdots+c_n, \quad \alpha=1, \ldots, N \]

となる \(c_1, \ldots, c_n\) を最小二乗法

\[ J=\frac{1}{2} \sum_{\alpha=1}^N\left(y_\alpha-\left(c_0 x_\alpha^n+c_1 x_\alpha^{n-1}+\cdots+c_n\right)\right)^2 \rightarrow \min \]

によって定める. それには

\[ \frac{\partial J}{\partial c_0}=0, \quad \frac{\partial J}{\partial c_1}=0, \quad \ldots, \quad \frac{\partial J}{\partial c_n}=0 \]

を解いて \(c_0, \ldots, c_n\) を定めればよい。

\[ J=\frac{1}{2} \sum_{\alpha=1}^N (y_\alpha- c_0 x_\alpha^n - \cdots-c_n)^2 =\frac{1}{2} \sum_{\alpha=1}^N u^2 \]

とおくと、微分の線形性(和の各項ごとに微分の操作ができる)と合成微分の連鎖律より、

\[\begin{split} \frac{\partial J}{\partial c_k} = \frac{1}{2} \sum_{\alpha=1}^N \frac{\partial u^2}{\partial u} \frac{\partial u}{\partial c_k}\\ \end{split}\]

となり、\(c_k\)と積になっている値は\(-x_\alpha^{n-k}\)なので、

\[\begin{split} \begin{aligned} \frac{\partial u^2}{\partial u} &= 2u = 2 (y_\alpha- c_0 x_\alpha^n - \cdots-c_n) \\ \frac{\partial u}{\partial c_k} &= - x_\alpha^{n-k} \end{aligned} \end{split}\]

よって

\[ \frac{\partial J}{\partial c_k} = \frac{1}{2} \sum_{\alpha=1}^N 2 (y_\alpha- c_0 x_\alpha^n - \cdots-c_n) (- x_\alpha^{n-k}) \]

なので、式を \(c_k\) で偏微分すると次式を得る。

\[\begin{split} \begin{aligned} \frac{\partial J}{\partial c_k} &=\sum_{\alpha=1}^N\left(y_\alpha-c_0 x_\alpha^n-c_1 x_\alpha^{n-1}-\cdots-c_n\right)\left(-x_\alpha^{n-k}\right) \\ & =c_0 \sum_{\alpha=1}^N x_\alpha^{2 n-k}+c_1 \sum_{\alpha=1}^N x_\alpha^{2 n-k-1}+\cdots+c_n \sum_{\alpha=1}^N x_\alpha^{n-k}-\sum_{\alpha=1}^N x_\alpha^{n-k} y_\alpha \end{aligned} \end{split}\]

これを 0 と置いて \(k=0,1, \ldots, n\) に対する式を並べると

\[\begin{split} \begin{cases} c_0 \sum_{\alpha=1}^N x_\alpha^{2 n}+c_1 \sum_{\alpha=1}^N x_\alpha^{2 n-1}+\cdots+c_n \sum_{\alpha=1}^N x_\alpha^{n} &= \sum_{\alpha=1}^N x_\alpha^{n} y_\alpha \\ c_0 \sum_{\alpha=1}^N x_\alpha^{2 n-1}+c_1 \sum_{\alpha=1}^N x_\alpha^{2 n-2}+\cdots+c_n \sum_{\alpha=1}^N x_\alpha^{n-k} &= \sum_{\alpha=1}^N x_\alpha^{n-1} y_\alpha \\ \quad \vdots\\ c_0 \sum_{\alpha=1}^N x_\alpha^{n}+c_1 \sum_{\alpha=1}^N x_\alpha^{n-1}+\cdots+c_n \sum_{\alpha=1}^N 1 &= \sum_{\alpha=1}^N y_\alpha \end{cases} \end{split}\]

よって次の正規方程式を得る.

\[\begin{split} \left(\begin{array}{cccc} \sum_{\alpha=1}^N x_\alpha^{2 n} & \sum_{\alpha=1}^N x_\alpha^{2 n-1} & \cdots & \sum_{\alpha=1}^N x_\alpha^n \\ \sum_{\alpha=1}^N x_\alpha^{2 n-1} & \sum_{\alpha=1}^N x_\alpha^{2 n-2} & \cdots & \sum_{\alpha=1}^N x_\alpha^{n-1} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{\alpha=1}^N x_\alpha^n & \sum_{\alpha=1}^N x_\alpha^{n-1} & \cdots & \sum_{\alpha=1}^N 1 \end{array}\right)\left(\begin{array}{c} c_0 \\ c_1 \\ \vdots \\ c_n \end{array}\right)=\left(\begin{array}{c} \sum_{\alpha=1}^N x_\alpha^n y_\alpha \\ \sum_{\alpha=1}^N x_\alpha^{n-1} y_\alpha \\ \vdots \\ \sum_{\alpha=1}^N y_\alpha \end{array}\right) \end{split}\]

これを解いて \(c_0, \ldots, c_n\) が定まる.

例題1.11#

p.24 例題1.11

【例 1.11】ベクトル \(\boldsymbol{a}\)\(\sum_{k=1}^n c_k \boldsymbol{u}_k\) の形に近似せよ.

(解)
\[ J=\frac{1}{2}\left\|\boldsymbol{a}-\sum_{k=1}^n c_k \boldsymbol{u}_k\right\|^2 \rightarrow \min \tag{1.75} \]

式(1.75)のように置き,

\[ \frac{\partial J}{\partial c_1}=0, \quad \ldots, \quad \frac{\partial J}{\partial c_n}=0 \]

を解いて \(c_1, \ldots, c_n\) を定めればよい。式(1.75)は次のように変形できる。

\[\begin{split} \begin{aligned} J & =\frac{1}{2}\left(\boldsymbol{a}-\sum_{k=1}^n c_k \boldsymbol{u}_k, \boldsymbol{a}-\sum_{l=1}^n c_l \boldsymbol{u}_l\right) \\ & =\frac{1}{2}\left((\boldsymbol{a}, \boldsymbol{a})-2\left(\boldsymbol{a}, \sum_{k=1}^n c_k \boldsymbol{u}_k\right)+\left(\sum_{k=1}^n c_k \boldsymbol{u}_k, \sum_{l=1}^n c_l \boldsymbol{u}_l\right)\right) \\ & =\frac{1}{2}\left(\|\boldsymbol{a}\|^2-2 \sum_{k=1}^n c_k\left(\boldsymbol{a}, \boldsymbol{u}_k\right)+\sum_{k, l=1}^n c_k c_l\left(\boldsymbol{u}_k, \boldsymbol{u}_l\right)\right) \end{aligned} \end{split}\]

この式中の \(c_i\) が含まれる項は \(-2 c_i\left(\boldsymbol{a}, \boldsymbol{u}_i\right)\)\(\sum_{l=1}^n c_i c_l\left(\boldsymbol{u}_i, \boldsymbol{u}_l\right)\)\(\sum_{k=1}^n c_k c_i\left(\boldsymbol{u}_k, \boldsymbol{u}_i\right)\) であるから, 上式を \(c_i\) で偏微分すると次式を得る。

\[ \frac{\partial J}{\partial c_i}=-\left(\boldsymbol{a}, \boldsymbol{u}_i\right)+\sum_{k=1}^n c_k\left(\boldsymbol{u}_k, \boldsymbol{u}_i\right) \]

これを 0 と置いて \(i=1, \ldots, n\) に対する式を並べると次の正規方程式を得る.

\[\begin{split} \left(\begin{array}{cccc} \left\|\boldsymbol{u}_1\right\|^2 & \left(\boldsymbol{u}_1, \boldsymbol{u}_2\right) & \cdots & \left(\boldsymbol{u}_1, \boldsymbol{u}_n\right) \\ \left(\boldsymbol{u}_2, \boldsymbol{u}_1\right) & \left\|\boldsymbol{u}_2\right\|^2 & \cdots & \left(\boldsymbol{u}_2, \boldsymbol{u}_n\right) \\ \vdots & \vdots & \ddots & \vdots \\ \left(\boldsymbol{u}_n, \boldsymbol{u}_1\right) & \left(\boldsymbol{u}_n, \boldsymbol{u}_2\right) & \cdots & \left\|\boldsymbol{u}_n\right\|^2 \end{array}\right)\left(\begin{array}{c} c_1 \\ c_2 \\ \vdots \\ c_n \end{array}\right)=\left(\begin{array}{c} \left(\boldsymbol{a}, \boldsymbol{u}_1\right) \\ \left(\boldsymbol{a}, \boldsymbol{u}_2\right) \\ \vdots \\ \left(\boldsymbol{a}, \boldsymbol{u}_n\right) \end{array}\right) \end{split}\]

これを解いて \(c_1, \ldots, c_n\) が定まる(ただしベクトル \(\boldsymbol{u}_1, \ldots, \boldsymbol{u}_n\) を変則的に選ぶと解が存在しなかったり無数に存在したりすることがある」第 5 章 5.1 節).

\[ J=\frac{1}{2}\left\|\boldsymbol{a}-\sum_{k=1}^n c_k \boldsymbol{u}_k\right\|^2 \rightarrow \min \tag{1.75} \]

式(1.75)のように置き,

\[ \frac{\partial J}{\partial c_1}=0, \quad \ldots, \quad \frac{\partial J}{\partial c_n}=0 \]

を解いて \(c_1, \ldots, c_n\) を定めればよい。

ベクトルの和の内積は、\(a,x \in \mathbb{R}^n\)とすれば

\[\begin{split} \begin{aligned} (a-x, a-x) &= \sum_i^n (a_i - x_i) (a_i - x_i)\\ &= \sum_i^n (a_i^2 - 2 a_i x_i + x_i^2)\\ &= \sum_i^n a_i^2 - 2 \sum_i^n a_i x_i + \sum_i^n x_i^2\\ &= (a, a) - 2 (a, x) + (x, x)\\ &= \|a\|^2 - 2 (a, x) + \|x\|^2 \\ \end{aligned} \end{split}\]

となるため、式(1.75)は次のように変形できる。

\[\begin{split} \begin{aligned} J & =\frac{1}{2}\left(\boldsymbol{a}-\sum_{k=1}^n c_k \boldsymbol{u}_k, \boldsymbol{a}-\sum_{l=1}^n c_l \boldsymbol{u}_l\right) \\ & =\frac{1}{2}\left((\boldsymbol{a}, \boldsymbol{a})-2\left(\boldsymbol{a}, \sum_{k=1}^n c_k \boldsymbol{u}_k\right)+\left(\sum_{k=1}^n c_k \boldsymbol{u}_k, \sum_{l=1}^n c_l \boldsymbol{u}_l\right)\right) \\ & =\frac{1}{2}\left(\|\boldsymbol{a}\|^2-2 \sum_{k=1}^n c_k\left(\boldsymbol{a}, \boldsymbol{u}_k\right)+\sum_{k, l=1}^n c_k c_l\left(\boldsymbol{u}_k, \boldsymbol{u}_l\right)\right) \\ &=\frac{1}{2}\|\boldsymbol{a}\|^2 - \sum_{k=1}^n c_k\left(\boldsymbol{a}, \boldsymbol{u}_k\right) + \frac{1}{2} \sum_{k=1}^n \sum_{l=1}^n c_k c_l\left(\boldsymbol{u}_k, \boldsymbol{u}_l\right) \end{aligned} \end{split}\]

この式中の \(c_i\) が含まれる項は \(-2 c_i\left(\boldsymbol{a}, \boldsymbol{u}_i\right)\)\(\sum_{l=1}^n c_i c_l\left(\boldsymbol{u}_i, \boldsymbol{u}_l\right)\)\(\sum_{k=1}^n c_k c_i\left(\boldsymbol{u}_k, \boldsymbol{u}_i\right)\) であり、内積の性質\((\boldsymbol{a}, \boldsymbol{b}) = (\boldsymbol{b}, \boldsymbol{a})\)より

\[ \sum_{l=1}^n c_i c_l\left(\boldsymbol{u}_i, \boldsymbol{u}_l\right) + \sum_{k=1}^n c_k c_i\left(\boldsymbol{u}_k, \boldsymbol{u}_i\right) = 2 \sum_{k=1}^n c_k c_i\left(\boldsymbol{u}_k, \boldsymbol{u}_i\right) \]

となる。

\[ \frac{\partial J}{\partial c_i}=-\left(\boldsymbol{a}, \boldsymbol{u}_i\right)+\sum_{k=1}^n c_k\left(\boldsymbol{u}_k, \boldsymbol{u}_i\right) \]

を 0 と置いて \(i=1, \ldots, n\) に対する式を並べると次の正規方程式を得る.

\[\begin{split} \left(\begin{array}{cccc} \left\|\boldsymbol{u}_1\right\|^2 & \left(\boldsymbol{u}_1, \boldsymbol{u}_2\right) & \cdots & \left(\boldsymbol{u}_1, \boldsymbol{u}_n\right) \\ \left(\boldsymbol{u}_2, \boldsymbol{u}_1\right) & \left\|\boldsymbol{u}_2\right\|^2 & \cdots & \left(\boldsymbol{u}_2, \boldsymbol{u}_n\right) \\ \vdots & \vdots & \ddots & \vdots \\ \left(\boldsymbol{u}_n, \boldsymbol{u}_1\right) & \left(\boldsymbol{u}_n, \boldsymbol{u}_2\right) & \cdots & \left\|\boldsymbol{u}_n\right\|^2 \end{array}\right)\left(\begin{array}{c} c_1 \\ c_2 \\ \vdots \\ c_n \end{array}\right)=\left(\begin{array}{c} \left(\boldsymbol{a}, \boldsymbol{u}_1\right) \\ \left(\boldsymbol{a}, \boldsymbol{u}_2\right) \\ \vdots \\ \left(\boldsymbol{a}, \boldsymbol{u}_n\right) \end{array}\right) \end{split}\]

これを解いて \(c_1, \ldots, c_n\) が定まる

\(\left(\sum_{k=1}^n c_k \boldsymbol{u}_k, \sum_{l=1}^n c_l \boldsymbol{u}_l\right) = \sum_{k, l=1}^n c_k c_l\left(\boldsymbol{u}_k, \boldsymbol{u}_l\right)\) について

内積の性質

\[\begin{split} \begin{aligned} (a+b, c) &= (a, c) + (b, c) & (a,b,c \in \mathbb{R}^n)\\ (k a, b) &= k(a, b) & (k \in \mathbb{R}) \end{aligned} \end{split}\]

より、

\[\begin{split} \begin{aligned} (a_1 + a_2, b_1 + b_2) &= (a_1, b_1 + b_2) + (a_2, b_1 + b_2)\\ &= (a_1, b_1) + (a_1, b_2) + (a_2, b_1) + (a_2, b_2)\\ &= \sum_{i=1}^2 (a_i, b_1 + b_2)\\ &= \sum_{i=1}^2 \sum_{j=1}^2 (a_i, b_j)\\ \end{aligned} \end{split}\]

となるため、

\[\begin{split} \begin{aligned} \left(\sum_{k=1}^n c_k \boldsymbol{u}_k, \sum_{l=1}^n c_l \boldsymbol{u}_l \right) &= \sum_{k=1}^n \left(c_k \boldsymbol{u}_k, \sum_{l=1}^n c_l \boldsymbol{u}_l \right) \\ &= \sum_{k=1}^n \sum_{l=1}^n (c_k \boldsymbol{u}_k, c_l \boldsymbol{u}_l) \\ &= \sum_{k=1}^n \sum_{l=1}^n c_k c_l (\boldsymbol{u}_k, \boldsymbol{u}_l) \end{aligned} \end{split}\]

となる。

\[ \sum_{k, l=1}^n := \sum_{k=1}^n \sum_{l=1}^n \]

と演算子を定義すれば、

\[ \left(\sum_{k=1}^n c_k \boldsymbol{u}_k, \sum_{l=1}^n c_l \boldsymbol{u}_l\right) = \sum_{k, l=1}^n c_k c_l\left(\boldsymbol{u}_k, \boldsymbol{u}_l\right) \]

が成り立つ