0. 引言
在设计模型时,我们往往希望机器能学到一个经验误差和泛化误差较小、在训练集和测试集均表现巨佳的模型,然而现实却很骨感。当模型复杂度越高,对训练集拟合程度越高,然而对新样本的泛化能力却下降了,此时出现overfitting(过拟合)。
为了得到一个相对稳定且泛化能力较好的模型,我们应该如何选择一个复杂度适当的模型?怎么避免过拟合现象?当出现过拟合时,给模型添加L1 or L2(惩罚项)?接下来我们将一一讨论上述问题,以便提高机器学习系统的性能。
- 模型复杂度
如下图所示,模型的复杂度随着样本训练进行而逐渐增加,此时训练数据集上的误差会逐渐减小,当模型的复杂度达到一定程度时,测试集上的误差反而随着模型的复杂度增加而增大。从图中可以看出,红色点的横坐标值即为我们所期望的模型复杂度,在训练集和测试集上均表现良好。
模型复杂度往往源于以下几个因素:
- 模型本身的选择(LR、linear SVM、CNN等,由Occam's Razor可知,我们应该化繁为简,在有效的前提下选择尽可能简单的模型)
- 模型的参数个数
- 模型的参数空间选择
- 模型拟合过少的样本
本文以Logistic Regression为例,假定我们已经选择了该模型,其loss function如下:
当w很大时, 模型接近线性可分,此时得到一个非常复杂的模型,且由上述模型复杂度因素可知,模型和模型的参数个数已知,拟合样本也可通过一定手段去获取,或者通过交叉验证来提高模型准确性。接下来我们着重考虑压缩w参数空间来进行优化。
2. 如何避免过拟合
a)欠拟合
b)适度拟合
c)过拟合
w参数空间中,w值过大会导致目标函数的导数非常大,拟合的函数波动就会很大且模型不稳定,如上图c)过拟合所示。那么如何使W不那么大呢?在目标函数(经验风险)中加入一个正则化项(结构风险),也称为惩罚项,对w加以限制。
正则化项一般采用L2正则(Ridge)和L1正则(Lasso)回归,如下图所示,实际上就是完成了模型参数向0的收缩,即以牺牲样本内误差来降低模型参数误差,从而提高模型的稳定性、提高对新样本的预测能力。
对比上图L1-norm和L2-norm可以看出,Lasso的结果容易将参数空间在某些维度上减至0,产生稀疏解;Ridge由于是在圆内缩放,将参数各个维度上的值均减小至非0值,那么也就不会产生稀疏解。下图为在逻辑回归中引入L2正则项后的目标函数,为什么L2效果更优?不妨在分别加入L1、L2进行实验。
下图为逻辑回归模型在情感分析中的应用,GridSearch得到的最优参数为{'C': 1000.0, 'penalty': 'l2'},表明L2-norm避免过拟合上效果更佳。
3. L1、L2的应用场景
实际应用中,通常机器学习中特征数量很多,且数据的维度中是存在噪声和冗余的,而稀疏的解可以找到有用的维度并且减少冗余。例如,在构建一个跟神经科学相关的模型时,想通过神经元的触发作用判断用户在想什么,而从医学角度先验可知,人在思考时只有少部分神经元起作用,即只有少数特征对这个模型有贡献,绝大部分特征是没有贡献或者贡献微小的,此时我们就可以加入L1正则,使得模型最后最后只选取小部分起作用的神经元。因此LASSO模型具有较高的解释性,产生sparsity进行特征选择,且能降低计算量。
当我们使用一个线性回归方程时,若参数很大,只要数据偏移一点点,就会对结果造成很大的波动,此时便可以加入L2正则,产生非稀疏的较小的参数空间,那么数据偏移将不会对结果造成什么影响,能适应不同的数据集且抗扰动能力强。因此Ridge模型具有较高的准确性和鲁棒性,能很好地避免过拟合现象。
从贝叶斯角度来看,正则化项等价于对参数引入先验分布,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式。L1正则对应拉普拉斯分布,L2正则对应高斯分布。当测试数据足够多时,MLE(最大似然估计)与MAP(最大后验估计)近似相等。
4. 总结
在实际工程应用中,需要综合考虑模型复杂度、拟合度与正则项之间的关系:
- 好的模型拥有较高的泛化能力
- 越复杂的模型越容易过拟合
- 添加正则项是防止过拟合的手段之一
- L1正则会带来稀疏特性
- L2正则使系统稳定
参考:贪心学院,http://www.greedyai.com
9005

被折叠的 条评论
为什么被折叠?



