首先我们来看一下什么是正则化
正则化的作用就是缓解模型的过拟合。它通常会添加在损失函数的后面,然后通过缩小模型参数来减小模型的复杂度,从而达到提高模型泛化性的效果。因为如果模型的参数很大的话,feature值的一个小小的变化会对模型的结果产生很大的影响,这样就不利于模型的泛化。其实正则化就相当于一个惩罚项。在正则化项前面还会乘上一个正则化系数用来决定惩罚的力度。L1正则化和L2正则化就是正则化的两种具体实现方式。
接着我们来看一下什么是L1正则化和L2正则化
- L1正则化(L1范数):权值向量W中各个元素的绝对值之和,表示为
- L2正则化(L2范数):权值向量W中各个元素的平方和再开平方根,表示为
但是在实际运用中,为了方便计算我们没有对L2正则化开平方,因为在算梯度的时候这样方便求导,同时出来的结果更加方便计算。
假设现在权值向量W=,下图左边为L1正则化在两个维度下的形状,右边为L2正则化在两个维度下的形状,
L1正则化往往突出的地方取得最小值,这就会使一部分权值为0,这样就会有些特征不会对模型产生影响也就是稀疏模型。这也是L1正则化可以用来做特征选择的原因。实际上L1也是一种妥协的做法,要获得真正sparse模型,要用L0正则化。但是要注意的是,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征只能保留一个,如果要确定那个特征重要应在通过L2正则化方法交叉验证。因为L1正则化是绝对值之和,目标函数加入L1后,在原点不可导,需要做特殊处理。
L2正则化会缩小权值的大小,但是不会像L1一样将权值变为0,L1会比L2将参数收缩的更小. 所以它没有变量选择的功能。相比于L1正则化,因为L2正则化存在解析解,所以计算更加方便和高效。但同时它也对outlier更敏感。
对于更详细的解释大家可以参考下面的链接
https://blog.csdn.net/jinping_shi/article/details/52433975