本文主要是介绍机器学习和数据挖掘(5):训练与测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
回顾与说明
不像上一章的学习流程图,我们这里假设可学习的数据来自于一个统一的分布(不考虑噪声的情况),且假设空间中的假设函数为有限个的情况下,其学习流程图如图所示。
我们这里假设训练样本和测试样本本来自同一的分布,并且假设空间的假设是有限的,即 |H|=M , M 是有限的值。在这种情况下,在训练样本N足够大,假设空间中的所有的假设都会遵循PAC准则,确保
因此,训练样本和测试样本满足同分布,假设空间有限,并且训练数据足够大,机器学习在这种情况下是可行的。
虽然我学的不是台大的机器学习,但是我看两边的PPT很相似,我这里就摘抄了台大的课程情况。
回顾一下之前四章的内容:
第一章介绍了存在一个未知的目标函数f,机器学习的任务是找出一个假设函数g,使得假设g和目标函数f很接近,即 g≈f ,用第四章的概念可以解释为在测试时的错误率接近零,即 Eout(g)≈0 。
第二章介绍了在训练时使假设函数g和目标函数f很接近就可以了,即 Ein(g)≈0 。
第三章介绍了一种机器学习最基础、最核心的方法:使用批量的数据和监督式的学习来做二元分类。
第四章介绍了在假设空间不是太多,即假设函数有限的情况下,训练时的错误率和测试时的错误率很接近,即 Ein(g)≈Eout(g) 。
从以上各章节中可以看出将机器学习分为了两个主要问题来解决:
- 是否能确保 Ein(g) 是 Eout(g) 足够接近的?这是连接第一章和第二章的桥梁。
- 如何 Ein(g) 使得足够小?这是第二章的内容,当然后面的章节还会继续介绍其他的技巧。
在第四章中介绍的假设空间的大小M与上述两个问题存在何种关系?
问题 | M很小的时候 | M很大的时候 |
---|---|---|
Ein(g)≈Eout(g) | 满足, PD[BADi]≤2M⋅exp(⋅) M小的时候,两者不相等的几率变小了 | 不满足, PD[BADi]≤2M⋅exp(⋅) M大的时候,两者不相等的几率变大了 |
Ein(g)≈0 | 不满足,在M变小时,假设的数量变小, 算法的选择变小,可能无法找到 Ein(g) 接近0的假设。 | 满足,在M变大时,假设的数量变大, 算法的选择变大,找到 Ein(g) 接近0的假设的几率变大。 |
显然M趋于无穷大时,问题一的解决非常不好,如何解决这个问题呢?
需要寻找一个小于无限大M的替代值,并且这个值还和假设空间有关系,用 mg 表示。
从训练到测试
在误差理论一文中,求出了在有限假设空间中满足 Ein(g)≈Eout(g) 的假设的上限,当时,使用联合上限(union bound),实际不等式的上界被放大了太多。假设在假设空间中包含无限多的假设函数,则此上限为无穷大,而真正合理的上界是不应该大于1。
上界较大的原因是,两个假设函数出现完全相同的坏数据的可能性非常大,对于集合而言,他们的交集不是空集,所以这两个集合的或集写成两个集合相加的形式时,一定要减去它俩的交集。而联合边界的问题出在,这几个集合不仅相交,而且交集很大,却没有被减掉,因此上界过于宽松。
举个简单的例子,在二维平面上进行二元线性分类,假设两条直线h1和h2很接近,那么就不难得出两种假设的坏数据也基本重叠,即 |Ein(h1)−Eout(h1)|≈|Ein(h2)−Eout(h2)| 。如下图所示。
二分类(Dichotomies)
那么我们可以想到,输入的样本空间 X 是无穷大的,同时也就造成了我们可能有无限种假设,也就是说 |H|=M→∞ 。
那么当我们在输入的样本空间中采样的时候,我们得到了 (x1,x2,…,xN)⊂X ,我们就可以在有限范围内进行计数,从而得到 |H(x1,x2,…,xN)|≤2N 。
上图是一个两个点采样的情况,我们可以得到4个假设函数。
很明显的,如果我们采样的点很多,那么我们的假设空间也较大,而我们如果采样较少的点,我们的假设空间也就较小。我们就可以用这样的采样点得到假设空间,从而代替M。
生长函数
我们需要找到的是对于某一个大小的采样,最大的假设空间是多少。生长函数就是用于计算具体的某个采样的大小,可以得到最多多少个二分类。
先从最简单的分一个样本点着手,假设是一个二元线性分类问题,一个样本的例子比较容易理解,如下图所示:
一个样本点分类可以有几种方式?无非两种,该样本为正,或者为负。而假设空间中的所有假设或者称之为直线,都只能分属于这两种情况。
继续观察两个样本的情况,如图所示:
这种情况可以分为如图所示的4种情况,也就是所有的直线可以分属这4个类中。
继续观察三个样本的情况,如图所示。
出现了8种情况,但是如果样本的分布转变一下呢?比如三排成一线,就只有6类,如图所示。
继续观察四个样本的情况,如图所示:
如何具体化(就是只使用训练样本的大小N来表达出该函数)生长函数成为接下来需要解决的问题。先从简单的例子着手一步一步的推导到在感知器下该函数的具体表达。
生长函数的例子
正射线
第一个例子是举一个最简单的情况,在一维实数的情况下,并且限制分类的正方向指向固定的一边,求解生长函数。给这一分类情况起名叫做正射线(positive rays),如图所示。
用数学的方式表示如下:
- 输入数据样本为 x∈R , R 为实数集;
- 其假设空间可以表示为 h(x)=sign(x−a) ,其中a是阈值,表示大于某个实数a数据被分为正类,反之为负类。
- 本质是在一维平面上的感知器。
正射线分类的生长函数很容易得出:
正分类
下一个例子还是在一维空间里,与正射线分类不同的是,这是一种中间为正两边为负的情况,叫做中间为正的分类(positive interval),如图所示。
其生长函数公式如下:
凸包
以凸图形分类为例,在凸区域内部为正,外部为负,也就是凸区域的边界作为假设函数的划分线,如图所示。
如何求解在这种情形下的生长函数?生长函数是寻找一个最大值的情形,因此要取一些极端的情况,比如所有的点都落在一个圆圈上,用一个凸多边形将所有正类的样本点连接起来,将此图形稍微的放大一点,得到的凸多边形,其中间的区域为正,外边的区域为负,如图所示。
可以很容易地得到生长函数
突破点
将上一节中列举出来的所有成长函数列在表中
正射线 | |
一维空间的感知器 | |
间隔为正的分类 | |
凸图形分类 | |
二维平面的感知器 | 在某些情况 |
我们希望得到一种多项式(polynomial)形式的成长函数,而不是指数(exponential)形式的,因为这样上界的下降速度将会更快(可以用类似于时间复杂度的方式来理解)。
能否找出一种规律将表中二维感知器的成长函数也写成多项式形式的呢?于是提出了一个新的概念,突破点(break point)。
那什么叫突破点呢?对于三个样本点的感知器,所有的样本还是满足完全二分类情形(shattered,也就是还是可以最大化分类的),但是四个样本是却不能满足完全分类情形(不能满足 种分类了),于是我们称不能满足完全分类情形的样本数量为突破点,可以想象得出当有更多的样本点时,一定也不能满足完全分类情形。因此二维感知器成长函数的突破点是4。在通过一个表来说明上节提到的所有分类情况。
正射线 | 突破点是2 | |
一维空间的感知器 | 突破点是3 | |
间隔为正的分类 | 突破点是3 | |
凸图形分类 | 没有 | |
二维平面的感知器 | 突破点是4 | 在某些情况 |
从表中可以看出可能成长函数和突破点之间有一定的关系,即突破点是k的情况下,成长函数 。(但是这是一个过于宽松的上界,从上表的第二行可以看出成长函数实际比这个规律要小)
这篇关于机器学习和数据挖掘(5):训练与测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!