正则化惩罚项,机器学习中L1正则化和L2正则化的区别
正则化惩罚项,机器学习中L1正则化和L2正则化的区别详细介绍
本文目录一览: 损失函数与正则化惩罚
也叫代价函数,是同一个东西。是用来评估模型的预测值f(x)与真实值Y的差距,它是一个非负实值函数。
常用的损失函数有:
1.0-1损失函数(0-1 loss function)
??当预测错误时,损失函数值为1,预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度,也就是只要预测错误,预测错误差一点和差很多是一样的。
2.平方损失函数(quadratic loss function)
??该损失函数的意义也很简单,就是取预测差距的平方。
3.绝对值损失函数(absolute loss function)
??该损失函数的意义和上面差不多,只不过是取了绝对值而不是求绝对值,差距不会被平方放大。
4.对数损失函数(logarithmic loss function)
??这个损失函数就比较难理解了。事实上,该损失函数用到了极大似然估计的思想。P(Y|X)通俗的解释就是:在当前模型的基础上,对于样本X,其预测值为Y,也就是预测正确的概率。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。
全局损失函数
??上面的损失函数仅仅是对于一个样本来说的。而我们的优化目标函数应当是使全局损失函数最小。因此,全局损失函数往往是每个样本的损失函数之和,即:
??对于平方损失函数,为了求导方便,我们可以在前面乘上一个1/2,和平方项求导后的2抵消,即:
逻辑回归中的损失函数
在逻辑回归中,我们采用的是对数损失函数。由于逻辑回归是服从伯努利分布(0-1分布)的,并且逻辑回归返回的sigmoid值是处于(0,1)区间,不会取到0,1两个端点。因此我们能够将其损失函数写成以下形式:
二、正则化
描述一件物品时,描述的内容越丰富详实则约束越多,识别的泛化性就差,代表的事物就少。在训练数据不够多时,或者过度训练模型时,常常会导致过拟合。正则化方法即为在此时向原始模型引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称,这就引入了正则化惩罚项。
在机器学习里叫正则化,线性代数叫范数,统计学里叫惩罚项。
机器学习里:L1使用的是绝对值距离,也叫曼哈顿距离,L2使用的是平方距离,也叫做欧式(Euclidean)距离。
线性代数:L1 范数计算的是向量所有元素绝对值的和,L2 范数计算的是通常意义上的向量长度 。
正则化项L1和L2的直观理解及L1不可导处理
正则化(Regularization)
机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 ?1-norm 和 ?2-norm ,中文称作 L1正则化 和 L2正则化 ,或者 L1范数 和 L2范数 。
L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。下图是Python中Lasso回归的损失函数,式中加号后面一项α||w||1即为L1正则化项。
下图是Python中Ridge回归的损失函数,式中加号后面一项α||w||22即为L2正则化项。
一般回归分析中回归w表示特征的系数,从上式可以看到正则化项是对系数做了处理(限制)。 L1正则化和L2正则化的说明如下:
L1正则化是指权值向量w中各个元素的 绝对值之和 ,通常表示为||w||1
L2正则化是指权值向量w中各个元素的 平方和然后再求平方根 (可以看到Ridge回归的L2正则化项有平方符号),通常表示为||w||2
一般都会在正则化项之前添加一个系数,Python中用α表示,一些文章也用λ表示。这个系数需要用户指定。
那添加L1和L2正则化有什么用? 下面是L1正则化和L2正则化的作用 ,这些表述可以在很多文章中找到。
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
稀疏模型与特征选择
上面提到L1正则化有助于生成一个稀疏权值矩阵,进而可以用于特征选择。为什么要生成一个稀疏矩阵?
稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0.
通常机器学习中特征数量很多,例如文本处理时,如果将一个词组(term)作为一个特征,那么特征数量会达到上万个(bigram)。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。
L1和L2正则化的直观理解
这部分内容将解释 为什么L1正则化可以产生稀疏模型(L1是怎么让系数等于零的) ,以及 为什么L2正则化可以防止过拟合 。
L1正则化和特征选择
假设有如下带L1正则化的损失函数:
J=J0+α∑w|w|(1)
其中J0是原始的损失函数,加号后面的一项是L1正则化项,α是正则化系数。注意到L1正则化是权值的 绝对值之和 ,J是带有绝对值符号的函数,因此J是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。当我们在原始损失函数J0后添加L1正则化项时,相当于对J0做了一个约束。令L=α∑w|w|,则J=J0+L,此时我们的任务变成 在L约束下求出J0取最小值的解 。考虑二维的情况,即只有两个权值w1和w2,此时L=|w1|+|w2|对于梯度下降法,求解J0的过程可以画出等值线,同时L1正则化的函数L也可以在w1w2的二维平面上画出来。如下图:
图1? L1正则化
图中等值线是J0的等值线,黑色方形是L函数的图形。在图中,当J0等值线与L图形首次相交的地方就是最优解。上图中J0与L在L的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L函数有很多『突出的角』(二维情况下四个,多维情况下更多),J0与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。
而正则化前面的系数α,可以控制L图形的大小。α越小,L的图形越大(上图中的黑色方框);α越大,L的图形就越小,可以小到黑色方框只超出原点范围一点点,这是最优点的值(w1,w2)=(0,w)中的w可以取到很小的值。
类似,假设有如下带L2正则化的损失函数:
J=J0+α∑ww2(2)
同样可以画出他们在二维平面上的图形,如下:
图2? L2正则化
二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J0与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。
L2正则化和过拟合
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』。
那为什么L2正则化可以获得值很小的参数?
以线性回归中的梯度下降法为例。假设要求的参数为θ,hθ(x)是我们的假设函数,那么线性回归的代价函数如下:
J(θ)=12m∑i=1m(hθ(x(i))?y(i))(3)
那么在梯度下降法中,最终用于迭代计算参数θ的迭代式为:
θj:=θj?α1m∑i=1m(hθ(x(i))?y(i))x(i)j(4)
其中α是learning rate. 上式是没有添加L2正则化项的迭代公式,如果在原始代价函数之后添加L2正则化,则迭代公式会变成下面的样子:
θj:=θj(1?αλm)?α1m∑i=1m(hθ(x(i))?y(i))x(i)j(5)
其中 λ就是正则化参数 。从上式可以看到,与未添加L2正则化的迭代公式相比,每一次迭代,θj都要先乘以一个小于1的因子,从而使得θj不断减小,因此总得来看,θ是不断减小的。
最开始也提到L1正则化一定程度上也可以防止过拟合。之前做了解释,当L1的正则化系数很小时,得到的最优解会很小,可以达到和L2正则化类似的效果。
正则化参数的选择
L1正则化参数
通常越大的λ可以让代价函数在参数为0时取到最小值。下面是一个简单的例子,这个例子来自 Quora上的问答 。为了方便叙述,一些符号跟这篇帖子的符号保持一致。
假设有如下带L1正则化项的代价函数:
F(x)=f(x)+λ||x||1
其中x是要估计的参数,相当于上文中提到的w以及θ. 注意到L1正则化在某些位置是不可导的,当λ足够大时可以使得F(x)在x=0时取到最小值。如下图:
图3 L1正则化参数的选择
分别取λ=0.5和λ=2,可以看到越大的λ越容易使F(x)在x=0时取到最小值。
L2正则化参数
从公式5可以看到,λ越大,θj衰减得越快。另一个理解可以参考图2,λ越大,L2圆的半径越小,最后求得代价函数最值时各参数也会变得很小。
Reference
过拟合的解释:
https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss2.html
正则化的解释:
https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss1.html
正则化的解释:
http://blog.csdn.net/u012162613/article/details/44261657
正则化的数学解释(一些图来源于这里):
http://blog.csdn.net/zouxy09/article/details/24971995
原文参考:blog.csdn.net/jinping_shi/article/details/52433975
https://www.zhihu.com/question/38426074
正则化的通俗解释
首先了解一下正则性,正则性衡量了函数光滑的程度,正则性越高,函数越光滑。(光滑衡量了函数的可导性,如果一个函数是光滑函数,则该函数无穷可导,即任意n阶可导)。
正则化是为了解决过拟合问题。
L1正则化和L2正则化可以看作是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫作Lasso回归,使用L2正则化的模型叫作Ridge回归(岭回归)
正则化的通俗解释就是给平面不可约代数曲线以某种形式的全纯参数表示。
正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。正则化:代数几何中的一个概念。
形式
反问题有两种形式。最普遍的形式是已知系统和输出求输入,另一种系统未知的情况通常也被视为反问题。许多反问题很难被解决,但是其他反问题却很容易得到答案。显然,易于解决的问题不会比很难解决的问题更能引起人们的兴趣,我们直接解决它们就可以了。那些很难被解决的问题则被称为不适定的。
用途
求解不适定问题的普遍方法是:用一组与原不适定问题相“邻近”的适定问题的解去逼近原问题的解,这种方法称为正则化方法。如何建立有效的正则化方法是反问题领域中不适定问题研究的重要内容。通常的正则化方法有基于变分原理的Tikhonov 正则化、各种迭代方法以及其它的一些改进方法,在各类反问题的研究中被广泛采用,并得到深入研究。
机器学习中L1正则化和L2正则化的区别
L1正则假设参数的先验分布是Laplace分布,可以保证模型的稀疏性,也就是某些参数等于0;
L2正则假设参数的先验分布是Gaussian分布,可以保证模型的稳定性,也就是参数的值不会太大或太小
L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归。下图是Python中Lasso回归的损失函数,式中加号后面一项α||w||1即为L1正则化项。
L1正则假设参数的先验分布是Laplace分布,可以保证模型的稀疏性,也就是某些参数等于0;
L2正则假设参数的先验分布是Gaussian分布,可以保证模型的稳定性,也就是参数的值不会太大或太小
在实际使用中,如果特征是高维稀疏的,则使用L1正则;如果特征是低维稠密的,则使用L2正则。
最后,附一张示意图。
右侧是L1正则,最优解位于坐标轴上,意味着某些参数是0。
L1正则化和L2正则化
在这里我们首先需要明白 结构风险最小化 原理:
我们所谓的正则化,就是在原来 Loss Function 的基础上,加了一些正则化项,或者叫做模型复杂度惩罚项。以我们的线性回归为例子。
优化目标(损失函数):
加上L1正则项(lasso回归): 加上L2正则项(Ridge回归): 下面我们需要理解加了正则化项之后,对于目标函数求解的时候,最终解有什么变化。
我们从图像角度来理解:
假设X是一个二维样本,那么要求解的参数也 也是二维的。下图叫做原函数曲线等高线图。目标函数在图中的等高线(同颜色)每一组 , ? 带入值都想同,这里代表着多组解。
下面看L1和L2正则项加入后的函数图像:
对比两幅图我们可以看出来:
下面看这几步:
L2正则化(岭回归)的证明类似。不过结论是L1正则化比L2正则化更加容易获得稀疏解。
我们总结一下,正则化之所以能够降低的原因在于,正则化是结构风险最小化的一种策略实现。
给 loss function 加上正则项,新得到的目标函数 h = f+normal,需要在 f 和 normal 中做一个 trade-off。如果还是像原来只优化 f,那么normal就比较大, h 就不能得到最优解。因此可以看出加正则项可以让解更加简单,符合奥卡姆剃刀理论;同时也符合在偏差和方差(方差表示模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差,降低过拟合。
看一下L1正则化和L2正则化的区别:
L1正则化就是在 loss function 后面加上L1范数,这样比较容易求到稀疏解。L2 正则化是在 LF 后面加 L2范数 平方,相比L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(不等0)的维度比较多,降低模型的复杂度。
L1、L2正则化知识详解
正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束、调整或缩小。也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险。
如果随机变量的概率密度函数分布为:
还有涉及极大似然估计、概率论相关的先验和后验相关概率, 为了控制篇幅, 本文就不详细介绍, wiki百科和百度百科都讲得很清楚。
正则化通过降低模型的复杂性, 达到避免过拟合的问题。 正则化是如何解决过拟合的问题的呢?从网上找了很多相关文章, 下面列举两个主流的解释方式。
如果发生过拟合, 参数θ一般是比较大的值, 加入惩罚项后, 只要控制λ的大小,当λ很大时,θ1到θn就会很小,即达到了约束数量庞大的特征的目的。
原因二:从贝叶斯的角度来分析, 正则化是为模型参数估计增加一个先验知识,先验知识会引导损失函数最小值过程朝着约束方向迭代。 L1正则是拉普拉斯先验,L2是高斯先验。整个最优化问题可以看做是一个最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计。 给定训练数据, 贝叶斯方法通过最大化后验概率估计参数θ:
下面我们从最大后验估计(MAP)的方式, 推导下加入L1和L2惩罚项的Lasso和岭回归的公式。 首先我们看下 最小二乘公式的推导 (公式推导截图来自知乎大神)
为了帮助理解,我们来看一个直观的例子:假定x仅有两个属性,于是无论岭回归还是Lasso接触的w都只有两个分量,即w1,w2,我们将其作为两个坐标轴,然后在图中绘制出两个式子的第一项的”等值线”,即在(w1,w2)空间中平方误差项取值相同的点的连线。再分别绘制出L1范数和L2范数的等值线,即在(w1,w2)空间中L1范数取值相同的点的连线,以及L2范数取值相同的点的连线(如下图所示)。
岭回归与Lasso的解都要在平方误差项与正则化项之间折中,即出现在图中平方误差项等值线与正则化项等值线相交处。而由上图可以看出,采用L1范数时平方误差项等值线与正则化项等值线的交点常出现在坐标轴上,即w1或w2为0,而在采用L2范数时,两者的交点常出现在某个象限中,即w1或w2均非0。
这说明了岭回归的一个明显缺点:模型的可解释性。它将把不重要的预测因子的系数缩小到趋近于 0,但永不达到 0。也就是说,最终的模型会包含所有的预测因子。但是,在 Lasso 中,如果将调整因子 λ 调整得足够大,L1 范数惩罚可以迫使一些系数估计值完全等于 0。因此,Lasso 可以进行变量选择,产生稀疏模型。注意到w取得稀疏解意味着初始的d个特征中仅有对应着w的非零分量的特征才会出现在最终模型中,于是求解L1范数正则化的结果时得到了仅采用一部分初始特征的模型;换言之,基于L1正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程和学习器训练过程融为一体,同时完成。
正则化详解
机器学习模型需要拥有很好地泛化能力来适应训练集中没有出现过的新样本。在机器学习应用时,我们经常会遇到过度拟合(over-fitting)的问题,可能会导致训练出来的模型效果很差。接下来,我们将谈论的正则化(regularization)技术,它可以改善或者减少过度拟合问题,以使学习算法更好实现。
机器学习中一个重要的话题便是模型的泛化能力,泛化能力强的模型才是好模型,对于训练好的模型,若在训练集表现差,不必说在测试集表现同样会很差,这可能是欠拟合(under fitting)导致;若模型在训练集表现非常好,却在测试集上差强人意,则这便是过拟合(over fitting)导致的,过拟合与欠拟合也可以用 Bias 与 Variance 的角度来解释,欠拟合会导致高 Bias ,过拟合会导致高 Variance ,所以模型需要在 Bias 与 Variance 之间做出一个权衡。
使用简单的模型去拟合复杂数据时,会导致模型很难拟合数据的真实分布,这时模型便欠拟合了,或者说有很大的 Bias, Bias 即为模型的期望输出与其真实输出之间的差异 ;有时为了得到比较精确的模型而过度拟合训练数据,或者模型复杂度过高时,可能连训练数据的噪音也拟合了,导致模型在训练集上效果非常好,但泛化性能却很差,这时模型便过拟合了,或者说有很大的 Variance,这时模型在不同训练集上得到的模型波动比较大, Variance 刻画了不同训练集得到的模型的输出与这些模型期望输出的差异 。
举例:
Bias反映的是模型的期望与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
我们通过公式来直观了解一下,文字没有数学符号解释的清楚:
用图形解释方差与偏差:
举一个例子,一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环;二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环。那么在上面一次射击实验中,Bias就是1,反应的是模型期望与真实目标的差距,而在这次试验中,由于Variance所带来的误差就是2,即虽然瞄准的是9环,但由于本身模型缺乏稳定性,造成了实际结果与模型期望之间的差距。
简单的模型会有一个较大的偏差和较小的方差,复杂的模型偏差较小方差较大。
解决欠拟合的方法: 1、增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间; 2、尝试非线性模型,比如核SVM 、决策树、DNN等模型; 3、如果有正则项可以较小正则项参数; 4、Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等. 解决过拟合的方法: 1、交叉检验,通过交叉检验得到较优的模型参数; 2、特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间; 3、正则化,常用的有 L1、L2 正则。而且 L1正则还可以自动进行特征选择; 4、如果有正则项则可以考虑增大正则项参数; 5、增加训练数据可以有限的避免过拟合; 6、Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等. DNN中常见的方法: 1、早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。 2、集成学习策略。而DNN可以用Bagging的思路来正则化。首先我们要对原始的m个训练样本进行有放回随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。即采用我们的前向传播算法和反向传播算法得到N个DNN模型的W,b参数组合,最后对N个DNN模型的输出用加权平均法或者投票法决定最终输出。不过用集成学习Bagging的方法有一个问题,就是我们的DNN模型本来就比较复杂,参数很多。现在又变成了N个DNN模型,这样参数又增加了N倍,从而导致训练这样的网络要花更加多的时间和空间。因此一般N的个数不能太多,比如5-10个就可以了。 3、DropOut策略。所谓的Dropout指的是在用前向传播算法和反向传播算法训练DNN模型时,一批数据迭代时,随机的从全连接DNN网络中去掉一部分隐藏层的神经元。 在对训练集中的一批数据进行训练时,我们随机去掉一部分隐藏层的神经元,并用去掉隐藏层的神经元的网络来拟合我们的一批训练数据。使用基于dropout的正则化比基于bagging的正则化简单,这显而易见,当然天下没有免费的午餐,由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。
正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用 10 阶多项式,模型可能过于复杂,容易发生过拟合。因此需要在目标函数添加一些额外的惩罚项,即正则项。添加惩罚项可看成是对损失函数中的某些参数做一些限制,根据惩罚项的不同可分为:L0范数惩罚、L1范数惩罚(参数稀疏性惩罚)、L2范数惩罚(权重衰减惩罚)。 L0范数惩罚:为了防止过拟合,我们可以将其高阶部分的权重 w 限制为 0,这样,就相当于从高阶的形式转换为低阶。为了达到这一目的,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。因此机器学习中经常使用L1、L2正则化。L1正则化项也称为Lasso,L2正则化参数也称为Ridge。 L1范数:权值向量w中各个元素的绝对值之和,L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。 L2范数:权值向量w中各个元素的平方和然后再求平方根,L2正则化可以防止模型过拟合;一定程度上,L1也可以防止过拟合。
上面我们得到了带约束的优化问题A2,在实际的求解中,带约束的优化问题往往较难求解,大多都是转化为无约束优化问题去求解。接下来自然而然的我们采用拉格朗日乘子法将约束转化到目标函数上去,也就将约束优化问题A2转化为一个无约束的优化问题。那么这个无约束优化问题的形式是什么样的呢?这里直接先把最终的结论摆上来:
稀疏性对很多机器学习建模问题来说是非常重要的,也是非常好的一个性质。既然有很多系数等于0了,那么说明与之对应的输入是没有用了,这些输入就可以舍去,相当于起到了 降维和feature selection的作用。特殊要说明的是用L1正则化来降维和PCA降维是不同的,可以理解为L1正则化是用了数据的标签来做的,而PCA无需数据的标签。所以L1正则化实际上是带有监督学习性质的降维方法。
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是抗扰动能力强。
λ可以控制L图形的大小,λ越小,L的图形越大(上图中的黑色方框和圆);λ越大,L的图形越小,最后求得代价函数最值时各参数也会变得很小。从另一方面看,由公式5可以看到,λ越大,θj衰减得越快。
机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系? 机器学习防止欠拟合、过拟合方法
【学界】有约束转无约束,拉格朗日松弛观点下的L1正则化稀疏性探讨
斯坦福机器学习课程 第三周 (4)正则化:解决过拟合问题
拉格朗日乘子法如何理解?
机器学习中正则化项L1和L2的直观理解
信用贷款反欺诈模型
数据集来自于某银行信用卡交易数据,显示两天内发生的交易几率,284,807笔交易中发生了492笔盗刷。
通过信用卡的历史交易数据,利用机器学习算法构建信用卡反欺诈预测模型,提前发现客户信用卡被盗刷事件,并且要求模型准确度在95%以上最大化召回率。
1.2 欠采样处理: 这里我们先进行随机欠采样方法,将0样本的数量缩小到1样本相同数量
2. 上采样(Oversampling,过采样): 以大众类为标准,生成一些小众类样本,使大、小众类样本数相同。
上采样代表算法:SMOTE 算法 SMOTE是通过对小众样本进行插值来获取新样本的。比如对于每个小众类样本a,从 a最邻近的样本中选取 样本b,然后在对 ab 中随机选择一点作为新样本。
利用sklearn的train_test_split将数据源切分为训练集和测试集。
交叉验证是在机器学习建立模型和验证模型参数时常用的办法,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓"交叉"。
混淆矩阵:
正则化是结构风险最小化策略的实现,是在经验风险上加上一个正则化项或惩罚项。正则化项一般是负责模型复杂度的单调递增函数,模型越复杂,正则化值就越大。正则化的作用是选择经验风险与模型复杂度同时较小的模型。正则化符合奥卡姆剃刀原理,在所有可能选择的模型中,能够很好地解释数据并且十分简单的才是最好的模型。
L1与L2的选择:
(1)K折验证法,选择最佳正则化惩罚项:
运行结果:
(2)使用下采样数据进行训练,下采样数据进行测试 传递正则化惩罚项0.01,使用L1正则化方法,同时绘制出混淆矩阵,计算模型评估指标。
输出结果:
召回率为93.28%,精确率为93.92%
(3)预测原始数据 使用以上训练出的结果,对原始数据(未下采样处理)进行预测
结果:
(5)比较:使用原始数据训练模型及预测 这里我们使用原始数据对模型进行训练,对比使用下采样的预测结果
召回率为61.9%,精确率为88.35,%,评估指标均不如下采样训练结果,因此对于不平衡数据需要进行平衡处理。
响应面模型相关系数怎么调整数据的大小
响应面模型相关系数调整数据的大小可以使用以下方法:1、标准化:首先将各自变量进行标准化,再用标准化后的数据进行模型拟合,以确保不同变量对模型系数的影响是平等的。2、岭回归:加入惩罚项来约束模型系数的大小,避免过拟合或者模型不稳定。常见的惩罚项有L1和L2正则化,但岭回归常使用L2正则化。3、Lasso回归:和岭回归类似,也是加入惩罚项的回归方法。与岭回归不同的是,Lasso回归使用L1正则化,可以使得部分系数变为0,从而达到特征选择的作用。4、逐步回归:使用逐步回归技术,遍历模型中可能的自变量组合,筛选出最有意义的自变量,并逐步加入模型。5、反向淘汰法:首先将所有变量引入模型,然后从中剔除对模型影响不显著的变量,以得到最终的模型。
机器学习中的损失函数
机器学习中的损失函数
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的值。下面主要列出几种常见的损失函数。
一、log对数损失函数(逻辑回归)
有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。
log损失函数的标准形式:
L(Y,P(Y|X))=?logP(Y|X)L(Y,P(Y|X))=?log?P(Y|X)刚刚说到,取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。
逻辑回归的P(Y=y|x)表达式如下:P(Y=y|x)=11+exp(?yf(x))P(Y=y|x)=11+exp(?yf(x))
将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:
L(y,P(Y=y|x))=log(1+exp(?yf(x)))L(y,P(Y=y|x))=log?(1+exp(?yf(x)))
逻辑回归最后得到的目标式子如下:
如果是二分类的话,则m值等于2,如果是多分类,m就是相应的类别总个数。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉。
这里有个PDF可以参考一下:Lecture 6: logistic regression.pdf.
二、平方损失函数(最小二乘法, Ordinary Least Squares )
最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理,可以参考【central limit theorem】),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:
简单,计算方便;
欧氏距离是一种很好的相似性度量标准;
在不同的表示域变换后特征性质不变。
平方损失(Square loss)的标准形式如下:
(Y,f(X))=(Y?f(X))2L(Y,f(X))=(Y?f(X))2
当样本个数为n时,此时的损失函数变为:
Y-f(X)表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(residual sum of squares,RSS)。
而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:
MSE=1n∑i=1n(Yi~?Yi)2MSE=1n∑i=1n(Yi~?Yi)2
上面提到了线性回归,这里额外补充一句,我们通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数的线性函数。在机器学习中,通常指的都是后一种情况。
三、指数损失函数(Adaboost)
学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到:
Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数 和G:
而指数损失函数(exp-loss)的标准形式如下
可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:
关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145.
四、Hinge损失函数(SVM)
在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:
下面来对式子做个变形,令:
于是,原式就变成了:
如若取,式子就可以表示成:
可以看出,该式子与下式非常相似:
前半部分中的就是hinge损失函数,而后面相当于L2正则项。
Hinge 损失函数的标准形式
可以看出,当|y|>=1时,L(y)=0。
更多内容,参考Hinge-loss。
补充一下:在libsvm中一共有4中核函数可以选择,对应的是-t参数分别是:
0-线性核;
1-多项式核;
2-RBF核;
3-sigmoid核。
五、其它损失函数
除了以上这几种损失函数,常用的还有:
0-1损失函数
绝对值损失函数
下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几次好好消化消化。
OK,暂时先写到这里,休息下。最后,需要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,通过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。