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+c1xn1++cny=c_0 x^n+c_1 x^{n-1}+\cdots+c_n とし,

yαc0xαn+c1xαn1++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αn1++cn))2minJ=\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

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

Jc0=0,Jc1=0,,Jcn=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 で偏微分すると次式を得る。

Jck=α=1N(yαc0xαnc1xαn1cn)(xαnk)=c0α=1Nxα2nk+c1α=1Nxα2nk1++cnα=1Nxαnkα=1Nxαnkyα\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α2n1α=1Nxαnα=1Nxα2n1α=1Nxα2n2α=1Nxαn1α=1Nxαnα=1Nxαn1α=1N1)(c0c1cn)=(α=1Nxαnyαα=1Nxαn1yαα=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+c1xn1++cny=c_0 x^n+c_1 x^{n-1}+\cdots+c_n とし,

yαc0xαn+c1xαn1++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αn1++cn))2minJ=\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

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

Jc0=0,Jc1=0,,Jcn=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αncn)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

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

Jck=12α=1Nu2uuck\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αnk-x_\alpha^{n-k}なので、

u2u=2u=2(yαc0xαncn)uck=xαnk\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}

よって

Jck=12α=1N2(yαc0xαncn)(xαnk)\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 で偏微分すると次式を得る。

Jck=α=1N(yαc0xαnc1xαn1cn)(xαnk)=c0α=1Nxα2nk+c1α=1Nxα2nk1++cnα=1Nxαnkα=1Nxαnkyα\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α2n1++cnα=1Nxαn=α=1Nxαnyαc0α=1Nxα2n1+c1α=1Nxα2n2++cnα=1Nxαnk=α=1Nxαn1yαc0α=1Nxαn+c1α=1Nxαn1++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α2n1α=1Nxαnα=1Nxα2n1α=1Nxα2n2α=1Nxαn1α=1Nxαnα=1Nxαn1α=1N1)(c0c1cn)=(α=1Nxαnyαα=1Nxαn1yαα=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=12ak=1nckuk2min(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)のように置き,

Jc1=0,,Jcn=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(ak=1nckuk,al=1nclul)=12((a,a)2(a,k=1nckuk)+(k=1nckuk,l=1nclul))=12(a22k=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 で偏微分すると次式を得る。

Jci=(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 に対する式を並べると次の正規方程式を得る.

(u12(u1,u2)(u1,un)(u2,u1)u22(u2,un)(un,u1)(un,u2)un2)(c1c2cn)=((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=12ak=1nckuk2min(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)のように置き,

Jc1=0,,Jcn=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,xRna,x \in \mathbb{R}^nとすれば

(ax,ax)=in(aixi)(aixi)=in(ai22aixi+xi2)=inai22inaixi+inxi2=(a,a)2(a,x)+(x,x)=a22(a,x)+x2\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(ak=1nckuk,al=1nclul)=12((a,a)2(a,k=1nckuk)+(k=1nckuk,l=1nclul))=12(a22k=1nck(a,uk)+k,l=1nckcl(uk,ul))=12a2k=1nck(a,uk)+12k=1nl=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)=2k=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)

となる。

Jci=(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 に対する式を並べると次の正規方程式を得る.

(u12(u1,u2)(u1,un)(u2,u1)u22(u2,un)(un,u1)(un,u2)un2)(c1c2cn)=((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,cRn)(ka,b)=k(a,b)(kR)\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=12j=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=1nl=1n(ckuk,clul)=k=1nl=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=1nl=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)

が成り立つ