前情回顾算法
机器学习100天|Day1数据预处理100天搞定机器学习|Day2简单线性回归分析100天搞定机器学习|Day3多元线性回归100天搞定机器学习|Day4-6 逻辑回归100天搞定机器学习|Day7 K-NN100天搞定机器学习|Day8 逻辑回归的数学原理100天搞定机器学习|Day9-12 支持向量机100天搞定机器学习|Day11 实现KNN100天搞定机器学习|Day13-14 SVM的实现100天搞定机器学习|Day15 朴素贝叶斯100天搞定机器学习|Day16 经过内核技巧实现SVM100天搞定机器学习|Day17-18 神奇的逻辑回归100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘机器学习
Day17,Avik-Jain第22天完成Yaser Abu-Mostafa教授的Caltech机器学习课程-CS156中的课程2。函数
1 Hoeffding不等式学习
假设有一个罐子装满了橙色和绿色的球,为了估计罐子中橙色和绿色的比例,咱们随机抓一把球,称为样本:测试
其中,设罐子中橙色球的比例为μ,样本中橙色球比例为v,样本的大小为N,咱们对真实分布μ和样本分布v的差别容忍度为ε,则有下面的不等式成立:3d
也就是存在一个几率上界,只要咱们保证样本容量N很大,就能使得“μ和v的差别大”这件事的几率是很小的。cdn
若是咱们的假设函数h已经肯定了,那么咱们能够这样把咱们的问题对应到罐子模型:每一个球表示一个输入x,橙色表示h与真实的函数f预测的值不相同,绿色表示相同,即:blog
那么罐子中的全部球就是全部可能的输入x,而抓的一把球表示咱们的训练集(注意!这里实际上是作了一个假设:咱们的训练集和测试集都由同一个未知的几率分布P来产生,也就是来源于同一个罐子),那么橙色球占的比例μ就表示咱们的假设函数h在真正的输入空间中的预测错误率Eout(咱们最后想要下降的),v就表示咱们在训练集中的预测错误率Ein(咱们的算法能最小化的),由Hoeffding不等式,就能获得:get
也就是说,只要咱们能保证训练集的量N足够大,就能保证训练集的错误率与真实的预测错误率是有很大几率接近的。数学
上面一节咱们证实了,对于一个给定的假设函数h,只要训练集足够大,咱们能保证它在训练集上的预测效果与真正的预测效果很大几率是接近的。可是,咱们只能保证它们的预测效果接近,也可能预测效果都是坏呢?
咱们的机器学习算法是在假设空间里面选一个h,使得这个h在训练集上错误率很小,那么这个h是否是在整个输入空间上错误率也很小呢?这一节咱们要证实的就是,对于假设空间只有有限个h时,只要训练集N足够大,这也是很大几率成立的。
首先咱们来看这张表:
首先,对于一个给定的h,咱们能够定义一个概念:“坏的训练集”(对应于表中红色的bad)。所谓坏的训练集,就是h在这个训练集上面的Ein和真实的Eout的差别超过了咱们定义的容忍度ε。Hoeffding不等式保证了,对于一个给定的h(表中的一行),选到坏的训练集的几率是很低的。
而后,对于假设空间里面有M个候选的h,咱们从新定义“坏的训练集”的概念(对应于表中橙色的bad),只要它对于任何一个h是坏的,那么它就是一个坏的。那么咱们选到橙色坏的训练集的几率能够以下推导:
因为M是有限的,只要训练集N足够大,咱们选到坏训练集的几率仍然是很小的。也就是说,咱们的训练集很大多是一个好的训练集,全部的h在上面都是好的,算法只要选取一个在训练集上表现好的h,那么它的预测能力也是PAC好的。也就是有不等式:
所以机器学习过程以下图:
(这里多出来的橙色部分表示,训练集和测试集是由同一个几率分布产生的)
所以当有限个h的状况下,机器学习算法确实是能学到东西的。
以后咱们会讨论,当假设空间存在无限个h时,机器学习是否还有效。
上一节咱们证实了,当假设空间的大小是M时,能够获得几率上界:
即,只要训练数据量N足够大,那么训练集上的Ein与真实的预测错误率Eout是PAC(大几率)接近的。
可是,咱们上面的理论只有在假设空间大小有限时才成立,若是假设空间无限大,右边的几率上界就会变成无限大。
事实上,右边的边界是一个比较弱的边界,这一节咱们要找出一个更强的边界,来证实咱们的机器学习算法对于假设空间无限大的情形仍然是可行的。咱们将会用一个m来代替大M,而且证实当假设空间具备break point时,m具备N的多项式级别的上界。
对于一组给定的训练集x1,x2,...,xN。定义函数H(x1,x2,......,xN),表示使用假设空间H里面的假设函数h,最多能把训练集划分红多少种圈圈叉叉组合(即产生多少种Dichotomy,最大是2^N)。
例如,假设空间是平面上的全部线,训练数据集是平面上的N个点,则有:
N = 1 时,有2种划分方式:
N = 2时,有4种划分方式:
N = 3 时, 有8种划分方式:
N = 4时,有14种划分方式(由于有两种是不可能用一条直线划分出来的):
…………
另外,划分数与训练集有关,(例如N=3时,若是三个点共线,那么有两种划分就不可能产生,所以只有6种划分而不是8种):
为了排除对于训练数据的依赖性,咱们定义成长函数:
所以,成长函数的意义就是:使用假设空间H, 最多有多少种对训练集(大小为N)的划分方式。成长函数只与两个因素有关:训练集的大小N,假设空间的类型H。
下面列举了几种假设空间的成长函数:
这里咱们定义break point。所谓break point,就是指当训练集的大小为k时,成长函数知足:
即假设空间所不能shatter的训练集容量。
容易想到,若是k是break point,那么k + 1, k + 2....也是break point。
因为第一个break point会对后面的成长函数有所限制,因而咱们定义上界函数B(N,k),表示在第一个break point是k的限制下,成长函数mH(N)的最大可能值:
如今咱们开始推导这个上界函数的上界:
首先,B(N,k)产生的Dichotomy能够分为两种类型,一种是前N-1个点成对的出现,一种是前N-1个点只出现一次:
所以显然有:
而后,对于前N-1个点在这里产生的全部状况:
显然这里的个数就是α+β,显然,这前N-1个点产生的Dichotomy数仍然要受限于break point是k这个前提,所以:
而后,对于成对出现的Dichotomy的前N-1个点:
咱们能够说,这里的前N-1个点将会受限于break point是k-1。反证法:若是这里有k-1个点是可以shatter的,那么配合上咱们的第N个点,就能找出k个点能shatter,这与B(N,k)的定义就矛盾了。所以咱们有:
综合上面,咱们有:
利用这个递推关系以及边界情形,咱们能够用数学概括法简单证实获得(事实上能够证实下面是等号关系):
所以成长函数具备多项式级别的上界。
这里咱们不涉及严格的数学证实,而是用一种通俗化的方法来引出VC-Bound。也就是如何用m来替换M。
因而咱们就获得了机器学习问题的PAC几率上界,称为VC-Bound:
所以咱们获得了更强的边界,当右边的成长函数具备break point时,它的上界是N^k-1级别的,只要咱们的N足够大,“存在一个假设函数h使得坏状况发生”这件事的概率就会很小。
结论:当假设空间的成长函数具备break point时,只要N足够大,咱们能PAC地保证训练集是一个好的训练集,全部h在上面的Ein和Eout都是近似的,算法能够对这些h作自由选择。也就是机器学习算法确实是能work的。
通俗的说,机器学习能work的条件:
1 好的假设空间。使得成长函数具备break point。
2 好的训练数据集。使得N足够大。
3 好的算法。使得咱们能选择在训练集上表现好的h。
4 好的运气。由于仍是有必定小几率会发生坏状况。
END
本文转自:https://www.cnblogs.com/coldyan/