Chapter-02模型评估与选择
2.2评估方法
当我们得到一个学习器后,如何去判断这个学习器的优劣呢,有哪些评判标准呢?我们最希望的是学习器能够很好地适应新样本,即泛化能力强,泛化误差小(泛化误差指的是学习器在在新样本上的误差),泛化误差就是评价一个学习器优劣的标准。研究中,我们使用测试集的测试误差作为泛化误差的近似,所以我们需要在数据集中划分出训练集S和测试集T,应该采用什么方法进行划分呢?这些方法就是我要介绍的评估方法。我个人认为我所要介绍的这些方法,均是为了得到泛化误差,从而为评估模型而服务的,所以称作评估方法。
2.2.1留出法
1,定义:直接将数据集D划分为两个互斥的集合,一个训练集S,一个训练集T。
注:训练/测试集的划分尽可能保持数据分布的一致性,比如说采用分层采样的方式(分层采样:保留类别比例的采样方式),避免因数据划分过程引入额外的偏差而对最终结果造成影响。
2,评估结果的得出
即使在给定了类别比例后,仍然存在多种划分方式。而且单次使用留出法所得到的估计结果一般不可靠,所以我们可以根据多种划分方式得到多组实验结果,然后取平均值作为留出法的评估结果。
3,面临的问题:因训练/测试集规模大小而造成的问题
若S中包含大多数样本,则训练出的模型可能接近于数据集D训练出的模型,但是T太小,评估结果缺乏准确性,就好比你学了这么多年,高考就考十个题,这是无法准确反映出学生之间学习水平差异的。但是如果T太大,被评估出的模型和用D评估出的模型相比可能存在较大的差异,从而降低了评估结果的保真性,同样拿学习和考试作为例子,平时不学习(训练太少),临考前恶补3个小时,考场必定失意(测试误差大),然后就断定这位同学学习能力有问题(这个评估模型的泛化误差大),这显然也是不合适的,这样的评估结果是不真实的。
4,如何避免上述问题
一般将大约2/3-4/5的样本用于训练,剩余用于测试。
2.2.2交叉验证法:将数据集D划分成为k个大小相似的互斥子集(通过分层采样的方法),每次采用k-1个子集作为训练集,余下的那个子集作为测试集。
例如:
S | T |
D1 D2 D3…Dk-2 Dk-1 | Dk |
D1 D2 D3…Dk-2 Dk | Dk-1 |
这样就可以得到k组训练集/测试集,从而进行k次训练和测试,最终返回k个测试结果的均值,通常将这种交叉验证法称作“k折交叉验证”。
K折交叉验证因为子集中元素不同的划分方式,所以k个组中的每一个组可以产生p种不用的划分方式,可以随机进行p次试验,则称为p次k折交叉验证,相当于共进行了k*p次试验,结果最终返回k*p次实验的均值。
在这里在介绍一下交叉验证法的一个特例:留一法。
定义:若D中含有m个样本,若令k=m,只存在一种划分方式,即每个子集包含一个样本,共有m个子集。
优点:留一法使用的训练集和数据集只相差一个样本,则实际评估的模型和期望评估的模型相似,所以往往被认为较为准确。
缺陷:开销大,训练集中样本数量庞大。
而且根据NFL定理(没有免费的午餐定理:脱离具体的问题,空谈什么算法最好毫无意义,要谈论算法的相对优势,必须要针对具体的学习问题,学习算法自身的归纳偏好与问题是否相配,决定了算法的优势。)我们不能够完全肯定此种算法一定适合具体的问题。
2.2.3自助法
1,背景:因为训练样本规模的不同而导致的估计偏差,留一法受训练样本规模变化的影响小,因为训练样本的规模是固定的,但是计算复杂度太高,急需一种可以减少训练样本规模变化所带来的影响,同时又能高效进行实验估计的方法。
2.定义:给定包含m个样本的数据集D,我们对它进行采样产生数据集D1,每次随机从D中挑选一个样本,将其拷贝进D1,然后再将该样本放回初始数据集D,使得该样本在下次采样时仍有可能被采集到,执行m次后,就可以得到包含m个样本的数据集D1.
3,数学分析:
D中有m个样本,每个样本被采样的概率为1/m,那么不被抽到的概率就是(1-1/m),进行m次试验后,每个样本在m次采样中始终不被采集到的概率是(1-1/m)^m.若进行无限次试验后,lim(m->oo)(1-1/m)^m=1/e约等于0.368;也就是说将有1/3的样本不会被采集到,将作为测试样本,与留出法中采取2/3~4/5的样本作为训练样本的道理相符合。
4,包外估计:采用自助法得到的测试结果成为包外估计。
5,优点:自助法适用于数据集较小,难以有效划分训练集、测试集的情况,自助法能从数据集中产生多个不同的训练集(随机性),这对集成学习等方法有很大好处。
缺陷:自助法产生的数据集改变了初始数据集的分布,引入了误差。
所以在数据量足够时,宜选择留出法和交叉验证法。