1 过拟合
参考链接:
2 线性回归优化方法
优化方法:
-
梯度下降法
-
最小二乘法(公式法)
-
牛顿法
-
拟牛顿法
2.1 牛顿法
牛顿法推导:
将 f ( x ) f(x) f(x)用泰勒公式展开到二阶,
f ( x t + 1 ) = f ( x t ) + f ′ ( x t ) ( x t + 1 − x t ) + 1 2 f ′ ′ ( x t ) ( x t + 1 − x t ) 2 f(x_{t+1}) = f(x_t) + f'(x_t)(x_{t+1} - x_t)+\frac{1}{2}f''(x_t)(x_{t+1} - x_t)^2 f(xt+1)=f(xt)+f′(xt)(xt+1−xt)+21f′′(xt)(xt+1−xt)2
对上式求导,并令导数等于0,求得x值
f ′ ( x t + 1 ) = f ′ ( x t ) + f ′ ′ ( x t ) x t + 1 − f ′ ′ ( x t ) x t = 0 f'(x_{t+1}) = f'(x_t) + f''(x_t)x_{t+1} -f''(x_t)x_t = 0 f′(xt+1)=f′(xt)+f′′(xt)xt+1−f′′(xt)xt=0
可以求得,迭代公式为:
x t + 1 = x t − f ′ ( x t ) f ′ ′ ( x t ) x_{t+1} = x_t - \frac{f'(x_t)}{f''(x_t)} xt+1=xt−f′′(xt)f′(xt)
推广到向量的情况,牛顿法公式为:
θ
:
=
θ
−
l
′
(
θ
)
l
′
′
(
θ
)
\theta :=\theta-\frac{l'(\theta)}{l''(\theta)}
θ:=θ−l′′(θ)l′(θ)
当 θ 是 向 量 值 的 时 候 , θ : = θ − H − 1 Δ θ l ( θ ) 当\theta是向量值的时候,\theta :=\theta - H^{-1}\Delta_{\theta}l(\theta) 当θ是向量值的时候,θ:=θ−H−1Δθl(θ)
其中,
Δ
θ
l
(
θ
)
\Delta_{\theta}l(\theta)
Δθl(θ)是
l
(
θ
)
l(\theta)
l(θ)对
θ
i
\theta_i
θi的偏导数,
H
H
H是
J
(
θ
)
J(\theta)
J(θ)的海森矩阵,
H
i
j
=
∂
2
l
(
θ
)
∂
θ
i
∂
θ
j
H_{ij} = \frac{\partial ^2l(\theta)}{\partial\theta_i\partial\theta_j}
Hij=∂θi∂θj∂2l(θ)
- 网上一个牛顿法求解的例子:
牛顿法优缺点:
- 收敛速度快,比梯度下降法迭代次数少很多
- 每次迭代都需要计算海森矩阵,计算较复杂,耗费计算成本
2.2 拟牛顿法
拟牛顿法的思路是用一个矩阵替代计算复杂的海森矩阵H,因此要找到符合H性质的矩阵。
要求得海森矩阵符合的条件,同样对泰勒公式求导 f ′ ( x ) = f ′ ( x 0 ) + f ′ ′ ( x 0 ) x − f ′ ′ ( x 0 ) x 0 f'(x) = f'(x_0) + f''(x_0)x -f''(x_0)x_0 f′(x)=f′(x0)+f′′(x0)x−f′′(x0)x0
令 x = x 1 x = x_1 x=x1,即迭代后的值,代入可得:
f ′ ( x 1 ) = f ′ ( x 0 ) + f ′ ′ ( x 0 ) x 1 − f ′ ′ ( x 0 ) x 0 f'(x_1) = f'(x_0) + f''(x_0)x_1 - f''(x_0)x_0 f′(x1)=f′(x0)+f′′(x0)x1−f′′(x0)x0
更一般的,
f ′ ( x k + 1 ) = f ′ ( x k ) + f ′ ′ ( x k ) x k + 1 − f ′ ′ ( x k ) x k f'(x_{k+1}) = f'(x_k) + f''(x_k)x_{k+1} - f''(x_k)x_k f′(xk+1)=f′(xk)+f′′(xk)xk+1−f′′(xk)xk
f ′ ( x k + 1 ) − f ′ ( x k ) = f ′ ′ ( x k ) ( x k + 1 − x k ) = H ( x k + 1 − x k ) f'(x_{k+1}) - f'(x_k) = f''(x_k)(x_{k+1}- x_k)= H(x_{k+1}- x_k) f′(xk+1)−f′(xk)=f′′(xk)(xk+1−xk)=H(xk+1−xk)
x k x_k xk为第k个迭代值
即找到矩阵G,使得它符合上式。
常用的拟牛顿法的算法包括DFP,BFGS等。
参考链接
拟牛顿法常用的算法DFP,BFGS等