2.2 评估方法
本节介绍3种模型评估方法:留出法、交叉验证法、自助法。留出法由于操作简单,因此最常用;交叉验证法常用于对比同一算法的不同参数配置之间的效果,以及对比不同算法之间的效果;自助法常用于集成学习(详见“西瓜书”8.2节和8.3节)产生基分类器。留出法和自助法简单易懂,在此不再赘述,下面举例说明交叉验证法的常用方式。
对比同一算法的不同参数配置之间的效果:假设现有数据集,且有一个被评估认为适合用于数据集的算法,该算法有可配置的参数。假设备选的参数配置方案有两套:方案,方案。下面通过交叉验证法为算法筛选出在数据集上效果最好的参数配置方案。以3折交叉验证为例,首先按照“西瓜书”中所说的方法,通过分层采样将数据集划分为3个大小相似的互斥子集:、、。然后分别将其中1个子集作为测试集,将其他子集作为训练集,这样就可获得3组训练集和测试集。
训练集1:,测试集1:
训练集2:,测试集2:
训练集3:,测试集3:
接下来用算法搭配方案在训练集1上进行训练,训练结束后,将训练得到的模型在测试集1上进行测试,得到测试结果1。依此方法分别通过训练集2和测试集2、训练集3和测试集3,得到测试结果2和测试结果3。最后,对3次测试结果求平均即可得到算法搭配方案在数据集上的最终效果,记为。同理,按照以上方法也可得到算法搭配方案在数据集上的最终效果,可通过比较和之间的优劣来确定算法在数据集上效果最好的参数配置方案。
对比不同算法之间的效果:同上述“对比同一算法的不同参数配置之间的效果”中所讲的方法一样,只需要将其中的“算法搭配方案”和“算法搭配方案”分别换成需要对比的算法和算法即可。
从以上举例可以看出,交叉验证法在本质上是进行多次留出法,且每次都换不同的子集作为测试集,最终让所有样本均至少成为1次测试样本。这样做的理由其实很简单,因为一般的留出法只会划分出1组训练集和测试集,仅依靠1组训练集和测试集去对比不同算法之间的效果显然不够置信,偶然性太强。因此,要想基于固定的数据集产生多组不同的训练集和测试集,就只能进行多次划分,且每次采用不同的子集作为测试集,即为交叉验证法。
2.2.1 算法参数(超参数)与模型参数
算法参数是指算法本身的一些参数(也称超参数),例如近邻算法的近邻个数、支持向量机的参数 [详见“西瓜书”第6章的式(6.29)]。配置好相应参数后,对算法进行训练,训练结束即可得到一个模型,例如支持向量机最终会得到和的具体数值(此处不考虑核函数),这就是模型参数。为模型配置好相应的模型参数后,即可对新样本做出预测。
2.2.2 验证集
带有参数的算法一般需要从候选的参数配置方案中选择相对于当前数据集的最优参数配置方案,例如支持向量机的参数,一般采用的是前面讲到的交叉验证法。但是交叉验证法操作起来较为复杂,现实中更多采用的是:先用留出法将数据集划分成训练集和测试集;再对训练集采用留出法划分出新的训练集和测试集(称新的测试集为验证集);接下来基于验证集的测试结果调参选出最优参数配置方案;最后将验证集合并进训练集(训练集数据量够的话,也可不合并),用选出的最优参数配置方案在合并后的训练集上重新训练,并用测试集评估训练得到的模型的性能。