机器学习之 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)。
领取专属 10元无门槛券
私享最新 技术干货