Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

最小二乗法

補間と最小二乗法
• ラグランジュ補間、エルミート補間、スプライン補間は、デー
タ点を通る関数でデータ間を埋める方法です。
• 最小二乗法は、データ点を通らない場合もあるが、データと関
数間の距離を最小にする関数を求める方法です。
• 最小二乗法は、未知数の数に対して条件式やデータ点数が多い
場合の未知数の決定に使われる解析方法と考えてもよいです。

例えば、「温度を3回測った。26℃,29℃,28℃であっ
た」温度は何度か?
答え: T=(26+29+28)/3=27.67℃
最小二乗法によるべき関数近似
(xk,yk), k=1,…n のデータ列があり、n が m+1 より大きいとし
て、下記の関数(べき級数)で、データ列を近似する場合を考え
ます。求めたいのは、(a0,a1,a2,…am)です。

𝑦 = 𝑎0 + 𝑎1 𝑥 + 𝑎2 𝑥 2 + ⋯ + 𝑎𝑚 𝑥 𝑚

この関数とデータykの差の二乗和計算し、二乗和が最小になる
(a0,a1,a2,…am)を求める問題が最小二乗法による近似関数を求
めることです。
最小二乗法
すなわち、以下の二乗誤差Sを最小にする(a0,a1,…,am)を求めれ
ば、関数が決まります。Sは aiの二次式で極小値を持ちます。
𝜕𝑆
その極小値の方程式は =0
𝜕𝑎𝑖
𝑓=𝑓 𝑔 𝑞
𝑛
𝑚 2 𝑑𝑓 𝑑𝑓 𝑑𝑔
𝑆 𝑎0 , 𝑎1 , 𝑎2 , … , 𝑎𝑚 = ෍ 𝑦𝑘 − 𝑎0 − 𝑎1 𝑥𝑘 − 𝑎2 𝑥𝑘2 − ⋯− 𝑎𝑚 𝑥𝑘 =
𝑑𝑞 𝑑𝑔 𝑑𝑞
𝑘=1

𝜕𝑆
= −2 σ𝑛𝑘=1 𝑥𝑘𝑖 𝑦𝑘 − 𝑎0 − 𝑎1 𝑥𝑘 − 𝑎2 𝑥𝑘2 − ⋯ − 𝑎𝑚 𝑥𝑘𝑚 =0
𝜕𝑎𝑖
最小二乗法
式3の未知数はa0~amのm+1個、方程式はm+1式なので行列が正則
であれば解けて、唯一解(a0,a1,…, am-1, am)が求まる。

𝑆0 𝑎0 + 𝑆1 𝑎1 + 𝑆2 𝑎2 + ⋯ + 𝑆𝑚 𝑎𝑚 = 𝑇0
𝑛
𝑆1 𝑎0 + 𝑆2 𝑎1 + 𝑆3 𝑎2 + ⋯ + 𝑆𝑚+1 𝑎𝑚 = 𝑇1
𝑆2 𝑎0 + 𝑆3 𝑎1 + 𝑆4 𝑎2 + ⋯ + 𝑆𝑚+2 𝑎𝑚 = 𝑇2 𝑆𝑖 = ෍ 𝑥𝑘𝑖
𝑘=1
𝑛

・・・・・・・・・・・・・・・・・・ 𝑇𝑖 = ෍ 𝑦𝑘 ∙ 𝑥𝑘𝑖
𝑆𝑚 𝑎0 + 𝑆𝑚+1 𝑎1 + 𝑆𝑚+2 𝑎2 + ⋯ + 𝑆2𝑚 𝑎𝑚 = 𝑇𝑚 𝑘=1
最小二乗法
• 行列形式で書きますと
𝑆0 𝑎0 + 𝑆1 𝑎1 + 𝑆2 𝑎2 + ⋯ + 𝑆𝑚 𝑎𝑚 = 𝑇0
𝑆1 𝑎0 + 𝑆2 𝑎1 + 𝑆3 𝑎2 + ⋯ + 𝑆𝑚+1 𝑎𝑚 = 𝑇1
𝑆2 𝑎0 + 𝑆3 𝑎1 + 𝑆4 𝑎2 + ⋯ + 𝑆𝑚+2 𝑎𝑚 = 𝑇2

・・・・・・・・・・・・・・・・・・
𝑆𝑚 𝑎0 + 𝑆𝑚+1 𝑎1 + 𝑆𝑚+2 𝑎2 + ⋯ + 𝑆2𝑚 𝑎𝑚 = 𝑇𝑚
𝑛

𝑆𝑖 = ෍ 𝑥𝑘𝑖
𝑆0 𝑆1 … 𝑆𝑚 𝑎0 𝑇0 𝑘=1
𝑆1 𝑆2 … 𝑆𝑚+1 𝑎1 𝑇1
= 𝑛
⋮ ⋮ ⋱ ⋮ ⋮ ⋮
𝑆𝑚 𝑆𝑚+1 … 𝑆2𝑚 𝑎𝑚 𝑇𝑚 𝑇𝑖 = ෍ 𝑦𝑘 ∙ 𝑥𝑘𝑖
𝑘=1
最小二乗法の簡単な例
x 0 1 2 3
y 3 6 5 8

表の(x, y)の最も近い点を通る直線
y
y= 𝑎0 + 𝑎1 ∙ 𝑥
を求めよ。
𝑆0 𝑎0 + 𝑆1 𝑎1 = 𝑇0
𝑆0 = 𝑛 = 4 y= 3.4 + 1.4 ∙ 𝑥
𝑆1 𝑎0 + 𝑆2 𝑎1 = 𝑇1
𝑆1 = ෍ 𝑥𝑘 = 6
4𝑎0 + 6𝑎1 = 22 x
𝑆2 = ෍ 𝑥𝑘2 = 14
6𝑎0 + 14𝑎1 = 40
𝑇0 = ෍ 𝑦𝑘 = 22 𝑎0 = 3.4
12𝑎0 + 18𝑎1 = 66
12𝑎0 + 28𝑎1 = 80 𝑎1 = 1.4
𝑇1 = ෍ 𝑦𝑘 𝑥𝑘 = 40
直線で近似する 𝑆0 = 𝑛, 𝑆1 = σ 𝑥𝑘 ,
𝑇0 = ෍ 𝑦𝑘 ,
𝑆2 = σ 𝑥𝑘2
𝑇1 = ෍ 𝑦𝑘 𝑥𝑘

表の(x, y)の最も近い点を通る直線
𝑆0 𝑎0 + 𝑆1 𝑎1 = 𝑇0
y= 𝑎0 + 𝑎1 ∙ 𝑥 𝑆1 𝑎0 + 𝑆2 𝑎1 = 𝑇1

を求める。
入力:x[k], y[k] : k=0~n-1のn個の数値
出力: 𝑆2 𝑇0 − 𝑆1 𝑇1
𝑆0 𝑆1 𝑎0 𝑇0 𝑎0 =
a0 = y切片 = 𝑆0 𝑆2 − 𝑆12
𝑎
𝑆1 𝑆2 1 𝑇1
a1 = 傾き 𝑎 1
0
=
𝑆2 −𝑆1 𝑇0 𝑆0 𝑇1 − 𝑆1 𝑇0
𝑎2 𝑆0 𝑆2 − 𝑆12 −𝑆1 𝑆0 𝑇1 𝑎1 =
𝑆0 𝑆2 − 𝑆12
線形最小二乗法の例
(別の解法) x
y
0
3
1
6
2
5
3
8

表の(x, y)の最も近い点を通る直線
y= 𝑎0 + 𝑎1 ∙ 𝑥
を求めよ。

𝑎0 + 0𝑎1 =3 1 0 3
𝑎0 + 1𝑎1 =6 1 1 𝑎0 6
𝑎0 + 2𝑎1 =5 1 2 𝑎1 = 5 𝑎0
4 6 22
𝑎0 + 3𝑎1 =8 1 3 8 𝑎1 =
6 14 40
1 0 3
1 1 1 1 1 1 𝑎0 1 1 1 1 6
𝑎1 = 𝑎0 = 3.4
0 1 2 3 1 2 0 1 2 3 5
1 3 8 𝑎1 = 1.4
線形最小二乗法の一般解法
未知数よりも多い条件式(n > m)をもつ正則でない連立一次方程式を
正則な連立一次方程式に変形する.「両辺に転置行列を掛ける」
𝑎11 𝑎12 … 𝑎1𝑚 𝑏1
𝑎21 𝑎22 𝑎2𝑚 𝑥1 𝑏2 𝐴∙𝑥 =𝑏
𝑥2
𝑎31 ⋱ ⋮ = ⋮

⋮ ⋱ ⋮ 𝑥𝑚 ⋮
𝑎𝑛1 … … 𝑎𝑛𝑚 𝑏𝑛
𝐴𝑇 𝐴 ∙ 𝑥 = 𝐴𝑇 ∙ 𝑏
𝑏1
𝑎11 𝑎21 … 𝑎𝑛1 𝑎11 … 𝑎1𝑚 𝑥1 𝑎11 𝑎21 … 𝑎𝑛1 𝑏2
𝑎21 ⋱ 𝑎2𝑚 𝑥2
⋮ ⋱ ⋱ ⋮ = ⋮ ⋱ ⋱ ⋮ ⋮
⋮ ⋱ ⋮ ⋮
𝑎1𝑚 … … 𝑎𝑛𝑚 𝑎𝑛1 … 𝑎𝑛𝑚 𝑥𝑚 𝑎1𝑚 … … 𝑎𝑛𝑚 ⋮
𝑏𝑛
𝑥 = 𝐴𝑇 𝐴 −1
(𝐴𝑇 ∙ 𝑏)
線形最小二乗法の一般解法
行列Aが n×m行列のとき、その転置行列ATは m×n行列で、そ
の積 A’=ATAは m×m行列(正方行列)になり「正則」になりう
る。また A’=ATAは 対称行列である。
𝑎11 𝑎12 … 𝑎1𝑚
𝑎21 𝑎22 𝑎2𝑚 𝐴𝑇 𝐴 = 𝐴′
𝐴= ⋮ ⋱ ⋮
⋮ ⋱ ⋮
𝑎𝑛1 … … 𝑎𝑛𝑚

𝑎11 𝑎21 … 𝑎𝑛1 𝑎11 … 𝑎1𝑚 𝑎′11 𝑎′12 … 𝑎′1𝑚


𝑎21 ⋱ 𝑎2𝑚 𝑎′21 𝑎′22 … 𝑎′2𝑚
⋮ ⋱ ⋱ ⋮ =
⋮ ⋱ ⋮ ⋮ ⋮ ⋱ ⋮
𝑎1𝑚 … … 𝑎𝑛𝑚 𝑎𝑛1 … 𝑎𝑛𝑚 𝑎′𝑚1 𝑎′𝑚2 … 𝑎′𝑚𝑚
線形最小二乗法の一般解法の例
「温度を3回測った。26℃,29℃,28℃であった」温度は
何度か?

𝑇 = 26 1 26 1 26
𝑇 = 29 1 𝑇 = 29 1 1 1 1 𝑇= 1 1 1 29
𝑇 = 28 1 28 1 28
T

3𝑇 = 26 + 29 + 28
T= 27.67 T = 27.67

t
線形最小二乗法の例1 x 0 1 2 3
y 3 6 5 4
y
表の(x, y)の最も近い点を通る二次曲線
y= 𝑎0 + 𝑎1 ∙ 𝑥 + 𝑎2 ∙ 𝑥 2
を求めよ。 y= 𝑎0 + 𝑎1 ∙ 𝑥 + 𝑎2 𝑥 2

1 0 0 𝑎 3 3
0 1 1 1 1 1 0 0 𝑎
0 1 1 1 1 x
1 1 1 𝑎 = 6 0 1 2 3 1 1 1 𝑎 = 0 1 2 3
6
1 2 4 𝑎1 5 0 1 4 9
1 2 4 𝑎1
2 0 1 4 9
5
2 1 3 9 4
1 3 9 4
4 6 14 𝑎0 18
6 14 36 𝑎1 = 28
課題1-1 a0, a1, a2 を求めよ 14 36 98 𝑎2 62
線形最小二乗法の例2 V (x, y)
-2 (-1, -1) -1 (0, -1) 0 (1, -1)
中央が最大値を取る間隔1の格子 0 (-1, 0) 2 (0,0) 1 (1, 0)
0 (-1, 1) 1 (0,1) 0 (1, 1)
点9点の数値が表の値であるとき
9点を二次曲面近似したい。以下
の関数を決めよ。(a ~ f を求めよ)
V = 𝑎 ∙ 𝑥 2 +𝑏 ∙ 𝑥𝑦 + 𝑐 ∙ 𝑦 2 + 𝑑 ∙ 𝑥 + 𝑒 ∙ 𝑦 + 𝑓
−2 1 1 1 −1 −1 1
𝑎 −1 0 0 1 0 −1 1
1 0 1 1 0 1 1 0 1
𝑏 0 1 −1 1 1 −1 1
1 0 0 −1 0 1 1 0 −1 0 0 0 −1 0 1
𝑐 0
𝐴 𝑑 = 2 𝐴= 0 0 0 0 0 1 𝐴𝑇 = 1 1 1 0 0 0 1 1 1
−1 0 1 −1 0 1 −1 0 1
𝑒 1 1 0 0 1 0 1
1 −1 1 −1 1 1 −1 −1 −1 0 0 0 1 1 1
𝑓 0
0 0 1 0 1 1 1 1 1 1 1 1 1 1 1
1
0 1 1 1 1 1 1
1 1 1 −1 −1 1
1 0 1 1 0 1 1 0 1 0 0 1 0 −1 1
1 0 −1 0 0 0 −1 0 1 1 −1 1 1 −1 1
1 0 0 −1 0 1
𝐴𝑇 = 1 1 1 0 0 0 1 1 1
𝐴= 0 0 0 0 0 1
−1 0 1 −1 0 1 −1 0 1
−1 −1 −1 0 0 0 1 1 1 1 0 0 1 0 1
1 −1 1 −1 1 1
1 1 1 1 1 1 1 1 1
0 0 1 0 1 1
1 1 1 1 1 1

−2
𝑎 −1 𝑎 6 0 4 0 0 6 𝑎 −1
𝑏 0 𝑏 0 4 0 0 0 0 𝑏 −2
0 𝑐
𝑐
𝐴𝑇 𝐴 𝑑 = 𝐴𝑇 𝐴𝑇 𝐴 𝑑 = 4 0 6 0 0 6 𝑐 = 𝑋2
2 0 0 0 6 0 0 𝑑 𝑋3
𝑒 1 𝑒 0 0 0 0 6 0 𝑒 𝑋4
0 𝑓
𝑓 6 0 6 0 0 𝑋1 𝑓 1
1
0
課題2-1 X1,X2,X3,X4を求めよ
課題2-2 a,b,c,d,e,fを求めよ
(a,b,c,d,e,f)が求まると、この2次関数のピーク位置(x,y)と
ピーク値V(x,y)が求まる。
V = 𝑎 ∙ 𝑥 2 +𝑏 ∙ 𝑥𝑦 + 𝑐 ∙ 𝑦 2 + 𝑑 ∙ 𝑥 + 𝑒 ∙ 𝑦 + 𝑓

ピーク位置(x, y)の条件は
𝜕V
= 2𝑎𝑥 + 𝑏𝑦 + 𝑑=0
𝜕𝑥
𝜕V
= 𝑏𝑥 + 2𝑐𝑦 + 𝑒=0
𝜕𝑦
2𝑎 𝑏 𝑥 −𝑑
𝑦 =
𝑏 2𝑐 −𝑒
𝑥 1 2𝑐 −𝑏 −𝑑
𝑦 = 4𝑎𝑐 − 𝑏 2 −𝑏 2𝑎 −𝑒
宿題
• 線形最小二乗法の例1
課題1-1を求めてWebClassに提出せよ。
また、求まった2次関数を図示して正しいことを確認しましょう。
(図は提出しなくてよい)

• 線形最小二乗法の例2
課題2-1,課題2-2を求めWebClassに提出せよ。

You might also like