监督机器学习就是规则化参数的同时最小化误差。
有监督学习的样本都是带有标签的样本,用 y y来表示样本的标签,我们通过算法来提取样本特征并对其进行分类或回归,得到结果 , 这里x x为样本、即是参数,此时有目标函数 z=y−y1 z = y − y 1,我们希望对于相同的样本,其结果输出与其标签一样,于是我们通过优化算法使得z z尽可能的小,即, 优化算法即是更新参数W W的值使得分类输出更加接近于标签,但是由于种种原因比如样本量过少的问题会导致过拟合,这里以简单的三个图示讲解过拟合。
假设我们根据特征分界,{男人X,女人O}
请看下面三个图:
这三幅图很容易理解:
1、 图x1明显分类的有点欠缺,有很多的“男人”被分类成了“女人”。
2、 图x2虽然有两个点分类错误,但是能够理解,毕竟现实世界有噪音干扰,比如有些人男人留长发、化妆、人妖等等。
3、 图x3分类全部是正确的,但是看着这副图片,明显觉得过了,连人妖都区分的出来,可想而知,学习的时候需要更多的参数项,甚至将生殖器官的形状、喉结的大小、有没有胡须特征等都作为特征取用了,总而言之f(x)多项式的N特别的大,因为需要提供的特征多,或者提供的测试用例中我们使用到的特征非常多(一般而言,机器学习的过程中,很多特征是可以被丢弃掉的)。
好了,总结一下三幅图:
x1我们称之为【欠拟合】
x2我们称之为【恰好拟合】,随便取的名字,反正就是容错情况下刚好的意思。
x3我们称之为【过拟合】,这种情况是我们不希望出现的状况,为什么呢?很简单,它的分类只是适合于自己这个测试用例,对需要分类的真实样本而言,实用性可想而知的低。
通过以上的示例我们知道,过拟合导致参数向量W W变大, 我们可以给目标函数加上一个正则化项,常见的正则化项有L0 L 0范数、L1 L 1范数以及L2 L 2范数,下面简单的介绍一下范数的概念。
范数的一般化定义,对于实数 X X,p-范数的定义为:
其赋予某个向量空间中每个元素的以长度或大小。
L0 L 0范数: ||X||0=∑ni=0X0i | | X | | 0 = ∑ i = 0 n X i 0
其表示向量中非零元素的个数。如果我们使用L0 L 0来规则化参数向量W W,就是希望的元素大部分都为零。L0 L 0范数的这个属性,使其非常适用于机器学习中的稀疏编码。在特征选择中,通过最小化L0 L 0范数来寻找最少最优的稀疏特征项。但是,L0 L 0范数的最小化问题是NP难问题。L1 L 1范数是L0 L 0范数的最优凸近似,它比L0 L 0范数要更容易求解。因此,L0 L 0优化过程将会被转换为更高维的范数(例如L1范数)问题。
L1 L 1范数: ||X||0=∑ni=0|Xi| | | X | | 0 = ∑ i = 0 n | X i |
L1 L 1范数是向量中各个元素绝对值之和,也被称作“Lasso regularization”(稀疏规则算子)。
L2 L 2范数: ||X||2=∑ni=0X2i−−−−−−−√ | | X | | 2 = ∑ i = 0 n X i 2
Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方。
我们让L2 L 2的规则化项||W||2 | | W | | 2最小,可以使W W中的每个元素都很小,但不像范数那样使元素等于0,而是接近于零。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合的现象。即通过L2范数可以防止过拟合,提升模型的泛化能力。
我们给目标函数加上一个正则化项,那么我们需要优化的目标函数就变成了以下这样一个式子。
当我们最小化这个目标函数时,前一项的参数 W W会变大,后一项正则化项的参数会变小,取个折中,参数 W W<script type="math/tex" id="MathJax-Element-80">W</script>不会变的很大or很小,即加入正则化项一定程度上避免了过拟合的发生。
本文大部分内容参考知乎和CSDN,下面已附带链接,只是为了方便自己以后查阅,若涉及侵权,请告知,谢谢。
参考:
https://www.zhihu.com/question/20924039
https://blog.csdn.net/zouxy09/article/details/24971995
https://blog.csdn.net/yinyu19950811/article/details/78243801
https://www.zhihu.com/question/20473040