机器学习之 scikit-learn 开发入门(4)

机器学习之 scikit-learn 开发入门 -

监督学习- Lasso 回归介绍

曹华

个人介绍:曹华,2018 年加入去哪儿网技术团队。目前在火车票事业部/技术部小组。个人对图像处理、数据挖掘、图论、VR 等有浓厚兴趣。

一、概要

本文主要讲解 Lasso 回归的实践与原理,主要内容包括:

Lasso回归的介绍

Lasso回归算法类库介绍

Lasso回归应用示例

Lasso回归的原理

总结

通过文本的介绍,希望大家可以掌握Lasso回归的使用,了解Lasso回归的原理。

二、Lasso 回归的介绍

三、scikit-learn Lasso 回归算法类库介绍

scikit-learn 逻辑回归算法类库对应的是Lasso。下面就对Lasso的重要参数做一个总结。

四、Lasso 回归应用示例

4.1 导入头文件

4.2 样本数据

4.3 训练模型

4.4 预测验证

4.5 训练得到的 Lasso 模型

可知 Lasso 模型为:

4.6 交叉验证

4.7 画出预测值与真实值的线形图

五、Lasso 回归的原理

首先我们回顾下

线性回归

的标准方程:

我们需要求得 w 和 b 的值。在线性回归中我们利用最小二乘法求得 w 和 b,但是最小二乘法没有对特征的罚分机制,很容易过拟合,所以 Lasso 在线性回归的基础上修改了损失函数,加入了正则化项。

其中 n 为样本个数,α 为常数系数,需要进行调优。||θ||1 为 L1 范数。这里的 α 近似于应用示例中的 alpha。 在这里 sklearn 使用了坐标轴下降法求损失函数的极值。坐标轴下降法的数学依据是:一个可微的凸函数 J(θ),其中 θ 是 nx1 的向量,即有 n 个维度。如果在某一点 i,使得 J(θ) 在每一个坐标轴上都是最小值,那么 J(i) 就是一个全局的最小值。于是我们的优化目标就是在 θ 的 n 个坐标轴上对损失函数做迭代的下降,当所有的坐标轴上的 θi(i = 1,2,...n) 都达到收敛时,我们的损失函数最小,此时的 θ 即为我们要求的结果。

算法流程如下:

1. 首先,我们把 θ 向量随机取一个初值。记为 θ(0),括号里面的数字代表我们迭代的轮数,当前初始轮数为 0。

2. 对于第 k 轮的迭代。我们从 θ1(k) 开始,到 θn(k) 为止,依次求得 θi(k)。 θi(k) 的表达式如下:

3. 检查 θ(k) 向量和 θ(k−1) 向量在各个维度上的变化情况,如果在所有维度上变化都足够小,那么 θ(k) 即为最终结果,否则转入 2,继续第 k+1 轮的迭代。

六、总结

Lasso 回归可以使得一些特征的系数变小,甚至还是一些绝对值较小的系数直接变为 0。增强模型的泛化能力。为什么会变为 0 可以参考机器学习中的范数规则化之(一)L0、L1 与 L2 范数:

岭回归与 Lasso 回归最大的区别在于岭回归引入的是 L2 范数惩罚项,Lasso 回归引入的是 L1 范数惩罚项,Lasso 回归能够使得损失函数中的许多 θ 均变成 0,这点要优于岭回归,因为岭回归是要所有的 θ 均存在的,这样计算量 Lasso 回归将远远小于岭回归。

因此 Lasso 是压缩传感领域的基础(参见压缩感知 http://scikit-learn.org/stable/auto_examples/applications/plot_tomography_l1_reconstruction.html#sphx-glr-auto-examples-applications-plot-tomography-l1-reconstruction-py)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010G0BHRN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券