1、为什么需要做方法评估
通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。因此,需使用“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。
2、有哪些评估方法
将样本集变成训练集和测试集,而训练集和测试集如何分配,使效果达到最优。具体有三种做法:留出法、较差验证法和自主法。
2.1留出法
直接将数据集D划分为两个互斥集合S(训练集)和T(测试集)。D=S∪T,S∩T=∅,在S上训练出模型后,用T来评估测试误差,并将其作为泛化误差的估计。
举例:
采用方法:二分类任务
样本集:D包含1000个样本,其中500个正例,500个反例
S与T的划分方法:S包含700个样本,正例350,反例350;T包含300个样本,正例150,反例150
错误率与精度的计算:假设T上有90个样本分类错误,其错误率为(90/300)*100%=30%;精度为[(300-90)/300]*100%=1-30%=70%
补充:单次使用留出法得到的估计误差往往不够稳定,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。如对上述1000个样本,可反复随机划分S和T,使用模型方法后,计算精度,求取平均值。
2.2交叉验证法
将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j),每个子集Di都尽可能保持数据分布一致。
举例:
采用方法:二分类任务
样本集:D包含1000个样本,其中500个正例,500个反例
S和T的划分方法:
- 1000个样本划分为D1有10个样本(5个正例,5个反例),D2有10个样本(5个正例,5个反例)…D10有10个样本(5个正例,5个反例);
- 训练集、测试集以及最终的精度计算
训练集 |
测试集 |
测试结果 |
||||||||
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
D8 |
D9 |
D10 |
测试集精度1 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
D8 |
D10 |
D9 |
测试集精度2 |
…… |
…… |
…… |
||||||||
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
D8 |
D9 |
D10 |
D1 |
测试集精度10 |
- 对测试集精度取平均,作为最终的泛化误差
补充:交叉验证法存在一个特例:留一法。若样本集为1000个,训练集为999个,测试集为1个。对于数据集比较大的情况,训练开销大。
2.3自助法
给定包含m个样本的数据集D,对其进行采样产生数据集D‘:每次随机从D中挑选一个样本,将其拷贝到D‘,然后将该样本放回到D中,使该样本在下次采样中人可能被采到;重复m次后,便得到了包含m个样本的数据集D‘。
举例:
采用方法:二分类任务
采样集:D包含1000个样本,其中500个正例,500个反例
S和T的划分方法:
随机可放回的抽取700个样本作为训练集,在这700个样本中会存在重复的样本。其中样本在700次采样中始终不被采到的概率为(1-1/700)^700=0.3676。(当采样数为m时,始终不被采到的某样本概率为(1-1/m)^m,取极限得到limm→∞(1-1/m)^m→1/e≈0.368)。
测试集中有0.36概率的样本未在训练集中出现,可选择D\D’中的300个样本作为测试集。并计算测试集中模型的精度。
补充:自助法在数据集较小,难以有效划分训练和测试集时方法较为有用。但通过自助法产生的数据集改变了初始数据集的分布,会出现估计偏差。
2.4调参与确定最终模型
大多数算法均需要配置参数,参数配置不同,学得模型的性能往往有显著差别。配置参数需选定一个范围和变化步长。
在给定抱恨m个样本的数据集D中,模型评估与选择过程中均需要留一部分数据进行评估测试,事实上,我们只是用一部分数据进行训练模型。在模型选择完成后,学习算法和参数配置均选定,此时应该用数据集D重新训练模型,这个模型在训练过程中使用了所有m个样本,这才是最终提交给用户的模型。
形成模型中使用的数据为“测试集”,评估模型的数据称为“验证集”。
3、总结
上述过程主要是介绍了三种划分测试集与验证集的方法,主要是留出法、交叉验证法和自助法,前两种方法很相似,后一种方法对于初始数据量足够的情况下会有估计偏差的问题。具体情况,用户可选择适合的划分方法对模型进行验证。