最小二乘法详细推导过程
假设给定一些列散列值(训练数据集)记为:
D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) . . . ( x n , y n ) D={(x_1,y_1),(x_2,y_2),(x_3,y_3)...(x_n,y_n)} D=(x1,y1),(x2,y2),(x3,y3)...(xn,yn)
需要找到找到一个函数:
y = f ( x ) = a x + b y=f(x)=ax+b y=f(x)=ax+b
使得 f ( x ) f(x) f(x)函数尽可能拟合 D D D,也就是需要找到一个 a a a和 b b b的值,使得将数据集全部带入到 f ( x ) f(x) f(x)中,让等式左边和右边的误差值最小:
{ a x 1 + b = y 1 a x 2 + b = y 2 a x 3 + b = y 3 . . . . . . a x n + b = y n \begin{cases} ax_1+b=y_1\\ ax_2+b=y_2\\ ax_3+b=y_3\\ ......\\ ax_n+b=y_n \end{cases}\\ \raisebox{2em}{} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧ax1+b=y1ax2+b=y2ax3+b=y3......axn+b=yn
由此,可以将问题转换为让以下函数的值最小:
δ ( a , b ) = ∑ i = 1 n ( a x i + b − y i ) 2 \delta(a,b)=\sum_{i=1}^n(ax_i+b-y_i)^2 δ(a,b)=i=1∑n(axi+b−yi)2
我们的目标就是最小化这个误差函数,即为:
m i n δ ( a , b ) = m i n ∑ i = 1 n ( a x i + b − y i ) 2 min\kern{0.3em} \delta(a,b)=min\kern{0.3em }\sum_{i=1}^n(ax_i+b-y_i)^2 minδ(a,b)=mini=1∑n(axi+b−yi)2
由于二次方程为开口向上的凹函数,因此,在 δ ( a , b ) \delta(a,b) δ(a,b)导数为0处方程取的最小值,则问题转换为解方程组:
{ Δ δ ( a , b ) Δ a = 2 ∗ ∑ i = 1 n [ ( a x i + b − y i ) ∗ x i ] = 0 Δ δ ( a , b ) Δ b = 2 ∗ ∑ i = 1 n ( a x i + b − y i ) = 0 \begin{cases} \frac{\varDelta\delta(a,b)}{\varDelta{a}}=2*\displaystyle\sum_{i=1}^n[(ax_i+b-y_i)*x_i]=0\\ \raisebox{0em}{}\\ \frac{\varDelta\delta(a,b)}{\varDelta{b}}=2*\displaystyle\sum_{i=1}^n(ax_i+b-y_i)=0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧ΔaΔδ(a,b)=2∗i=1∑n[(axi+b−yi)∗xi]=0ΔbΔδ(a,b)=2∗i=1∑n(axi+b−yi)=0
经过转换,可得到:
{ [ ∑ i = 1 n x i 2 ] a + [ ∑ i = 1 n x i ] b = ∑ i = 1 n x i ∗ y i [ ∑ i = 1 n x i ] a + n b = ∑ i = 1 n y i \begin{cases} [\displaystyle\sum_{i=1}^nx_i^2]a+[\displaystyle\sum_{i=1}^nx_i]b=\displaystyle\sum_{i=1}^nx_i*y_i\\ \raisebox{0em}{}\\ [\displaystyle\sum_{i=1}^nx_i]a+nb=\displaystyle\sum_{i=1}^ny_i\\ \end{cases}\\ ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧[i=1∑nxi2]a+[i=1∑nxi]b=i=1∑nxi∗yi[i=1∑nxi]a+nb=i=1∑nyi
系数行列式(通过行列式进行求解):
{ D = ∣ ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i n ∣ D x = ∣ ∑ i = 1 n x i ∗ y i ∑ i = 1 n x i ∑ i = 1 n y i n