模型评估与选择
1. 评估方法
通常,我们可通过实验测试来对学习器的泛化误差(在新样本上的误差)进行评估并进而做出选择,为此,需使用一个“测试集”来测试学习器对新样本的判断能力,然后以测试集上的“测试误差”作为泛化误差的近似。主要有以下几种测试方法:
1.1 留出法
直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。一般要采用若干次随机划分,重复进行实验评估取平均值作为留出法的评估结果。
常见的做法是将大约2/3到4/5
的样本作为训练集,剩下的作为测试集。
1.2 交叉验证法
先将数据集D划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的那个作为测试集。这样可以获得k组训练/测试集,从而进行k次训练和测试。最终取平均值。
k常见的是取10
,此时称为10折交叉验证。
当数据集D包含m个样本,而k=m时,称为留一法,这种方法得到的评估结果一般比较精确,但是训练集只比所有样本少一个,训练成本较高。
1.3 自助法
对于给定样本数为m的数据集D,我们对其进行采样产生数据集D':每次随机从D中选一个样本,将其放入D',然后将其放回去,再进行随机挑选,以此类推。这个过程执行m次后,我们得到包含m个样本的D'。
容易得到,一个样本不被选中的概率为(1-1/m)m,取极限,约为1/e = 0.368,即有36.8%的数据D'中不存在的。
于是将这36.8%的数据作为测试集,D'的数据作为训练集,这种方法对数据集较小,难以有效划分训练/测试集的时候很有用。
2. 性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还要有衡量模型泛化能力的评估标准,这就是性能度量。
2.1 错误率与精度
这是分类任务中最常见的两种性能度量。
错误率就是样本中出错的比例,而精度则是(1-错误率)
2.2 查准率(精确率)和查全率(召回率)
精确率指的是模型判为正的所有样本中有多少是真正的正样本;召回率指的是所有正样本有多少被模型判为正样本,即召回。
先介绍下4个概念:真正例、假正例、真反例、假反例
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
查准率P为TP/(TP +FP),查全率R为TP/(TP + FN)
一般而言,查准率高的时候,查全率会较低,反之亦然。
2.3 F1度量
F1 = (1+b2)*P*R/(b2*P + R)
b大于1时查全率有更大影响,b小于1时查准率更有影响
2.4 ROC与AUC
ROC全称为“受试者工作特征”,先介绍2个概念:
真正例率TPR=TP/(TP+FN)
假正例率FPR=FP/(TN+FP)
ROC曲线
,如下:
AUC则是其面积(曲线与右下两条线的闭合形状),一般而言,面积越大的学习器性能越好。
作者: vachester
出处:http://www.cnblogs.com/vachester/
邮箱:xcchester@gmail.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。