机器学习防止过拟合之L1范数(正则)与LASSO

来源:互联网 发布:mac ssh工具 编辑:程序博客网 时间:2024/05/16 12:33

机器学习过拟合问题

对于机器学习问题,我们最常遇到的一个问题便是过拟合。在对已知的数据集合进行学习的时候,我们选择适应度最好的模型最为最终的结果。虽然我们选择的模型能够很好的解释训练数据集合,但却不一定能够很好的解释测试数据或者其他数据,也就是说这个模型过于精细的刻画了训练数据,对于测试数据或者其他新的数据泛化能力不强。
以一个简单的多项式拟合为例:
这里写图片描述
图一只捕捉了数据的简单特征,处于欠拟合状态。图二是对原始数据一个比较好的拟合,图三捕捉到了很多细节,虽然完美的通过了所有的点,但是泛化能力大大下降。
导致模型过拟合的原因很多,如:
1)模型过于复杂
2)数据存在噪声
3)数据量比较小

对抗过拟合

目前我们已经有了很多方法对抗过拟合,常见的有
1.设定合适的模型训练停止条件
避免模型过度训练,产生过拟合现象
这里写图片描述
2.Cross-validation 交叉验证
一个常用的交叉验证算法是k-fold交叉方法:
把训练样例分成k份,然后进行k次交叉验证过程,每次使用不同的一份作为验证集合,其余k-1份合并作为训练集合.每个样例会在一次实验中被用作验证样例,在k-1次实验中被用作训练样例;每次实验中,使用上面讨论的交叉验证过程来决定在验证集合上取得最佳性能的迭代次数n*,然后计算这些迭代次数的均值,作为最终需要的迭代次数。
3.特征选择
避免输入的数据维度过高,选取代表性的特征,删去重复特征。
4.正则化
我们经常听到L0,L1,L2正则化,其中,
L0正则化的值是模型参数中非零参数的个数。通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最小化问题在实际应用中是NP难问题,无法实际应用。
L1正则化表示各个参数绝对值之和。L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项。

这里写图片描述
L2正则化标识各个参数的平方的和。L2正则是基于L2范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项。
这里写图片描述

引用一张非常著名的图:
这里写图片描述

由图上可以看出,L1正则化可以在区域的角附近取得最优值,而角也就意味着有一个或者多个参数值为0,这就实现了稀疏化。而L2正则因为是球域,在坐标轴相交的可能性大大减小,因此没有稀疏性。

LASSO回归

Lasso(Least absolute shrinkage and selection operator, Tibshirani(1996))方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0 的回归系数,得到可以解释的模型。
Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归有一个很大的问题,导致我们需要把它单独拎出来讲,就是它的损失函数不是连续可导的,由于L1范数用的是绝对值之和,导致损失函数有不可导的点。目前求解思路主要是极值解法坐标轴下降法(coordinate descent)和最小角回归法( Least Angle Regression, LARS)

坐标下降法:
我们的优化目标就是在θ的n个坐标轴上(或者说向量的方向上)对损失函数做迭代的下降,当所有的坐标轴上的θi(i = 1,2,…n)都达到收敛时,我们的损失函数最小,此时的θ即为我们要求的结果。
坐标下降优化方法是一种非梯度优化算法。为了找到一个函数的局部极小值,在每次迭代中可以在当前点处沿一个坐标方向进行一维搜索。在整个过程中循环使用不同的坐标方向。一个周期的一维搜索迭代过程相当于一个梯度迭代。
坐标下降法基于最小化多变量目标函数可以通过每次沿一个方向最小化目标函数来求解。与梯度方法的变化的梯度方向不同,坐标下降方法固定其他的梯度方向。例如,坐标方向为e1,e2,…,en。每次沿一个坐标方向最小化目标函数,循环地沿每个坐标方向进行计算。

最小角回归
最小角回归算法是一个逐步的过程,每一步都选择一个相关性最大的特征,总的运算步数只和特征的数目有关,和训练集的大小无关。它与向前逐步回归(Forward Stepwise)不同点在于,Forward Stepwise每次都是根据选择的变量子集,完全拟合出线性模型,计算出RSS,再设计统计量(如AIC)对较高的模型复杂度作出惩罚,而LAR是每次先找出和因变量相关度最高的那个变量, 再沿着LSE的方向一点点调整这个predictor的系数,在这个过程中,这个变量和残差的相关系数会逐渐减小,等到这个相关性没那么显著的时候,就要选进新的相关性最高的变量,然后重新沿着LSE的方向进行变动。而到最后,所有变量都被选中,就和LSE相同了。
这里写图片描述

0 0
原创粉丝点击