模型评估
最近在看周志华的机器学习,将第二章作下总结:
一、经验误差与过拟合
下面我们来认识几个常规的概念:
1、误差:学习模型的实际预测输出与样本的真实输出之间的差异。
2、经验误差\训练误差:学习模型在训练集上的误差。
3、泛化误差:在新样本上的误差。
4、过拟合:学习能力太强,把训练样本的本身自身特点当成潜在样本都会具有的一般性质,导致泛化性能下降。
5、欠拟合:与过拟合相对,指对训练样本的一般性质尚未学好。
总结:当然,我们希望得到泛化误差小的学习模型,但新的样本事先并不了解,只能将训练误差最小化。但是当我们学到一个经验误差很小,在训练集上表现很好的学习模型,却在实际中泛化误差表现差强人意。这是因为在训练过程中,往往会把训练样本的本身自身特点当成潜在样本都会具有的一般性质,造成过拟合。实际上我们希望得到一个在新样本上表现很好的学习模型,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”。
二、评估方法
1、留出法
-
概念:直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个集合作为测试集T,在S上训练出模型后用T估计测试误差。
-
缺点:(1)存在很多划分方式对D进行分割,导致评估方式也会有差别,使用单次得到的结果不稳定可靠。(2)训练集和样本集的样本个数不好确定。
-
改进:划分尽可能保持数据分布的一致性(分层采样),避免因划分过程引入额外的偏差对最终结果产生影响。采用若干次随机划分、重复进行试验评估后取平均值作为留出法的评估结果。
-
常见做法:将大约2/3~4/5的样本用于训练,其余用于测试。
2、交叉验证法
-
概念:先将数据集D划分为k个大小相似的互斥子集,每个子集都要尽可能的保持数据分布的一致性(分层采用),每次用k-1个子集的并集作为训练集,余下的一个子集作为测试集。共有k种方式,最终返回k个测试结果的均值。
-
特例:当D包含m个样本,k=m,这叫做“留一法”。优点是实际评估的模型和期望评估的很相似。缺陷是在数据集比较大时,计算开销大。
-
缺点:(1)与留出法一样,因划分不同引入的差别。 (2)评估结果的稳定性和保真性很大程度上取决于k值。
-
改进:随机使用不同的划分重复p次,最终结果是p次k折交叉验证结果的均值。常见的有:10次10折交叉验证。
-
常见做法:k选用5,10,20
总结:以上两种方法保留了一部分样本用于测试,因此实际评估的模型使用的训练集比D小,引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模影响较小,但计算复杂度高,所以为了减少这类影响又高效评估,提出自助法。
3、自助法
-
概念:直接以自助采样法为基础,给定包含m个样本的数据集D,对它采样产生数据集D‘,每次随机从D中挑选一个样本,将其拷贝到D’,然后再放回D中。重复m次,得到了包含m个样本的D’。有部分样本会多次出现在D’中,也有的样本不会出现。
-
常用场景:在数据集较小、难以有效划分时。从初始数据集中产生多个不同的训练集,对集成学习等方法有很大好处。
-
缺点:改变了原始数据集分布,引入估计偏差。在初始数据量足够时,留出法和交叉验证常用。
三、性能度量
衡量泛化能力的评价标准
1、错误率与精度
-
错误率:分类错误的样本数占样本总数的比例。
-
精度:分类正确的样本数占样本总数的比例。
2、查准率、查全率与F1值
为满足任务需求,比如:信息检索中,我们经常关心“检索出的信息中有多少比例是用户感兴趣的” “用户感兴趣的信息有多少被检索出来”。查准率和查全率适用于此类需求。一般来说查准率高的话,查全率就会低,反之。
-
查准率 = 真正例/(真正例+假正例),也就是在预测为正例的样本中,其真实类别为正例所占的比重。
-
查全率 = 真正例/(真正例+假反例),也就是在正样本中,预测为正实际上也为正所占比重。
-
F1值 = 2*查准率*查全率 / (查准率+查全率) ,F1值是查准率和查全率的调和平均,即1/F1 = 1/2 * (1/查准率 + 1/查全率)。
-
由于对查准率和查全率重视程度不同,引入更一般的形式F = (1+b2)* 查准率 *查全率 / (b2*查准率)+查全率。b大于1时查全率更有影响,小于1时查准率更有影响。
3、ROC和AUC
ROC曲线的纵轴是“真正例率”,横轴是 “假正例率”。
真正例率 = 真正例 / (真正例+假反例)
假正例率 = 假正例 / (真反例+假正例)
若一个学习模型的ROC曲线被另一个学习模型曲线完全包住,则后者性能优于前后,若两个学习模型发生交叉,则难以判断哪个更好,一般来说可以比较ROC曲线下的面积,即AUC。