Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

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

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

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

最小二乗近似

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

f(x)≈c0ϕ0(x)+c1ϕ1(x)+⋯+cnϕn(x)f(x) \approx c_0 \phi_0(x)+c_1 \phi_1(x)+\cdots+c_n \phi_n(x)

例題

例題1.7

(解)

当てはめる nn 次式を y=c0xn+c1xn−1+⋯+cny=c_0 x^n+c_1 x^{n-1}+\cdots+c_n とし,

yα≈c0xαn+c1xαn−1+⋯+cn,α=1,…,Ny_\alpha \approx c_0 x_\alpha^n+c_1 x_\alpha^{n-1}+\cdots+c_n, \quad \alpha=1, \ldots, N

となる c1,…,cnc_1, \ldots, c_n を最小二乗法

J=12∑α=1N(yα−(c0xαn+c1xαn−1+⋯+cn))2→min⁡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

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

∂J∂c0=0,∂J∂c1=0,…,∂J∂cn=0\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

を解いて c0,…,cnc_0, \ldots, c_n を定めればよい。式を ckc_k で偏微分すると次式を得る。

∂J∂ck=∑α=1N(yα−c0xαn−c1xαn−1−⋯−cn)(−xαn−k)=c0∑α=1Nxα2n−k+c1∑α=1Nxα2n−k−1+⋯+cn∑α=1Nxαn−k−∑α=1Nxαn−kyα\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}

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

(∑α=1Nxα2n∑α=1Nxα2n−1⋯∑α=1Nxαn∑α=1Nxα2n−1∑α=1Nxα2n−2⋯∑α=1Nxαn−1⋮⋮⋱⋮∑α=1Nxαn∑α=1Nxαn−1⋯∑α=1N1)(c0c1⋮cn)=(∑α=1Nxαnyα∑α=1Nxαn−1yα⋮∑α=1Nyα)\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)

これを解いて c0,…,cnc_0, \ldots, c_n が定まる.

当てはめる nn 次式を y=c0xn+c1xn−1+⋯+cny=c_0 x^n+c_1 x^{n-1}+\cdots+c_n とし,

yα≈c0xαn+c1xαn−1+⋯+cn,α=1,…,Ny_\alpha \approx c_0 x_\alpha^n+c_1 x_\alpha^{n-1}+\cdots+c_n, \quad \alpha=1, \ldots, N

となる c1,…,cnc_1, \ldots, c_n を最小二乗法

J=12∑α=1N(yα−(c0xαn+c1xαn−1+⋯+cn))2→min⁡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

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

∂J∂c0=0,∂J∂c1=0,…,∂J∂cn=0\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

を解いて c0,…,cnc_0, \ldots, c_n を定めればよい。

J=12∑α=1N(yα−c0xαn−⋯−cn)2=12∑α=1Nu2J=\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

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

∂J∂ck=12∑α=1N∂u2∂u∂u∂ck\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}\\

となり、ckc_kと積になっている値は−xαn−k-x_\alpha^{n-k}なので、

∂u2∂u=2u=2(yα−c0xαn−⋯−cn)∂u∂ck=−xαn−k\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}

よって

∂J∂ck=12∑α=1N2(yα−c0xαn−⋯−cn)(−xαn−k)\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})

なので、式を ckc_k で偏微分すると次式を得る。

∂J∂ck=∑α=1N(yα−c0xαn−c1xαn−1−⋯−cn)(−xαn−k)=c0∑α=1Nxα2n−k+c1∑α=1Nxα2n−k−1+⋯+cn∑α=1Nxαn−k−∑α=1Nxαn−kyα\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}

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

{c0∑α=1Nxα2n+c1∑α=1Nxα2n−1+⋯+cn∑α=1Nxαn=∑α=1Nxαnyαc0∑α=1Nxα2n−1+c1∑α=1Nxα2n−2+⋯+cn∑α=1Nxαn−k=∑α=1Nxαn−1yα⋮c0∑α=1Nxαn+c1∑α=1Nxαn−1+⋯+cn∑α=1N1=∑α=1Nyα\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}

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

(∑α=1Nxα2n∑α=1Nxα2n−1⋯∑α=1Nxαn∑α=1Nxα2n−1∑α=1Nxα2n−2⋯∑α=1Nxαn−1⋮⋮⋱⋮∑α=1Nxαn∑α=1Nxαn−1⋯∑α=1N1)(c0c1⋮cn)=(∑α=1Nxαnyα∑α=1Nxαn−1yα⋮∑α=1Nyα)\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)

これを解いて c0,…,cnc_0, \ldots, c_n が定まる.

例題1.11

(解)
J=12∥a−∑k=1nckuk∥2→min⁡(1.75)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)のように置き,

∂J∂c1=0,…,∂J∂cn=0\frac{\partial J}{\partial c_1}=0, \quad \ldots, \quad \frac{\partial J}{\partial c_n}=0

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

J=12(a−∑k=1nckuk,a−∑l=1nclul)=12((a,a)−2(a,∑k=1nckuk)+(∑k=1nckuk,∑l=1nclul))=12(∥a∥2−2∑k=1nck(a,uk)+∑k,l=1nckcl(uk,ul))\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}

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

∂J∂ci=−(a,ui)+∑k=1nck(uk,ui)\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,…,ni=1, \ldots, n に対する式を並べると次の正規方程式を得る.

(∥u1∥2(u1,u2)⋯(u1,un)(u2,u1)∥u2∥2⋯(u2,un)⋮⋮⋱⋮(un,u1)(un,u2)⋯∥un∥2)(c1c2⋮cn)=((a,u1)(a,u2)⋮(a,un))\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)

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

J=12∥a−∑k=1nckuk∥2→min⁡(1.75)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)のように置き,

∂J∂c1=0,…,∂J∂cn=0\frac{\partial J}{\partial c_1}=0, \quad \ldots, \quad \frac{\partial J}{\partial c_n}=0

を解いて c1,…,cnc_1, \ldots, c_n を定めればよい。

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

(a−x,a−x)=∑in(ai−xi)(ai−xi)=∑in(ai2−2aixi+xi2)=∑inai2−2∑inaixi+∑inxi2=(a,a)−2(a,x)+(x,x)=∥a∥2−2(a,x)+∥x∥2\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}

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

J=12(a−∑k=1nckuk,a−∑l=1nclul)=12((a,a)−2(a,∑k=1nckuk)+(∑k=1nckuk,∑l=1nclul))=12(∥a∥2−2∑k=1nck(a,uk)+∑k,l=1nckcl(uk,ul))=12∥a∥2−∑k=1nck(a,uk)+12∑k=1n∑l=1nckcl(uk,ul)\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}

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

∑l=1ncicl(ui,ul)+∑k=1nckci(uk,ui)=2∑k=1nckci(uk,ui)\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)

となる。

∂J∂ci=−(a,ui)+∑k=1nck(uk,ui)\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,…,ni=1, \ldots, n に対する式を並べると次の正規方程式を得る.

(∥u1∥2(u1,u2)⋯(u1,un)(u2,u1)∥u2∥2⋯(u2,un)⋮⋮⋱⋮(un,u1)(un,u2)⋯∥un∥2)(c1c2⋮cn)=((a,u1)(a,u2)⋮(a,un))\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)

これを解いて c1,…,cnc_1, \ldots, c_n が定まる

(∑k=1nckuk,∑l=1nclul)=∑k,l=1nckcl(uk,ul)\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) について

内積の性質

(a+b,c)=(a,c)+(b,c)(a,b,c∈Rn)(ka,b)=k(a,b)(k∈R)\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}

より、

(a1+a2,b1+b2)=(a1,b1+b2)+(a2,b1+b2)=(a1,b1)+(a1,b2)+(a2,b1)+(a2,b2)=∑i=12(ai,b1+b2)=∑i=12∑j=12(ai,bj)\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}

となるため、

(∑k=1nckuk,∑l=1nclul)=∑k=1n(ckuk,∑l=1nclul)=∑k=1n∑l=1n(ckuk,clul)=∑k=1n∑l=1nckcl(uk,ul)\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}

となる。

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

と演算子を定義すれば、

(∑k=1nckuk,∑l=1nclul)=∑k,l=1nckcl(uk,ul)\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)

が成り立つ