特征选择,也就是特征缩减,是通过对损失函数(即优化目标)加入惩罚项,使得训练求解参数过程中会考虑到系数的大小,通过设置缩减系数(惩罚系数),会使得影响较小的特征的系数衰减到0,只保留重要的特征。嵌入式特征选择方法有:LASSO(L1正则化)和岭回归(L2正则化)。特征选择,可消除噪声特征和消除关联的特征,并能减少训练开销。

对于特征选择,需要关注正则化概念,正则化是对损失函数(目标函数)加入一个惩罚项,使得模型由多解变为更倾向其中一个解,也成为罚函数。在介绍岭回顾和LASSO前,先介绍线性回归。

1、线性归回

对于一个样本xi,它的输出值是其特征的线性组合:

f(xi)=∑m=1pwmxim+w0=wTxi

其中, w0 称为截距,或者bias,上式中通过增加 xi0=1 把 w0 也吸收到向量表达中了,简化了形式,因此实际上 xi 有 p+1 维度。

线性回归的目标是用预测结果尽可能地拟合目标label,用最常见的最小平方误差:

J(w)=1n∑i=1n(yi−f(xi))2=1n∥y−Xw∥2

可以直接求出最优解:

w∗=(XTX)−1XTy

看起来似乎很简单,但是在实际使用的过程中会有不少问题,其中一个主要问题就是上面的协方差矩阵不可逆时,目标函数最小化导数为零时方程有无穷解,没办法求出最优解。尤其在 p>n 时,必然存在这样的问题,这个时候也存在overfitting的问题。这个时候需要对 w

做一些限制,使得它的最优解空间变小,也就是所谓的regularization,正则。

2、岭回归 ridge regeression

最为常见的就是对

w的模做约束,如ridge regression,岭回归,就是在线性回归的基础上加上l2-norm的约束,loss function是(习惯上一般会去掉前面线性回归目标函数中的常数项1n,同时为了后面推导的简洁性会加上一个12):

JR(w)=12∥y−Xw∥2+λ2∥w∥2

有解析解:

w^R=(XTX+λI)−1XTy

其中λ>0是一个参数,有了正则项以后解就有了很好的性质,首先是对w的模做约束,使得它的数值会比较小,很大程度上减轻了overfitting的问题;其次是上面求逆部分肯定可以解,在实际使用中ridge regression的作用很大,通过调节参数λ,可以得到不同的回归模型。

实际上ridge regression可以用下面的优化目标形式表达:

minw12∥y−Xw∥2,s.t.∥w∥2<θ

也就是说,我依然优化线性回归的目标,但是条件是 w 的模长不能超过限制 θ 。上面两种优化形式是等价的,可以找到一 一对应的 λ 和 θ 。

3、稀疏约束,Lasso

先看一下几种范式(norm)的定义,

∥w∥2=(∑iwi2)1/2
∥w∥1=∑i|wi|
∥w∥0=∑i1(wi≠0)

如前面的ridge regression,对 w 做2范式约束,就是把解约束在一个 l2 -ball里面,放缩是对球的半径放缩,因此 w 的每一个维度都在以同一个系数放缩,通过放缩不会产生稀疏的解——即某些 w 的维度是0。而实际应用中,数据的维度中是存在噪音和冗余的,稀疏的解可以找到有用的维度并且减少冗余,提高回归预测的准确性和鲁棒性(减少了overfitting)。在压缩感知、稀疏编码等非常多的机器学习模型中都需要用到稀疏约束。

稀疏约束最直观的形式应该是约束0范式,如上面的范式介绍,w的0范式是求w中非零元素的个数。如果约束∥w∥0≤k,就是约束非零元素个数不大于k。不过很明显,0范式是不连续的且非凸的,如果在线性回归中加上0范式的约束,就变成了一个组合优化问题:挑出≤k个系数然后做回归,找到目标函数的最小值对应的系数组合,是一个NP问题。

有趣的是,l1-norm(1范式)也可以达到稀疏的效果,是0范式的最优凸近似,借用一张图[1]: 

很重要的是1范式容易求解,并且是凸的,所以几乎看得到稀疏约束的地方都是用的1范式。

回到本文对于线性回归的讨论,就引出了Lasso(least absolute shrinkage and selection operator) 的问题:

minw12∥y−Xw∥2,s.t.∥w∥1<θ

也就是说约束在一个 l1 -ball里面。ridge和lasso的效果见下图:

红色的椭圆和蓝色的区域的切点就是目标函数的最优解,我们可以看到,如果是圆,则很容易切到圆周的任意一点,但是很难切到坐标轴上,因此没有稀疏;但是如果是菱形或者多边形,则很容易切到坐标轴上,因此很容易产生稀疏的结果。这也说明了为什么1范式会是稀疏的。

机器学习知识点(二十一)特征选择之岭回归和LASSO相关推荐

  1. 机器学习十大经典算法之岭回归和LASSO回归

    机器学习十大经典算法之岭回归和LASSO回归(学习笔记整理:https://blog.csdn.net/weixin_43374551/article/details/83688913

  2. 机器学习总结(一):线性回归、岭回归、Lasso回归

    机器学习总结(一):线性回归.岭回归.Lasso回归 参考网址:https://blog.csdn.net/hzw19920329/article/details/77200475 主要是岭回归(脊回 ...

  3. [机器学习-实践篇]学习之线性回归、岭回归、Lasso回归,tensorflow实现的线性回归

    线性回归.岭回归.Lasso回归 前言 1.线性回归 2. 岭回归 3. Lasso回归 4. tensorflow利用梯度下降实现的线性回归 前言 本章主要介绍线性回归.岭回归.Lasso回归,te ...

  4. 机器学习——数据的共线性问题(岭回归、LASSO回归、逐步回归、主成分回归)

    一.如何检验共线性 容忍度(Trlerance):容忍度是每个自变量作为因变量对其他自变量进行回归建模时得到的残差比例,大小用1减得到的决定系数来表示.容忍度的值介于0和1之间,如果值越小,说明这个自 ...

  5. 线性回归与岭回归以及LASSO回归结果比较

    文章目录 多重共线性检验 线性回归(linear regression) 岭回归(ridge regression) LASSO回归 综合比较 为了能够比较直观地了解到三种回归方法的区别,本文基于李子 ...

  6. 【机器学习】岭回归和LASSO回归详解以及相关计算实例-加利福尼亚的房价数据集、红酒数据集

    文章目录 一,岭回归和LASSO回归 1.1 多重共线性 1.2 岭回归接手 1.3 线性回归的漏洞(线性系数的矛盾解释) 1.4 Ridge Regression 1.5 岭回归实例(加利福尼亚的房 ...

  7. [机器学习-原理篇]学习之线性回归、岭回归、Lasso回归

    线性回归.岭回归.Lasso回归 前言 一,线性回归--最小二乘 二,Lasso回归 三,岭回归 四, Lasso回归和岭回归的同和异 五, 为什么 lasso 更容易使部分权重变为 0 而 ridg ...

  8. [机器学习] - 岭回归与Lasso回归

    注:在学习机器学习中回归算法时,随时都会接触最小二乘法原理和求解过程,最小二乘法可能对于理工科的学生低头不见抬头见的知识点,特点是在我学习<数值分析>课程中,老师讲了些最小二乘法的历史[- ...

  9. Bobo老师机器学习笔记第八课-方差、偏差、岭回归、LASSO回归?

    对误差分类 问题一.什么是偏差和方差? 先看下面这幅图图: 方差: 都是围着数据中心的,方差越大则表示距离数据中心分布的越分散,越小说明越近越集中 偏差: 偏离数据中心, 偏差越大,说明整个数据距离中 ...

最新文章

  1. 在MVVM实践中的Command与CommandParameter的使用
  2. python.freelycode.com-每一个人都需要的Python类库
  3. Excahange2007邮件收件人的管理
  4. hashmap赋值给另一个hashmap_图解设计一个 HashMap
  5. oracle shared_pool_size 0,Oracle shared_pool_reserved_size参数设置说明
  6. webstorm怎么跑项目_看不懂代码,不会用框架,新手程序员入职后如何快速上手项目?...
  7. python3连接oracle 11G数据库
  8. JAVA语言怎么搞_Java语言
  9. redis 3.0 java 工具包_redis分布式锁工具包,提供纯Java方式调用
  10. 编译telepresence:fatal error: libavfilter/avfiltergraph.h: 没有那个文件或目录
  11. vue-cli3 处理静态文件 下载引用
  12. 第11章 拾遗3:虚拟局域网(VLAN)
  13. sigmoid和tanh激活函数与其导数的绘图详解
  14. 成都理工大学计算机类中外合办,成都理工大学代码
  15. 介绍5款非常棒的移动自动化测试工具
  16. 我的游戏开发收藏夹 (不定期更新)
  17. APC不间断电源说明书
  18. 微信开发者工具测试小程序
  19. ip段各个号段的含义
  20. Notepad快捷键Shift+Enter失效,无法启用向前搜索。

热门文章

  1. Java设计模式(十八):享元设计模式
  2. Java虚拟机详解(四)------垃圾收集器
  3. 洛谷P1816 忠诚 题解
  4. C++向量 vector动态数组
  5. git 解决多人修改相同的文件导致的冲突
  6. 打印出如下图案(菱形)
  7. Elasticsearch 存储模型
  8. idea 自定义工具栏
  9. 修改adb shell在pc端显示的名称
  10. S3c2440A WINCE平台HIVE注册表+binfs的实现