目录

1. Lasso回归

1.1 概念

1.2 正则化

1.3 Lasso回归模型

1.4 为什么Lasso Regression可以做降维?

1.5 参数求解

(1)坐标轴下降法

(2)最小角回归法

2.  L1、L2正则化

2.1  L1、L2正则化来源推导

2.1.1 正则化理解之基于约束条件的最优化

2.1.2 正则化理解之最大后验概率估计

2.2  L1、L2正则化效果分析

2.2.1 直观理解

2.2.2 理论分析

3. 回归问题中的损失函数

3.1 平方损失函数:MSE- L2 Loss

3.2 绝对值损失函数:MAE - L1 Loss

MAE相比MSE的优点:

MAE的不足:

那么什么时候用MSE,什么时候用MAE呢?

MSE与MAE都不能很好解决的问题:

3.3 Huber损失函数

为什么使用Huber?


1. Lasso回归

————————————————
版权声明:本文为CSDN博主「Foneone」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/foneone/article/details/96576990

1.1 概念

【转载:从Lasso开始说起,https://zhuanlan.zhihu.com/p/46999826】

Lasso是Least Absolute Shrinkage and Selection Operator的简称,是一种采用了L1正则化(L1-regularization)的线性回归方法,采用了L1正则会使得部分学习到的特征权值为0,从而达到稀疏化和特征选择的目的。

【转载:本文链接:回归问题-Lasso回归,https://blog.csdn.net/foneone/article/details/96576990】

Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集(降阶)为思想的压缩估计方法。它通过构造一个惩罚函数,可以将变量的系数进行压缩使某些回归系数变为0,进而达到变量选择的目的。

1.2 正则化

正则化(Regularizaiton)是一种防止过拟合的方法。

图1 欠拟合和过拟合

从图中可以看出,最右边的属于一种过拟合,过拟合的问题通常发生在变量(特征)过多的时候,这种情况下训练出的方程总是能很好的拟合训练数据,也就是损失函数可能非常接近于 0 或者就为 0但是,这样的曲线会导致它无法泛化到新的数据样本中

如果解决过拟合问题?

(1)尽量减少选取变量的数量

可以人工检查每一项变量,并以此来确定哪些变量更为重要,保留那些更为重要的特征变量。这种做法非常有效,但是其缺点是当舍弃一部分特征变量时,也舍弃了问题中的一些信息。例如,所有的特征变量对于预测房价都是有用的,实际上并不想舍弃一些信息或者说舍弃这些特征变量。

(2)正则化

在正则化中将保留所有的特征变量,但是会减小特征变量的数量级。 当有很多特征变量时,其中每一个变量都能对预测产生一点影响。假设在房价预测的例子中,可以有很多特征变量,其中每一个变量都是有用的,因此不希望把任何一个变量删掉,这就导致了正则化概念的发生。

如果应用正则化去解决实际问题?

在图1中,可以看出最右边的是过拟合的,但是不想抛弃变量自带的信息,因此加上惩罚项,使得足够小

优化目标为:

        ------------原有的代价函数

在优化目标的基础上,添加一些项(惩罚项),如下:

      -------------------新的损失函数,新的代价函数

1000 只是随便写的一个表示很大的数字。现在,如果想要最小化这个函数,那么为了最小化这个新的损失函数,就要让尽可能小。因为,如果在原有代价函数的基础上加上 这一项 ,那么这个新的代价函数将变得很大,所以,当最小化这个新的代价函数时, 尽可能小或者接近于0,就像我们忽略了这两个值一样。如果做到这一点(接近于0),那么我们将得到一个近似的二次函数,并且中并没有丢失的信息(虽然接近于0,但是还是存在的)

但是在真实问题中,一个预测问题可能有上百种特征,并不知道哪一些是高阶多项式的项,就像不知道是高阶的项。所以,如果假设有一百个特征,并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。 因此在正则化里,要做的事情,就是减小损失函数中所有的参数值(因为并不知道是哪一个或哪几个是要去缩小的)。
因此,我们需要修改代价函数,变成如下形式:

其中就是正则化项; λ称为正则化参数,作用是控平衡拟合训练的目标和保持参数值较小。

1.3 Lasso回归模型

一般来说,回归问题是一个函数拟合的过程,那么我们希望模型不要太复杂,否则很容易发生过拟合现象,所以我加入正则化项,而不同的正则化项就产生了不同的回归方法,其中以Ridge Regression(岭回归)和Lasso最为经典,前者是加入了L2正则化项,后者加入的是L1正则化项。

Lasso回归是在损失函数后,加L1正则化,如下所示:

m为样本个数,k为参数个数,其中为L1正则化。

----> 还有L2正则化:,加了这种正则化的损失函数模型为:脊(岭)回归(Ridge Regression)

1.4 为什么Lasso Regression可以做降维?

图2

以二维数据空间为例,说明Lasso和Ridge两种方法的差异,左图对应于Lasso方法,右图对应于Ridge方法

如上图所示,两个图是对应于两种方法的等高线与约束域。红色的椭圆代表的是随着λ的变化所得到的残差平方和,βˆ为椭圆的中心点,为对应普通线性模型的最小二乘估计

左右两个图的区别在于约束域,即对应的蓝色区域。

等高线和约束域的切点就是目标函数的最优解

  • Ridge方法。对应的约束域是,其切点只会存在于圆周上,不会与坐标轴相切,则在任一维度上的取值都不为0,因此没有稀疏;
  • Lasso方法。其约束域是正方形,会存在与坐标轴的切点,使得部分维度特征权重为0,因此很容易产生稀疏的结果。

所以,Lasso方法可以达到变量选择的效果将不显著的变量系数压缩至0,而Ridge方法虽然也对原本的系数进行了一定程度的压缩,但是任一系数都不会压缩至0,最终模型保留了所有的变量。

以二维空间为例,约束域在L1中,为,对应左图蓝色

约束域在L2中,为,对应左图蓝色

由图也可以看出,Lasso的复杂程度由λ来控制,λ越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。

1.5 参数求解

(1)坐标轴下降法

(2)最小角回归法

过程(略)见原博客

2.  L1、L2正则化

【转载:深入理解L1、L2正则化 - MrLi的文章 - 知乎 https://zhuanlan.zhihu.com/p/29360425】

正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度减小过拟合。--->应先看Lasso 回归Regression

最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。其数学表达形式为:

式中X、y 为训练样本和相应标签,w为权重系数向量;J()为目标函数,即为惩罚项,可理解为模型“规模”的某种度量;参数控制正则化强弱。不同的函数对权重w的最优解有不同的偏好,因而会产生不同的正则化效果。最常用的函数有两种,即范数和范数,相应称之为正则化(绝对值)和正则化(平方)。此时有:

本文将从不同角度详细说明 正则化的推导、求解过程,并对范数产生稀疏性效果的本质予以解释

2.1  L1、L2正则化来源推导

可从带约束条件的优化求解和最大后验概率两种思路来推导正则化,下面将予以详细分析。

2.1.1 正则化理解之基于约束条件的最优化

对于模型权重系数 w求解是通过最小化目标函数实现的,即求解:

我们知道,模型的复杂度可用VC维来衡量。通常情况下,模型VC维与系数w的个数成线性关系:即w数量越多,VC维越大,模型越复杂

==>VC维:[关于VC维的理解], [机器学习和数据挖掘(7):VC维]

因此,为了限制模型的复杂度,很自然的思路是减少系数w的个数,即让w向量中一些元素为0或者说限制w中非零元素的个数。为此,我们可在原优化问题中加入一个约束条件:

范数表示向量中非零元素的个数。但由于该问题是一个NP问题,不易求解,为此我们需要稍微“放松”一下约束条件。

==>NP问题:

P:算起来很快的问题
NP:算起来不一定快,但对于任何答案我们都可以快速的验证这个答案对不对
NP-hard:比所有的NP问题都难的问题
NP-complete:满足两点:
1. 是NP hard的问题
2. 是NP问题

[什么是NP完全问题 https://www.jianshu.com/p/dcb0b52f4935], [什么是NP问题, https://blog.csdn.net/yangtrees/article/details/8107563]

为了达到近似效果,我们不严格要求某些权重w为0,而是要求权重w应接近于0,即尽量小。从而可用  、范数来近似范数,即:

 或 

使用  范数时,为方便后续处理,可对进行平方,此时只需调整 C 的取值即可。利用拉格朗日算子法,我们可将上述带约束条件的最优化问题转换为不带约束项的优化问题,构造拉格朗日函数:

 或

其中>0  ,我们假设  的最优解为 ,则对拉格朗日函数求最小化等价于:

 或

可以看出,上式与等价。

故此,我们得到对  正则化的第一种理解:

  •  正则化等价于在原优化目标函数中增加约束条件 
  •  正则化等价于在原优化目标函数中增加约束条件 

2.1.2 正则化理解之最大后验概率估计

(略)

2.2  L1、L2正则化效果分析

2.2.1 直观理解

2.2.2 理论分析

(略)

3. 回归问题中的损失函数

3.1 平方损失函数:MSE- L2 Loss

  , Square

平方损失函数是光滑函数,能够用梯度下降法进行优化。然而,预测值距离真实值越远,平方损失的惩罚力度越大因此,它对异常点比较敏感为了解决该问题,可以采用绝对损失函数。

3.2 绝对值损失函数:MAE - L1 Loss

    , Average

MAE相比MSE的优点:

MAE相当于在做中值回归,相比做均值回归的MSE,MAE对异常点的鲁棒性更好。(中值回归与均值回归的介绍详见“补充信息”)

MAE的不足:

1. MAE在 处无法求导数。针对这种情况,平衡MSE的可导性和MAE的鲁棒性,可以采用Huber损失函数(在第3部分介绍)。

2. MAE更新的梯度始终相同,那么在接近最优值处可能仍维持着较大的梯度而错过最优值。

针对这种情况,可以使用变化的学习率,在接近最优值时降低学习率

而MSE在这种情况下表现较好,即使使用固定的的学习率也可以有效收敛。MSE损失的梯度随损失增大而增大,在损失趋于0时则减小,这使得在训练结束时,MSE模型的结果往往会更精确

那么什么时候用MSE,什么时候用MAE呢?

MSE:如果异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。

MAE:相反,如果只把异常值当作受损数据,则应选用MAE损失函数。

总而言之,处理异常点时,MAE更稳定,但它的导数不连续,因此求解效率较低。MSE对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。

MSE与MAE都不能很好解决的问题:

二者兼有的问题是:在某些情况下,上述两种损失函数都不能满足需求。例如,若数据中90%的样本对应的目标值为150,剩下10%在0到30之间。

那么使用MAE作为损失函数的模型可能会忽视10%的异常点,而对所有样本的预测值都为150。 这是因为模型会按中位数来预测。

而使用MSE的模型会给出很多介于0到30的预测值,因为模型会向异常点偏移均值回归

上述两种结果在许多商业场景中都是不可取的。

这些情况下应该怎么办呢?最简单的办法是对目标变量进行变换

而另一种办法则是换一个损失函数,这就引出了下面要讲的第三种损失函数,即Huber损失函数。

补充信息:

1. 中值回归就是我们优化的目标是使目标值趋于样本点值的中位数,直观理解就是大于 与 小于 目标值的样本点数尽量相等。

2. 均值回归的目标则是使目标值趋于样本点值的均值。

3. 为什么MSE是均值回归,而MAE是中值回归呢?

我在StackExchange找到一条很好的解释。

3.3 Huber损失函数

Huber损失函数在|y - f(x)|较小时为平方损失,在 |y - f(x)| 较大时为线性损失。并且处处可导。

这里超参数δ的选择非常重要,因为这决定了你对与异常点的定义。当残差大于δ,应当采用L1(对较大的异常值不那么敏感)来最小化,而残差小于超参数,则用L2来最小化。

由上图可知,超参数δ 越大,对异常点越敏感,因为δ 越大,huber损失函数接近于MSE。

为什么使用Huber?

在离最优值较远时,即|y - f(x)|较大时,Huber损失相当于MAE,对异常点有更好的鲁棒性;

当离最优值较近时,即|y - f(x)|较小时,Huber损失相当于MSE,随着损失的减小梯度也在逐渐减小,可以更好的逼近最优值,可以避免MAE中始终维持大梯度而错过最优值的问题。

使用MAE训练神经网络最大的一个问题就是不变的大梯度,这可能导致在使用梯度下降快要结束时,错过了最小点。

而对于MSE,梯度会随着损失的减小而减小,使结果更加精确。

在这种情况下,Huber损失就非常有用。它会由于梯度的减小而落在最小值附近。比起MSE,它对异常点更加鲁棒。因此,Huber损失结合了MSE和MAE的优点。但是,Huber损失的问题是我们可能需要不断调整超参数delta。

机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数相关推荐

  1. L1 / L2 正规化 (Regularization)

    过拟合 我们知道, 过拟合就是所谓的模型对可见的数据过度自信, 非常完美的拟合上了这些数据, 如果具备过拟合的能力, 那么这个方程就可能是一个比较复杂的非线性方程 , 正是因为这里的 x^3 和 x^ ...

  2. 学习机器学习四 回归模型——线性回归、L1正则化(Lasso回归)、L2正则化(ridge回归)

    还记得什么是回归吗?回忆下回归就是连续的输出,分类是离散的. 回归模型一般分为:①线性回归--就是线性方程,类似为一元一次方程(y=wx+b),比如你的年龄: ②逻辑回归(类似为曲线方程) 线性回归 ...

  3. 机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

    阅读本文需要的背景知识点:线性回归算法.一丢丢编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用--反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs ...

  4. 【人工智能】机器学习:岭回归与LASSO回归(Ridge/LASSO Regression)

    机器学习:岭回归与LASSO回归 (Ridge / LASSO Regression) 文章目录 机器学习:岭回归与LASSO回归 (Ridge / LASSO Regression) 1. Ridg ...

  5. Lasso回归系列三:机器学习中的L0, L1, L2, L2,1范数

    L0, L1, L2, L2,1范数 机器学习中的范数定义不同于数学中的定义. 对于向量xxx (x=[x1,x2,x3,...xm]x=[x_1,x_2,x_3,... x_m]x=[x1​,x2​ ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法13:Lasso回归

    Python机器学习算法实现 Author:louwill 第13讲和第14讲我们来关注一下回归模型的两个变种模型.本节我们要介绍的是基于L1正则化的Lasso模型,下一节介绍基于L2正则化的Ridg ...

  7. 套索回归 (Lasso Regression)的基本应用

    一.使用场合 与岭回归类似,套索 (Least Absolute Shrinkage and Selection Operator) 也会对回归系数的绝对值添加一个罚值.此外,它能降低偏差并提高线性回 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归

    Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification 6.2 假设表示 Hypothesis Representation 6.3 决策边 ...

  9. 【机器学习的数学基础】(四)解析几何(Analytic Geometry)(上)

    文章目录 3 解析几何(Analytic Geometry)(上) 3.1 范数 3.2 内积 3.2.1 点积 3.2.2 一般内积 3.2.3 对称正定矩阵 3.3 长度和距离 3.4 角度和正交 ...

最新文章

  1. Broadcast源码分析
  2. 文件寄生——寄生虫自体繁衍的道路
  3. 线性时间冰山查询算法(Linear-time Iceberg Query Algorithm )
  4. Python 的 heapq 模块源码分析
  5. 【CodeForces - 264A】Escape from Stones (模拟,卡精度的处理)
  6. Unity MeshBaker 合并网格和材质
  7. 骁龙865+65W闪充!realme 真我X50 Pro 5G正式全球发布
  8. CentOS自动打开网络连接
  9. linux中hadoop环境变量配置文件,Ubuntu中关于hadoop环境变量的设置方法
  10. localhost方式提交作业到spark运行
  11. python类方法和实例方法syntax errors_《Fluent Python》CH.11_面向对象_接口:从协议到抽象基类...
  12. 用存储过程生成实体类
  13. 推荐一个学习内核的博客
  14. 浅谈对JAVA堆栈的理解
  15. 网站让浏览器崩溃的原因有哪些
  16. Git基础之(三)——时光穿梭机
  17. 微软最走运、最倒霉的十个瞬间
  18. 隐私为何重要? 哪怕你无所隐瞒
  19. Oracle (1) :服务端和客户端的安装与配置
  20. 深圳天瑞地安:规范的Java开发让你编程更舒心

热门文章

  1. volatile变量与普通变量的区别
  2. ONOS之开放分布式SDN操作系统
  3. 关于思科三层交换机设置中继链路(trunk)报错!
  4. zipimport.ZipImportError: can't decompress data; zlib not available
  5. KingFly独家爆料!网络赚黑钱,你安心吗?(气愤)
  6. 去除(还原)git diff 时出现的 ^M
  7. RS485 串口调试如何操作
  8. 《Deep Learning With Python second edition》英文版读书笔记:第十一章DL for text: NLP、Transformer、Seq2Seq
  9. java怎么画词云_Matplotlib学习---用wordcloud画词云(Word Cloud)
  10. 32 vs 开发wince_“激光大炮”上央视了!秒射气球 一键启动32响