经常看到范数,L1,L2,知道用来解决过拟合的问题,那么从数学上它是什么意思?为什么能对解决过拟合有帮助呢?
什么是范数?
范数是一种强化了的距离概念。在数学上,范数包括向量范数和矩阵范数,向量范数表示向量空间中向量的大小,好比米和尺度量远近;矩阵范数表示矩阵引起变化的大小。
Lp 范数如下:
变化图如下:
所以:
L1范:为x向量各个元素绝对值之和;
L2范:为x向量各个元素平方和的开方。
这里先说明一下,在机器学习中,L1范数和L2范数很常见,主要用在损失函数中起到一个限制模型参数复杂度的作用
特别的,L0范数:指向量中非零元素的个数。无穷范数:指向量中所有元素的最大绝对值。
过拟合
过分拟合了训练数据,缺乏泛化性。就如死记硬背了几个题目,但是考试变了几个数值都不会求解了一样。
产生过拟合的原因一般为:
a、模型太复杂
b、特征太多了(比如决策树剪枝)
解决过拟合的方法-正则化:
其一、正则化就是通过对我们的参数进行约束,而使我们的模型更加的简单,使我们对训练集合的拟合更加的平滑。
其二、有监督学习的要义其实可以这么描述“minimize your error while regularizing your parameters” 在规则化参数的同时最小化误差。 最小化误差是为了拟合我们的训练数据,而规则化参数是防止过分的拟合我们的训练数据。
为了简化模型,提高在预测数据上的表现,我们引入规则化,规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。引入一些先验的内容。
有监督一般都可以理解为最小化下面的函数
前面部分表示最小化误差,后面是规则化,使得模型尽量简单。(对于第一项Loss函数,如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是exp-Loss,那就是牛逼的 Boosting了;如果是log-Loss,那就是Logistic Regression了;还有等等。)
一般提到的规则化项有:零范数、一范数、二范数、迹范数、Frobenius范数和核范数,最常见的莫过于L1和L2范数。
范数为什么可以防止过拟合:
1、L0、L1 主要是特征选择,将含信息量少的特征权重变成0;L1比L0更容易求解,所以虽然都可以实现系数,但是更多选择L1。L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization),所以添加L1的回归,也称作 Lasso 回归。
2、L2 则偏向于将特征的权重都调整的比较小,分布比较均匀,从而简化模型。 L2不仅可以简化模型防止过拟合,还可以让优化求解变得稳定。Ridge
从图可知,L1最优解通常在角处,w会等于0,所以造成稀疏。L1-regularization 能产生稀疏性,而L2-regularization 不行的原因。
总结来看:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。
领取专属 10元无门槛券
私享最新 技术干货