最佳预测系数推导
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=1∑NaiS(k−i))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
∂ai∂E[d2]=0,i=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
∂ai∂E[d2]=E[−2(S(k)−j=1∑NajS(k−j))S(k−i)]=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(k−i)]=E[j=1∑NajS(k−j)S(k−i)]
利用自相关函数
R
(
k
)
=
E
[
S
k
S
k
−
i
]
,
R(k)=E[S_kS_{k-i}],
R(k)=E[SkSk−i],将上式作展开得到:
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(N−1)R(2)=a1R(1)+a2R(2)+.......aNR(N−2)R(3)=a1R(2)+a2R(3)+.......aNR(N−3)...............................................................................................................R(N)=a1R(N−1)+a2R(N−2)+.......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(N−1)R(2)R(3)R(N−2)..................R(N−1)R(N−2)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)
J(a,b)=i=1∑m(yi−y(xi))2=i=1∑m(yi−axi−b)
如此一来问题便转化为找到最佳的参数
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θ
H(X)=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)(x−x0)+21f′′(x0)(x−x0)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)(x−x0)=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=x0−f′(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=xn−f′′(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=xn−H(f(xn))−1∇f(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)=⎣⎢⎢⎢⎢⎡∂x12∂2f∂x2∂x1∂2f...∂xn∂x1∂2f∂x1∂x2∂2fx22∂2f...∂xn∂x2∂2f.........∂x1∂xn∂2f∂x2∂xn∂2f...xn2∂2f⎦⎥⎥⎥⎥⎤
高斯-牛顿法
以上讨论的都是线性的方程,而对于非线性的最小二乘问题,可以通过高斯-牛顿法求解。高斯-牛顿法其本质为牛顿法的特例,依然是迭代求解。
设观测到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=1∑N∣∣fi(a)−yi∣∣2
对参数
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=1∑N2(fi(a)−yi)∗∂aj∂fi(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=⎣⎢⎢⎢⎡∂a1∂f1(a)∂a1∂f2(a)...∂a1∂fN(a)∂a2∂f1(a)∂a2∂f2(a)...∂a2∂fN(a).........∂aM∂f1(a)∂aM∂f2(a)...∂aM∂fN(a)⎦⎥⎥⎥⎤
代入牛顿法的迭代公式中:
a
n
+
1
=
a
n
−
H
−
1
J
T
r
a_{n+1}=a_n-H^{-1}J^Tr
an+1=an−H−1JTr
其中海森矩阵的第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 )
∂ak∂aj∂2ε(a)=2i=1∑N(∂ak∂fi(a).∂aj∂fi(a)+(fi(a)−yi).∂ak∂aj∂2fi(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=1∑N(fi(a)−yi).∂ak∂aj∂2fi(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