今天看百面机器学习的书.书上提到改善模型过拟合的一个方法是加正则化项.这句话其实已经不止第一次见了,但是每次都没有想想为什么.现在记录一下自己的理解.
为什么会过拟合
机器学习的前提条件是训练集和测试集都是独立同分布,机器学习目的就是利用数据学习某种pattern的表达 .我们常常可以使用一个多项式函数表达某个pattern.这个多项式就越如果我们的数据集包括这个pattern所有情况,那么学习的结果就会非常好.但是,往往我们的输入数据都是不完备的,那么学习到的pattern就不完备,不够准确,这种不准确表达出来两种结果,一种是underfitting(欠拟合),另一种是过拟合(overfitting)。最左边是欠拟合,最右边是过拟合.过拟合原因就是f(x)多项式的N特别的大,越复杂模型需要提供的特征越多,或者说提供的测试用例中我们使用到的特征非常多.
fitting_result.png过拟合的解决方法
已经知道过拟合的原因是f(x)多项式的N特别大,那么解决方法就是减少N.更具体的说,减少N的数量,也就是而让N最小化,也就是让向量W中项的个数最小化,这个过程用一个学术语言描述就叫正则化.0范数,L1范数,L2范数都是实现W向量中的个数最小化,只是细节上有所不同.将范数套在过拟合的解释分别是:0范数,表示向量W中非零元素的个数.1范数,表示向量W绝对值之和.2范数,就是向量W的模。1范数计算向量W的元素变成0, 2范数使得向量W的元素趋近于0,都在做减少W的元素数量.
总结
f(x)多项式加入范数项,使得W向量的元素个数最小化,进而减少N,导致的结果就是改善过拟合的现象.另外,解决过拟合是不是只有上面提到的方法,答案是否定的.增加训练数据量也是可以的.
网友评论