赞
踩
岭回归在最小二乘法的基础上加上了一个
l
2
l_2
l2惩罚项
假设函数:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n
hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn
损失函数: J ( θ ) = 1 2 m ∑ i = 1 m [ ( ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ) ] J\left(\theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{[({{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta _{j}^{2}})]} J(θ)=2m1i=1∑m[((hθ(x(i))−y(i))2+λj=1∑nθj2)]
损失函数的矩阵形式: J ( θ ) = ( y − X θ ) T ( y − X θ ) + λ θ T θ J(\theta)= (y - X\theta)^T (y - X\theta) + \lambda \theta^T \theta J(θ)=(y−Xθ)T(y−Xθ)+λθTθ
其中:
岭回归算法的参数估计可以通过正规方程来求解。正规方程是一种闭合形式的解,适用于求解线性方程组。在岭回归中,我们添加了一个正则化项,以便在存在共线性的情况下稳定参数估计。下面是岭回归正规方程的推导过程:
要找到最小化损失函数的参数 θ \theta θ,我们对损失函数关于 θ \theta θ 求导并设为零:
∂ ∂ θ [ ( y − X θ ) T ( y − X θ ) + λ θ T θ ] = 0 \frac{\partial}{\partial \theta} \left[ (y - X\theta)^T (y - X\theta) + \lambda \theta^T \theta \right] = 0 ∂θ∂[(y−Xθ)T(y−Xθ)+λθTθ]=0
展开并简化上式:
对第一项
(
y
−
X
θ
)
T
(
y
−
X
θ
)
(y - X\theta)^T (y - X\theta)
(y−Xθ)T(y−Xθ) 求导得到:
−
2
X
T
(
y
−
X
θ
)
-2X^T(y - X\theta)
−2XT(y−Xθ)
对第二项
λ
θ
T
θ
\lambda \theta^T \theta
λθTθ 求导得到:
2
λ
θ
2\lambda\theta
2λθ
因此,我们有:
− 2 X T ( y − X θ ) + 2 λ θ = 0 -2X^T(y - X\theta) + 2\lambda\theta = 0 −2XT(y−Xθ)+2λθ=0
简化上述等式:
X T y − X T X θ + λ θ = 0 X^T y - X^T X\theta + \lambda\theta = 0 XTy−XTXθ+λθ=0
将上述等式重新排列,以解出 θ \theta θ:
X T X θ + λ θ = X T y X^T X\theta + \lambda\theta = X^T y XTXθ+λθ=XTy
合并 θ \theta θ 相关的项:
( X T X + λ I ) θ = X T y (X^T X + \lambda I)\theta = X^T y (XTX+λI)θ=XTy
其中 I I I 是单位矩阵。
最后,解出 θ \theta θ:
θ = ( X T X + λ I ) − 1 X T y \theta = (X^T X + \lambda I)^{-1} X^T y θ=(XTX+λI)−1XTy
这就是岭回归的正规方程。需要注意的是,由于加入了 λ I \lambda I λI,正则化项确保了 X T X + λ I X^TX + \lambda I XTX+λI 矩阵是可逆的(或者更准确地说,是正定的),这在处理共线性特征时特别重要,因为在普通最小二乘回归中 X T X X^T X XTX 可能是奇异的或接近奇异的。
一般形式:
重复以下步骤 直到收敛:
θ 0 : = θ 0 − λ 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ) {\theta_0}:={\theta_0}-\lambda \frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}}) θ0:=θ0−λm1i=1∑m((hθ(x(i))−y(i))x0(i))
θ j : = θ j − λ [ 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] {\theta_j}:={\theta_j}-\lambda [\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}] θj:=θj−λ[m1i=1∑m((hθ(x(i))−y(i))xj(i)+mλθj]
j = 1 , 2 , . . . n j=1,2,...n j=1,2,...n
θ j : = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) {\theta_j}:={\theta_j}(1-\alpha \frac{\lambda }{m})-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}} θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
λ \lambda λ是控制模型复杂度的因子,可看做收缩率的大小。 λ \lambda λ越大,收缩率越大,系数对于共线性的鲁棒性更强
矩阵形式:
θ = ( 1 − λ α m ) θ − α m X T ( X θ − Y ) \theta=(1-\lambda \frac \alpha m) \theta - \frac {\alpha} m {X}^T({X\theta} -{Y}) θ=(1−λmα)θ−mαXT(Xθ−Y)
θ = ( 1 − λ α m ) θ − α M X M T ( X M θ − Y M ) \theta=(1-\lambda \frac \alpha m) \theta - \frac {\alpha} M {X_M}^T({X_M\theta} -{Y_M}) θ=(1−λmα)θ−MαXMT(XMθ−YM)
其中
M
M
M为batch_size
,
X
M
X_M
XM表示
M
M
M条数据,
Y
M
Y_M
YM为
X
M
X_M
XM对应的
y
y
y的值。
θ = ( 1 − λ α m ) θ − α X ( i ) T ( X ( i ) θ − Y ( i ) ) \theta=(1-\lambda \frac {\alpha} m) \theta - {\alpha} {X^{(i)}}^T({X^{(i)}\theta} -{Y^{(i)}}) θ=(1−λmα)θ−αX(i)T(X(i)θ−Y(i))
下述代码详细的实现了矩阵计算方法、梯度下降法、批量梯度下降法、随机梯度下降法四种方法:
https://github.com/xiligey/npml/blob/master/npml/linear_model/ridge.py
运行测试代码结果如下:
https://github.com/xiligey/npml/blob/master/test/test_ridge.py
矩阵法系数:[[3.1976789 ]
[2.18770957]]
批量梯度下降法系数:[[3.1976789 ]
[2.18770957]]
小批量梯度下降法系数:[[3.25664069]
[2.03215727]]
随机梯度下降法系数:[[3.21467618]
[2.30263593]]
sklearn的岭回归回归系数:(array([[2.17620422]]), array([3.21107145]))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。