python lasso做交叉验证_Python 机器学习算法实践:岭回归和LASSO

原标题:Python 机器学习算法实践:岭回归和LASSO

新媒体管家

前言

继续线性回归的总结, 本文主要介绍两种线性回归的缩减(shrinkage)方法的基础知识: 岭回归(Ridge Regression)和LASSO(Least Absolute Shrinkage and Selection Operator)并对其进行了Python实现。同时也对一种更为简单的向前逐步回归计算回归系数的方法进行了相应的实现。

正文

通过上一篇《机器学习算法实践-标准与局部加权线性回归》中标准线性回归的公式w=(X^T*X)^(-1)X^T*y中可以看出在计算回归系数的时候我们需要计算矩阵X^TX的逆,但是如果该矩阵是个奇异矩阵,则无法对其进行求解。那么什么情况下该矩阵会有奇异性呢?

X本身存在线性相关关系(多重共线性), 即非满秩矩阵。如果数据的特征中存在两个相关的变量,即使并不是完全线性相关,但是也会造成矩阵求逆的时候造成求解不稳定。

当数据特征比数据量还要多的时候, 即m

对于上面的两种情况,我们需要对最初的标准线性回归做一定的变化使原先无法求逆的矩阵变得非奇异,使得问题可以稳定求解。我们可以通过缩减的方式来处理这些问题例如岭回归和LASSO.

中心化和标准化

这里先介绍下数据的中心化和标准化,在回归问题和一些机器学习算法中通常要对原始数据进行中心化和标准化处理,也就是需要将数据的均值调整到0,标准差调整为1, 计算过程很简单就是将所有数据减去平均值后再除以标准差:

3cd4b1a8e9878d42013b6ed1f2fa4989.png

这样调整后的均值:

3bb5316755a360dcaac4bf7187df8acc.png

调整后的标准差:

15a1b5a88859f07c46efda5096e4f05a.png

之所以需要进行中心化其实就是个平移过程,将所有数据的中心平移到原点。而标准化则是使得所有数据的不同特征都有相同的尺度Scale, 这样在使用梯度下降法以及其他方法优化的时候不同特征参数的影响程度就会一致了。

如下图所示,可以看出得到的标准化数据在每个维度上的尺度是一致的(图片来自网络,侵删)

dbe83e3cb328b0e1fb00a2437ebd8a10.png

岭回归(Ridge Regression)

标准最小二乘法优化问题:

d971eac61cc7371bbb2c230a9d9487d3.png

也可以通过矩阵表示:

8532e2d9804de902bb03bcbe56324378.png

得到的回归系数为:

c5244b87484f7181fc0ed5c9ec974759.png

这个问题解存在且唯一的条件就是XX列满秩:rank(X)=dim(X).

即使X列满秩,但是当数据特征中存在共线性,即相关性比较大的时候,会使得标准最小二乘求解不稳定, XTX的行列式接近零,计算XTX的时候误差会很大。这个时候我们需要在cost f

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值