最小二乘法解法总结:梯度下降法、牛顿法、高斯-牛顿法

最佳预测系数推导

E [ d 2 ] = E [ ( S ( k ) − S e ( k ) ) 2 ] = E [ ( S ( k ) − ∑ i = 1 N a i S ( k − i ) ) 2 ] E[d^2]=E[(S(k)-S_e(k))^2]=E\Bigg[\bigg(S(k)-\sum_{i=1}^Na_iS(k-i)\bigg)^2\Bigg] E[d2]=E[(S(k)Se(k))2]=E[(S(k)i=1NaiS(ki))2]
对系数 a i a_i ai 求偏导,使偏导数等于0:
∂ E [ d 2 ] ∂ a i = 0 , i = 0 , 1 , 2...... , N \frac{\partial E[d^2]}{\partial a_i}=0,i=0,1,2......,N aiE[d2]=0i=0,1,2......,N

∂ E [ d 2 ] ∂ a i = E [ − 2 ( S ( k ) − ∑ j = 1 N a j S ( k − j ) ) S ( k − i ) ] = 0 \frac{\partial E[d^2]}{\partial a_i}=E\Bigg[-2\bigg(S(k)-\sum_{j=1}^Na_jS(k-j)\bigg)S(k-i)\Bigg]=0 aiE[d2]=E[2(S(k)j=1NajS(kj))S(ki)]=0
故可以得到:
E [ S ( k ) S ( k − i ) ] = E [ ∑ j = 1 N a j S ( k − j ) S ( k − i ) ] E[S(k)S(k-i)]=E\Bigg[\sum_{j=1}^Na_jS(k-j)S(k-i)\Bigg] E[S(k)S(ki)]=E[j=1NajS(kj)S(ki)]
利用自相关函数 R ( k ) = E [ S k S k − i ] , R(k)=E[S_kS_{k-i}], R(k)=E[SkSki],将上式作展开得到:
R ( 1 ) = a 1 R ( 0 ) + a 2 R ( 1 ) + . . . . . . . a N R ( N − 1 ) R ( 2 ) = a 1 R ( 1 ) + a 2 R ( 2 ) + . . . . . . . a N R ( N − 2 ) R ( 3 ) = a 1 R ( 2 ) + a 2 R ( 3 ) + . . . . . . . a N R ( N − 3 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R ( N ) = a 1 R ( N − 1 ) + a 2 R ( N − 2 ) + . . . . . . . a N R ( 0 ) \begin{aligned} R(1)=a_1R(0)+a_2R(1)+.......a_NR(N-1)\\ R(2)=a_1R(1)+a_2R(2)+.......a_NR(N-2)\\ R(3)=a_1R(2)+a_2R(3)+.......a_NR(N-3)\\ .........................................................\\......................................................\\R(N)=a_1R(N-1)+a_2R(N-2)+.......a_NR(0) \end{aligned} R(1)=a1R(0)+a2R(1)+.......aNR(N1)R(2)=a1R(1)+a2R(2)+.......aNR(N2)R(3)=a1R(2)+a2R(3)+.......aNR(N3)...............................................................................................................R(N)=a1R(N1)+a2R(N2)+.......aNR(0)

写为矩阵形式则为:
[ R ( 0 ) R ( 1 ) R ( 2 ) . . . . . . R ( N − 1 ) R ( 1 ) R ( 2 ) R ( 3 ) . . . . . . R ( N − 2 ) . . . . R ( 0 ) R ( N − 1 ) R ( N − 2 ) . . . . . . R ( 0 ) ] [ a 1 a 2 . . . a N ] = [ R ( 1 ) R ( 2 ) . . . R ( N ) ] \begin{bmatrix}R(0)&R(1)&R(2)&......&R(N-1)\\R(1)&R(2)&R(3)&......&R(N-2)\\....\\R(0)&R(N-1)&R(N-2)&......&R(0) \end{bmatrix} \quad \begin{bmatrix} a_1\\a_2\\...\\a_N\end{bmatrix} \quad = \begin{bmatrix} R(1) \\R(2)\\...\\R(N) \end{bmatrix} \quad R(0)R(1)....R(0)R(1)R(2)R(N1)R(2)R(3)R(N2)..................R(N1)R(N2)R(0)a1a2...aN=R(1)R(2)...R(N)

最小二乘法

最小二乘法是用来做函数拟合或者求函数极值的方法,通过最小化误差的平方和寻找数据的最佳函数匹配。
以最简单的一元线性回归模型为例,假设我们在观测中得到了 m m m个样本:
( x 1 , y 1 ) , ( x 2 , y 2 ) . . . . . ( x m , y m ) (x^1,y^1),(x^2,y^2) .....(x^m,y^m) (x1,y1),(x2,y2).....(xm,ym)
通过散点图对其建立了一元线性回归模型: y = a x + b y=ax+b y=ax+b, 对于每一个观测的样本值,都对应了两个拟合参数 a i a_i ai b i b_i bi ,由此我们可以建立误差函数
J ( a , b ) = ∑ i = 1 m ( y i − y ( x i ) ) 2 = ∑ i = 1 m ( y i − a x i − b ) J(a,b)=\sum_{i=1}^m(y^i-y(x^i))^2=\sum_{i=1}^m(y^i-ax^i-b) Jab=i=1m(yiy(xi))2=i=1m(yiaxib)
如此一来问题便转化为找到最佳的参数 a a a b b b,使得误差函数 J ( a , b ) J(a,b) J(a,b)的值达到最小。
其中解法有许多种,有对参数 a a a b b b 求偏导,使偏导数等于0,得到方程再求解的代数解法,但较为麻烦,通常使用矩阵的解法,设拟合函数的矩阵表达式为:

H ( X ) = X θ H(X)=Xθ HX=Xθ
其中θ为拟合函数的系数矩阵,X为样本矩阵,X的维度即为样本的维度,则误差函数的矩阵可以表示为:
J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) J(θ)=\frac{1}{2}(Xθ-Y)^T(Xθ-Y) Jθ=21(XθY)T(XθY)
对θ求偏导使偏导数等于0:
∂ J ( θ ) ∂ θ = X T ( X θ − Y ) = 0 \frac{\partial J(θ)}{\partialθ}=X^T(Xθ-Y)=0 θJθ=XT(XθY)=0
整理后得到:

X X T θ = X T Y XX^Tθ=X^TY XXTθ=XTY ,两边同时乘 ( X X T ) − 1 (XX^T)^{-1} (XXT)1,得到 θ = ( X X T ) − 1 X T Y θ=(XX^T)^{-1}X^TY θ=(XXT)1XTY,即为所求最佳参数矩阵

梯度下降法

梯度下降法是一种计算量更小的最小二乘法解法,对涉及到多维、多元的线性回归方程,梯度下降法比矩阵解法更有优势。
从数学上的角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数减少最快的方向,故沿着梯度的反方向便能找到误差函数的最小值。

下降步骤

若我们要求一个多元函数 f ( x ) = ( x 1 , x 2 , . . . , x n ) f(x)=(x_1,x_2,...,x_n) f(x)=(x1,x2,...,xn) 的最小值,设起始点 x ( 1 ) = ( x 1 ( 1 ) , x 2 ( 1 ) , . . . , x n ( 1 ) ) x^{(1)}=(x_1^{(1)},x_2^{(1)},...,x_n^{(1)}) x(1)=(x1(1),x2(1),...,xn(1)) ,则在此点处的梯度为:
∇ f ( x ( 1 ) ) = ( ∂ f ∂ x 1 ( 1 ) + ∂ f ∂ x 2 ( 1 ) + . . . ∂ f ∂ x n ( 1 ) ) \nabla f(x^{(1)})=(\frac{\partial f}{\partial x_1^{(1)}}+\frac{\partial f}{\partial x_2^{(1)}}+...\frac{\partial f}{\partial x_n^{(1)}}) f(x(1))=(x1(1)f+x2(1)f+...xn(1)f)
进行第一次梯度下降:
x ( 2 ) = x ( 1 ) − α . ∇ f ( x ( 1 ) ) x^{(2)}=x^{(1)}-α.\nabla f(x^{(1)}) x(2)=x(1)α.f(x(1))
式中α为梯度下降的步长,之后便重复上面的步骤进行迭代,得到的函数收敛时,可以认为取到了最小值。
在应用中可以设置精度 ε ,当函数在某点梯度的模小于ε时,可以认为取到了最小值。

牛顿法

牛顿法同样是通过迭代运算来寻求最优解的算法,相比于梯度下降法,其收敛速度更快。
牛顿法的原理是泰勒级数展开,通过前面的几项来近似代替求根公式复杂的方程的解:

  • f ( x ) f(x) f(x) x 0 x_0 x0 处展开为泰勒级数:
    f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 + . . . . . . . f(x)=f(x_0)+f'(x_0)(x-x_0)+ \frac{1}{2} f''(x_0)(x-x_0)^2+....... f(x)=f(x0)+f(x0)(xx0)+21f(x0)(xx0)2+.......

  • 取线性部分作为近似解,首先使用一阶展开 f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = 0 f(x)=f(x_0)+f'(x_0)(x-x_0)=0 f(x)=f(x0)+f(x0)(xx0)=0 作为 f ( x ) = 0 f(x)=0 f(x)=0 的近似解,解得:
    x 1 = x 0 − f ( x 0 ) f ′ ( x 0 ) x_1=x_0-\frac{f(x_0)}{f'(x_0)} x1=x0f(x0)f(x0)

  • 上面步骤所得到的只是一个近似解,要得到更高精度的解,要进行迭代:
    x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) x_{n+1}=x_n-\frac{f'(x_n)}{f''(x_n)} xn+1=xnf(xn)f(xn)

  • 当迭代次数足够大时,所得的 f ( x n + 1 ) f(x_{n+1}) f(xn+1) 无限趋近于0

上述为一维函数的牛顿法迭代公式,若为高维的函数,则用高维函数的泰勒展开推导,最终可得到迭代公式:
x n + 1 = x n − H ( f ( x n ) ) − 1 ∇ f ( x n ) x_{n+1}=x_n-H(f(x_n))^{-1}\nabla f(x_n) xn+1=xnH(f(xn))1f(xn)
其中 H ( f ( x n ) ) H(f(x_n)) H(f(xn)) 为海森矩阵:
H ( f ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 . . . ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f x 2 2 . . . ∂ 2 f ∂ x 2 ∂ x n . . . . . . . . . ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 . . . ∂ 2 f x n 2 ] H(f)=\begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial ^2f}{\partial x_1 \partial x_2} &...&\frac{\partial^2 f}{\partial x_1 \partial x_n}\\ \frac{\partial ^2f}{\partial x_2 \partial x_1}&\frac{\partial^2 f}{x_2^2}& ... &\frac{\partial ^2f}{\partial x_2 \partial x_n}\\ ...&...& &...\\\frac{\partial ^2f}{\partial x_n \partial x_1}&\frac{\partial^2 f}{\partial x_n \partial x_2}&...&\frac{\partial^2 f}{x_n^2}\\\end{bmatrix} \quad H(f)=x122fx2x12f...xnx12fx1x22fx222f...xnx22f.........x1xn2fx2xn2f...xn22f

高斯-牛顿法

以上讨论的都是线性的方程,而对于非线性的最小二乘问题,可以通过高斯-牛顿法求解。高斯-牛顿法其本质为牛顿法的特例,依然是迭代求解。

设观测到N个数据点 [ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x n , y n ) ] [(x_1,y_1),(x_2,y_2),...(x_n,y_n)] [(x1,y1),(x2,y2),...(xn,yn)] ,得到包含M个参数的非线性方程 f ( x , a 1 , a 2 . . . a m ) f(x,a_1,a_2...a_m) f(x,a1,a2...am) 拟合这N个数据点,设 f 1 ( a ) = f ( x 1 , a 1 , a 2 . . . a m ) f_1(a)=f(x1,a_1,a_2...a_m) f1(a)=f(x1,a1,a2...am), 则误差函数为:
ε ( a ) = ∑ i = 1 N ∣ ∣ f i ( a ) − y i ∣ ∣ 2 ε(a)=\sum_{i=1}^N ||f_i(a)-yi||^2 ε(a)=i=1Nfi(a)yi2

对参数 a j a_j aj 求偏导,使其等于0,得到方程:
∂ ε ( a ) ∂ a j = ∑ i = 1 N 2 ( f i ( a ) − y i ) ∗ ∂ f i ( a ) ∂ a j = 0 \frac{\partial ε(a)}{\partial a_j}=\sum_{i=1}^N 2(f_i(a)-y_i)*\frac{\partial f_i(a)}{\partial a_j} =0 ajε(a)=i=1N2(fi(a)yi)ajfi(a)=0

r = [ f 1 ( a ) − y 1 f 2 ( a ) − y 2 . . . f N ( a ) − y N ] r=\begin{bmatrix}f_1(a)-y_1\\f_2(a)-y_2\\...\\f_N(a)-y_N \end{bmatrix} \quad r=f1(a)y1f2(a)y2...fN(a)yN ,则方程可写为矩阵形式:
∇ ε ( a ) = 2 J T r \nabla ε(a)=2J^Tr ε(a)=2JTr

其中 J J J f ( a ) f(a) f(a) 的雅各比矩阵:
J = [ ∂ f 1 ( a ) ∂ a 1 ∂ f 1 ( a ) ∂ a 2 . . . ∂ f 1 ( a ) ∂ a M ∂ f 2 ( a ) ∂ a 1 ∂ f 2 ( a ) ∂ a 2 . . . ∂ f 2 ( a ) ∂ a M . . . . . . . . . ∂ f N ( a ) ∂ a 1 ∂ f N ( a ) ∂ a 2 . . . ∂ f N ( a ) ∂ a M ] J=\begin{bmatrix} \frac{\partial f_1(a)}{\partial a_1} & \frac{\partial f_1(a)}{\partial a_2} &...&\frac{\partial f_1(a)}{\partial a_M}\\ \frac{\partial f_2(a)}{\partial a_1} & \frac{\partial f_2(a)}{\partial a_2} &...&\frac{\partial f_2(a)}{\partial a_M}\\ ...&...& &...\\\frac{\partial f_N(a)}{\partial a_1} & \frac{\partial f_N(a)}{\partial a_2} &...&\frac{\partial f_N(a)}{\partial a_M}\\\end{bmatrix} \quad J=a1f1(a)a1f2(a)...a1fN(a)a2f1(a)a2f2(a)...a2fN(a).........aMf1(a)aMf2(a)...aMfN(a)

代入牛顿法的迭代公式中:
a n + 1 = a n − H − 1 J T r a_{n+1}=a_n-H^{-1}J^Tr an+1=anH1JTr
其中海森矩阵的第k行第j列的元素为:
∂ 2 ε ( a ) ∂ a k ∂ a j = 2 ∑ i = 1 N ( ∂ f i ( a ) ∂ a k . ∂ f i ( a ) ∂ a j + ( f i ( a ) − y i ) . ∂ 2 f i ( a ) ∂ a k ∂ a j ) \frac{\partial^2 ε(a) }{\partial a_k\partial a_j}=2\sum_{i=1}^N\bigg (\frac{\partial f_i(a) }{\partial a_k}.\frac{\partial f_i(a) }{\partial a_j}+(f_i(a)-y_i).\frac{\partial^2 f_i(a) }{\partial a_k\partial a_j} \bigg ) akaj2ε(a)=2i=1N(akfi(a).ajfi(a)+(fi(a)yi).akaj2fi(a))
故可得:
H = 2 ( J . J T + S ) H=2(J.J^T+S) H=2(J.JT+S)
S = ∑ i = 1 N ( f i ( a ) − y i ) . ∂ 2 f i ( a ) ∂ a k ∂ a j S=\sum_{i=1}^N(f_i(a)-y_i).\frac{\partial^2 f_i(a) }{\partial a_k\partial a_j} S=i=1N(fi(a)yi).akaj2fi(a)
在实际应用中很多时候 S S S 都可以忽略不计,代入迭代式中得到最终的迭代方程:
a n + 1 = a n − ( J . J T ) − 1 J T r a_{n+1}=a_n-(J.J^T)^{-1}J^Tr an+1=an(J.JT)1JTr

你可能感兴趣的:(数据压缩)