机器学习--02算法--02岭回归(Ridge Regression Algorithm)

  岭回归是在线性回归的代价函数上增加L2范数,是为了解决线性归回中自变量相关性太高导致的多重共线性问题。

一、引言

标准线性回归的代价函数的解析解 w 为:
w = ( X T X ) − 1 X T y w=(X ^T X) ^{−1} X ^T y w=(XTX)1XTy

其中提到如果矩阵 X 的转置与矩阵 X 相乘后的矩阵不是满秩矩阵时,这个矩阵是不可逆的,还提到其本质是多个自变量 x 之间存在多重共线性。下面来介绍多重共线性的问题与解决这个问题的其中一个方法 - 岭回归1(Ridge Regression)

二、多重共线性

先来看看多重共线性在维基百科中的解释:

多重共线性2(Multicollinearity)是指多变量线性回归中,变量之间由于存在精确相关关系或高度相关关系而使回归估计不准确。

那么什么是精确相关关系与高度相关关系呢?假如有下面的(1)式,其中 w 1 = 2 , w 2 = 3 w_1=2,w_2=3 w1=2w2=3,同时如果又存在(2)式的关系,这时就说明 x 1 与 x 2 x_1与x_2 x1x2存在精确相关关系。当 x 1 与 x 2 x_1与x_2 x1x2之间存在近似精确相关关系,例如 x 1 x_1 x1约等于 2 倍的 x 2 x_2 x2,则说明存在高度相关关系。
D ( x ) = { y = 2 x 1 + 3 x 2 , ( 1 ) x 2 = 2 x 1 , ( 2 ) D(x) = \begin{cases} y=2x_1+3x_2, &(1)\\ x_2=2x_1,&(2)\\ \end{cases} D(x)={y=2x1+3x2,x2=2x1,12

因为由(2)式可以将(1)式改写成不同的形式,这样就会导致 w 存在无数种解,会使得最后的回归估计不准确。

在这里插入图片描述
根据 w 的解析解,可以通过下面的公式来求解其中的逆矩阵运算,被除数为矩阵的伴随矩阵,除数为矩阵的行列式。可以看到矩阵可逆的条件是其行列式不能为零。

( X T X ) − 1 = ( X T X ) ∗ ∣ X T X ∣ {(X^TX)}^{-1} = \frac{(X^TX)^*}{|X^TX|} (XTX)1=XTX(XTX)

如果自变量之间存在多重共线性,会使得矩阵的行列式为零,导致矩阵不可逆。如下图中的示例 X,可以看到 x 1 与 x 2 x_1与x_2 x1x2存在精确相关关系,相乘后的矩阵经过初等变换4后其行列式为零,说明相乘后的矩阵的行列式也必然为零(初等变换不改变行列式为零的判断),这时的矩阵不可逆。如果自变量之间是高度相关关系,会使得矩阵的行列式近似等于零,这时所得的 w 的偏差会很大,也会造成回归估计不准确。

在这里插入图片描述
多重共线性的问题既然是自变量之间存在相关关系,其中一个解决方法就是剔除掉共线的自变量,可以通过计算方差扩大因子5(Variance inflation factor,VIF)来量化自变量之间的相关关系,方差扩大因子越大说明自变量的共线性越严重。

  另一种方式是通过对代价函数正则化加入惩罚项来解决,其中一种正则化方式被称为吉洪诺夫正则化(Tikhonov regularization),这种代价函数正则化后的线性回归被称为岭回归(Ridge Regression)。

三、算法步骤

岭回归的代价函数第一项与标准线性回归的一致,都是欧几里得距离的平方和,只是在后面加上了一个 w 向量的 L2-范数6 的平方作为惩罚项(L2-范数的含义为向量 W 每个元素的平方和然后开平方),其中 λ 表示惩罚项的系数,人为的控制惩罚项的大小。由于正则项是 L2-范数,有时这种正则化方式也被称为 L2 正则化。
Cost ⁡ ( w ) = ∑ i = 1 N ( y i − w T x i ) 2 + λ ∥ w ∥ 2 2 \operatorname{Cost}(\mathrm{w})=\sum_{\mathrm{i}=1}^{\mathrm{N}}\left(\mathrm{y}_{\mathrm{i}}-\mathrm{w}^{\mathrm{T}} \mathrm{x}_{\mathrm{i}}\right)^{2}+\lambda\|\mathrm{w}\|_{2}^{2} Cost(w)=i=1N(yiwTxi)2+λw22
代价函数通过求导直接得到 w 的解析解,其中 X 为 N x M 矩阵,y 为 N 维列向量, λ 属于实数集,I 为 M x M 的单位矩阵。
w = ( X T X + λ I ) − 1 X T y λ ∈ R \mathrm{w}=\left(\mathrm{X}^{\mathrm{T}}\mathrm{X}+\lambda\mathrm{I}\right)^{-1}\mathrm{X}^\mathrm{T}\mathrm{y}\quad\lambda\in\mathbb{R} w=(XTX+λI)1XTyλR
X = [ x 1 T x 1 T x 2 T ⋮ x N T ] = [ X 11 X 12 ⋯ X 11 X 21 X 22 ⋯ X 21 ⋮ ⋮ ⋱ ⋮ X N 1 X N 2 ⋯ X N M ] y = ( y 1 y 2 ⋮ y N ) X=\left[\begin{array}{c}x_1^T\\ x_1^T\\ x_2^T\\ \vdots\\ x_N^T\end{array}\right]=\left[\begin{array}{c}X_{11}&X_{12}&\cdots&X_{11}\\ X_{21}&X_{22}&\cdots&X_{21}\\ \vdots&\vdots&\ddots&\vdots\\ X_{N1}&X_{N2}&\cdots&X_{NM}\end{array}\right]\quad y=\left(\begin{array}{c}y_1\\ y_2\\ \vdots\\ y_N\end{array}\right) X= x1Tx1Tx2TxNT = X11X21XN1X12X22XN2X11X21XNM y= y1y2yN

四、求解

在这里插入图片描述__________________________________________________________________________
在这里插入图片描述
可以看到岭回归代价函数的解析解相较于标准线性回归来说多了一个可以人为控制的对角矩阵,这时可以通过调整不同的 λ 来使得括号内的矩阵可逆。

五、代码实现

纯python

import numpy as np

def ridge(X, y, lambdas=0.1):
    """
    岭回归
    args:
        X - 训练数据集
        y - 目标标签值
        lambdas - 惩罚项系数
   return:
       w - 权重系数
   """
   return np.linalg.inv(X.T.dot(X) + lambdas * np.eye(X.shape[1])).dot(X.T).dot(y)

sklearn实现

from sklearn.linear_model import Ridge

# 初始化岭回归器
reg = Ridge(alpha=0.1, fit_intercept=False)
# 拟合线性模型
reg.fit(X, y)
# 权重系数
w = reg.coef_

六、示例演示

下图展示了惩罚系数 λ 对各个自变量的权重系数的影响,横轴为惩罚系数 λ ,纵轴为权重系数,每一个颜色表示一个自变量的权重系数:
在这里插入图片描述
在这里插入图片描述
可以看到当 λ 越大时( λ 向左移动),惩罚项占据主导地位,会使得每个自变量的权重系数趋近于零,而当 λ 越小时( λ 向右移动),惩罚项的影响越来越小,会导致每个自变量的权重系数震荡的幅度变大。在实际应用中需要多次调整不同的 λ 值来找到一个合适的模型使得最后的效果最好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ridge回归是一种机器学习算法,它是线性回归的一种变种。它在标准线性回归的基础上加入了一个正则化项,以防止过拟合。Ridge回归的核心思想是通过最小化代价函数来找到最优的回归系数。代价函数由两部分组成,一部分是均方误差,用来衡量预测值与实际值之间的差距;另一部分是正则化项,用来控制回归系数的大小。正则化项中的参数λ决定了正则化的程度,越大则对回归系数的限制越严格。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习算法-线性回归、Lasso回归Ridge回归算法python实现](https://download.csdn.net/download/LYQZDX/87921627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [机器学习算法系列(四)- 岭回归算法Ridge Regression Algorithm)](https://blog.csdn.net/sai_simon/article/details/122337097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [机器学习算法系列篇9:Lasso 和 Ridge回归算法](https://blog.csdn.net/robot_learner/article/details/103942849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值