原理解析-过拟合与正则化
日期: 2020-12-05 分类: 跨站数据测试 398次阅读
原理解析-过拟合与正则化
什么是过拟合
本来关于过拟合与正则化,我是不打算写一篇文章的,今晚想了想,还是写一篇吧。
一是直接写带正则化的线性回归代码,显得有些突兀;
二是这个东西确实比较重要,我这里会尽量简单的讲清楚。
什么是过拟合?
我们都知道,目前我们在讲的线性回归,是监督学习里面的一种,通过对样本的学习训练,得出合适的参数,使得损失函数在这些样本上最小,即在样本上表现良好,但是我们之所以训练模型,是为了让它在未知样本上,同样表现良好(所以正常的我们做机器学习,会把样本分成训练集、测试集,当模型在训练集、测试集表现稳定,效果也很好时,我们的这次机器学习训练才算成功,这个模型才有泛化能力)。
下面看一张很经典的图:
图二就是正常拟合,符合数据的趋势,
而图三,虽然在训练集上拟合得很好,但是出现未知数据时,比如Size很大时,根据目前拟合来看,可能得到的结果很小,与实际误差会很大。
因此,我们仅仅使得损失函数在样本上最小,是不够的,我们来看监督机器学习的核心原理公式:(这个LaTeX 数学公式必须手打了,毕竟核心公式)
m i n 1 M ∑ i = 1 M L ( y i , f ( x i ) ) + λ J ( f ) min\frac{1}{M}\sum_{i=1}^{M} L(y_i,f(x_i)) + \lambda{J(f)} minM1i=1∑ML(yi,f(xi))+λJ(f)
以上才是监督算法的损失函数的完整形式,
1
M
∑
i
=
1
M
L
(
y
i
,
f
(
x
i
)
)
\frac{1}{M}\sum_{i=1}^{M} L(y_i,f(x_i))
M1i=1∑ML(yi,f(xi))这个部分代表经验误差函数,即在样本上训练的损失,
而后面部分 λJ(f) 代表结构误差函数,也称为正则项,惩罚项,正则化参数的同时,最小化经验误差函数,最小化经验误差是为了极大程度的拟合训练数据,正则化参数是为了防止过分的拟合训练数据,因此对系数进行一定的惩罚。
OK,过拟合应该讲得很清楚了,接下来讲线性回归三种形式的正则化。
线性回归中,正则化一般怎么实现?
L0正则化解析
L0是指向量中非0的元素的个数。如果用L0来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。换句话说,让参数W是稀疏的。
L0正则化的最优化问题是一个NP hard问题,L1正则化是L0正则化的最优凸近似,这里我们不展开L0的讨论,大家知道有这么个东西就可以了。
L1正则化解析
带L1正则化的线性回归也叫Lasso回归,其全称是The Least Absolute Shrinkage and Selectionator operator,直译过来就是最小绝对值收缩和选择算子,表现形式为:
λ
∑
j
=
1
n
∣
∣
θ
j
∣
∣
\lambda{\sum_{j=1}^{n}}\vert\vert{\theta_j}\vert\vert
λj=1∑n∣∣θj∣∣
代表向量中各个元素绝对值之和,λ为正则化系数。
L1正则化为什么可以防止过拟合?
L1正则化之所以可以防止过拟合,是因为L1范数就是各个参数的绝对值相加得到的,参数值大小和模型复杂度是成正比的。因此如果拟合出一个复杂的模型(即出现了过拟合),其L1范数就大,这样L1正则化惩罚就高,整体损失函数就没有收敛,
所以最终不会选择这些过拟合的参数。
同时,L1正则化会使得参数稀疏,一部分参数的系数会变为0。
问题:稀疏的参数代表模型越简单吗?
回答:是的,模型简化,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,
那么可以对训练数据可以预测的很好,但是对测试数据就很差了。参数变少也可以使整个模型获得更好的可解释性。
问题:参数值越小代表模型越简单吗?
回答:是的。为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,
甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,
而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。
为什么L1正则化会使得参数稀疏,一部分参数的系数会变为0?
1.从数学角度来看,我们手写一下
2、从图像来看,
假设有2个参数,暂且用w1,w2来表示,y = |w1| + |w2| ,函数图像如上图的四边形,圆圈表示w1,w2取不同值时整个正则化项的值的等高线,很明显很容易在顶点处相交,此时w1=0
后面会用实例来展示L1可以防止过拟合,也会使系数稀疏。
精华推荐