目录
前言
一、模型的学习能力与泛化能力
1、学习能力
2、泛化能力(generalization ability)
3、过拟合与模型选择
二、划分数据集D的典型实现方式
2.1 留出法(hold-out)
2.2 交叉验证法(cross validation)
2.3 自助法(bootstrapping)
三、性能度量
错误率与精度
查准率、查全率与F1
ROC与AUC
代价敏感错误率与代价曲线
四、基于测试集的实值函数预测模型评价
前言
有很多新手刚刚接触大数据与人工智能方向学习,如果不知道怎么着手的,跟我一起慢慢进步叭~
提示:以下是本篇文章正文内容,下面案例可供参考
一、模型的学习能力与泛化能力
1、学习能力
学习能力是指学习得到的模型关于训练样本集的预测能力。
学习能力的评价:训练误差(或经验误差),基于损失函数的经验风险。
2、泛化能力(generalization ability)
泛化能力是指学习得到的模型关于未知样本的预测能力
泛化误差:是学习得到的模型的期望风险。
泛化能力的评价:泛化误差难以估计,实际以测试误差评价模型的泛化能力。
3、过拟合与模型选择
我们实际希望的是在新样本上能表现得很好的学习器,为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然而,当学习器把训练样本学得太好了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这种现象在机器学习中称为过拟合,与过拟合相对的是欠拟合。
过拟合(overfitting):当采用的规模有限的训练集学习模型时,因模型过于复杂,使得学得的模型对训练集预测性能很好,而关于测试集的预测性能很差,称该现象为过拟合。
欠拟合(underfitting):指对训练样本的一般性质尚未学好。
有多种因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由于学习能力低下造成的。欠拟合比较容易克服,例如在决策树中扩展分支、在神经网络学习中增加训练轮数等等。而过拟合则很麻烦。
为避免过拟合,应选择适当复杂度的模型,常采用两种方式:①基于结构风险最小化策略引入含正则项的目标函数;②基于交叉验证方式的模型选择(交叉验证不仅用于模型选择,还用于最终模型的评价)。
二、划分数据集D的典型实现方式
我们只有一个包含m个样例的数据集D={( x1,y1) , (x2,y2) , … ,(Xm Ym)},既要训练,又要测试,怎么样才能做到呢?答案是:通过对D进行适当的处理,从中产生出训练集S和测试集T。下面是几种常见的划分数据集的方式。
2.1 留出法(hold-out)
留出法的过程:直接将数据集D 划分为两个互斥的集合,其中一个集合作为训练集S,另一个集合作为测试集T,即D = S∪T,S∩T = ø,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
以二分类任务为例,假定D包含1000个样本,将其划分为S包含700个样本,T包含300个样本,用S进行训练后,如果模型在T上有90个样本分类错误,那么其错误率为:(90/300)*100% = 30%,精度则为70%
需要注意的是:①训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响;②单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果;③常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。
2.2 交叉验证法(cross validation)
交叉验证法的过程:先将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=ø(i≠j),每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k - 1个子集的并集作为训练集,余下的那个子集作为测试集,这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的平均值。显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”,k最常用的取值是10,此时称为10折交叉验证,其他常用的k值有5,20等。
将数据集D划分为k个子集存在多种划分方式,为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的平均值,例如最常见的是“10次10折交叉验证”。
2.3 自助法(bootstrapping)
自助法的过程:给定包含m个样本的数据集D,我们对它进行采样产生数据集D':每次随机从D中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D',这就是自主采样的结果。
显然,D中有一部分样本会在D'中多次出现,而另一部分样本不出现,可以做一个简单的估计,样本在m次采样中始终不被采样到的概率是是
取极限得到:
即通过自主采样,初始数据集D中约有36.8%的样本未出现在采样数据集D'中,于是将D’用作训练集,D/D'用作测试集,这样的测试结果,称为“包外估计”。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然鹅,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差,因此,在初始数据量足够时,留出法和交叉验证法更常用一些。
三、性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。
错误率与精度
错误率:指分类错误的样本数占样本总数的比例
精度:指分类正确的样本数占样本总数的比例
对样本集D,分类错误率定义为:
精度则定义为:
查准率、查全率与F1
在信息检索中,我们经常会关心“检索出的信息中有多少比例是用户感兴趣的”“用户感兴趣的信息有多少被检索出来了”,这时候,查准率(precision)和查全率(recall)更为合适。
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,分别简写为TP、FP、TN、FN,显然有:TP+TN+FP+FN=样例总数。
查准率P和查全率R分别定义为:
以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称“P-R曲线”,显示该曲线的图为“P-R图”
P-R图直观地显示出学习器在样本总体上的查全率、查准率。在进行比较时,看平衡点(BEP),它是查准率=查全率时的取值。图中学习器A的性能优于B,B的性能优于C 。
BEP还是过于简化,更常用的是F1度量:
ROC与AUC
ROC曲线与P--R曲线类似,ROC曲线的纵轴是真正例率(TPR),横轴是假正例率(FPR)
两者定义为:
ROC曲线下的面积,即为AUC,是比较性能好坏时的重要指标。
代价敏感错误率与代价曲线
在现实任务中常会遇到这样的情况:不同类型的错误所造成的后果不同。为衡量不同类型错误所造成的不同损失,可将错误赋予“非均等代价”。
以二分类任务为例,我们可根据任务的领域知识设定一个“代价矩阵”,其中costij表示将第i类样本预测为第j类样本的代价。一般来说,costii=0;若将第0类判别为第1类所造成的损失更大,则cost01 > cost10;损失程度相差越大,cost01与cost10值的差别越大。
代价敏感错误率为:
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而代价曲线则可达到该目的。代价曲线图的横轴是取值为[0,1]的正例概率代价,纵轴是取值为[0,1]的归一化代价。
其中p是样例为正例的概率;
其中FPR是假正例率,FNR = 1-TPR是假反例率。
代价曲线的绘制:ROC 由线上每一点对应了代价平面上的二条线段 ROC 线上点的坐标为 (TPR FPR) ,则可相应计算出 FNR,然后在代价平面上绘制 一条从 (0,FPR) 到(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将 ROC 曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图:



