分类器模型评估与选择

分类器模型评估与选择

时间:2022/5/25

1.评估分类器性能的度量

1.1.相关知识

  • 正元组/正实例:感兴趣的主要元组,例如在识别老虎的图像中,老虎就是正实例。

  • 负元组/负实例:正元组之外的其他实例,如老虎图像中的花花草草等就是负实例。

  • 真正例/真阳性(True Positive,TP):是指被分类器正确分类的正实例。令TP为真正例的个数。

  • 真负例/真阴性(True Negative,TN):是指被分类器正确分类的负实例。令TN为真负例的个数。

  • 假正例/假阳性(False Positive,FP):是指被错误标记为正实例的负实例。例如猫被标记为老虎。令FP为假正例的个数。

  • 假负例/假阴性(False Negative,FN):是指被错误标记为负实例的正实例。例如识别老虎时,老虎被标记猫。令FN为假负例的个数。

1.2. 评估度量

其中P为正实例个数,N为负实例个数。TP,TN,FP,FN分别是真正例、真负例、假正例、假负例。

度量公式
准确率、识别率 T P + T N P + N {{TP+TN}\over {P+N}} P+NTP+TN
错误率、误分类率 F P + F N P + N {{FP+FN}\over {P+N}} P+NFP+FN
敏感度、真正例率、召回率 T P P TP\over P PTP
特效性、真负例率 T N N TN\over N NTN
精度 T P T P + F P TP\over {TP+FP} TP+FPTP
F 、 F 1 、 F 分 数 F、F_1、F分数 FF1F
精度和召回率的调和均值
2 ∗ p r e c i s o n ∗ r e c a l l p r e c i s o n ∗ r e c a l l {{2*precison*recall}\over {precison*recall}} precisonrecall2precisonrecall
F β , 其 中 β 是 非 负 实 数 F_{\beta},其中\beta是非负实数 Fββ ( 1 + β 2 ) ∗ p r e c i s o n ∗ r e c a l l β 2 ∗ p r e c i s o n ∗ r e c a l l {{(1+\beta^2)*precison*recall}\over {\beta^2*precison*recall}} β2precisonrecall(1+β2)precisonrecall
1.2.1.混淆矩阵(confusion matrix)

在这里插入图片描述
混淆矩阵是分析分类器识别不同类元组的一种有用的工具。TP和TN表示分类器何时分类正确,而FN与FP揭示分类器何时分类错误。如上图所示,给定m个类(m>=2),混淆矩阵是一个至少为mxm的表。前m行和m列中的表目 C M i , j CM_{i,j} CMi,j指出类i的元组被分类器标记为j的个数。理想情况下,对于较高准确率的分类器,其大部分的实例应当被混淆矩阵的主对角线上的表目表示,而其他表目应当趋近于0,即FN与FP趋近于0。

1.2.2.准确率(Accuracy)

分类器在给定检验集上的准确率被定义为:

a c c u r a c y = T P + T N P + N (1) accuracy={{TP+TN}\over {P+N}}\tag{1} accuracy=P+NTP+TN(1)

即为被该分类器正确分类的实例所占百分比。在模式识别中,准确率又被称为分类器的总体识别率:反映了分类器对各类实例的正确识别情况。与此同时,也可以使用分类器M的错误率或者误分类率,即:

e r r o r r a t e = 1 − a c c u r a c y ( M ) = F P + F N P + N (2) error rate=1-accuracy(M)={{FP+FN}\over {P+N}}\tag{2} errorrate=1accuracy(M)=P+NFP+FN(2)

如果使用训练集(而不是检验集)来估计模型的错误率,则该度量被称为再代入误差(resubstitution error)。在训练集上的估计,不管是准确率还是错误率都是一种乐观估计,因为这种估计没有在未知样本上对模型进行检验。

1.2.3.灵敏性(Sensitivity)和特效性(Specificity)

对于类分布不平衡的情况,即样本中正实例(感兴趣的样本)的主类是稀少的,数据集中正类占少部分,而负类占大部分时,分类器的准确率可能不再适合于评估。例如在医疗数据分类时,存在稀有类“cancer(癌症)”。假设已经训练过一个分类器,对cancer进行分类,cancer属性可能有yes和no两种。如果该分类器具有97%准确率,看起来像是相当准确的分类器,但如果训练样本中只有3%的实例是yes,那么97%的分类准确率可能不是可接受的。因为其很可能只是分类正确了标签为no的实例,而标签为yes的实例被错误分类了。因此需要其他度量来衡量分类器正确分类正实例和正确分类负实例的情况。

灵敏性(sensitivity) 也被称为真正例率,即正确分类正实例的百分比。而特效性(specificity) 是真负例率,即正确分类负实例的百分比。二者定义为:

s e n s i t i v i t y = T P P (3) sensitivity={TP\over P}\tag{3} sensitivity=PTP(3)

s p e c i f i c i t y = T N N (4) specificity={TN\over N}\tag{4} specificity=NTN(4)

而由(2)(3)(4)式可推出,准确率是灵敏性和特效性的函数:

a c c u r a c y = s e n s i t i v i t y P P + N + s p e c i f i c i t y N P + N (5) accuracy=sensitivity{P\over {P+N}}+specificity{N\over{P+N}}\tag{5} accuracy=sensitivityP+NP+specificityP+NN(5)

1.2.4.精度(precision)和召回率(recall)

精度(precision) 可以看作精确性的度量,即标记为正实例中的实际正实例的百分比。而召回率(recall) 可以看作是完全性的度量,即实际正实例中被标记为为正实例的百分比。实际上召回率就是灵敏性。这两个度量定义为:

p r e c i s i o n = T P T P + F P (6) precision={TP\over {TP+FP}}\tag{6} precision=TP+FPTP(6)

r e c a l l = T P T P + F N = T P P (7) recall={TP\over{TP+FN}}={TP\over P}\tag{7} recall=TP+FNTP=PTP(7)

通常精度与召回率之间趋向于呈现于互逆关系,有可能一个降低而另一个提高。例如,通过标记所有以肯定方式出现的癌症元组为yes,医疗数据分类器可能获得高精度,但如果它错误标记其他癌症元组,那么它的召回率则可能很低。精度与召回率通常一起使用,用固定的召回率来比较精度,或用固定精度比较召回率。例如,以0.75的召回率水平比较精度。

1.2.5.F度量与 F β F_{\beta} Fβ度量

这两个是精度与召回率的另一种使用方法,是把二者组合到一个度量中。两个定义如下:

F = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l (8) F={{2*precision*recall}\over {precision+recall}}\tag{8} F=precision+recall2precisionrecall(8)

F β = ( 1 + β 2 ) ∗ p r e c i s i o n ∗ r e c a l l β 2 ∗ p r e c i s i o n ∗ r e c a l l (9) F_\beta={{(1+\beta^2)*precision*recall}\over {\beta^2*precision*recall}}\tag{9} Fβ=β2precisionrecall(1+β2)precisionrecall(9)

其中 β \beta β是非负实数。F度量是精度和召回率的调和均值,它赋予精度和召回率相同的权重。 F β F_\beta Fβ度量是精度和召回率加权度量,它赋予召回率的权重是赋给精度的权重的 β \beta β倍。通常使用的 F β F_\beta Fβ采用的是 F 2 F_2 F2(赋给召回率2倍于精度的权重)和 F 0.5 F_{0.5} F0.5(赋给精度的权重是召回率的两倍)

1.2.6.其他方面度量
  • 速度:构建分类器和使用分类器的计算开销。

  • 鲁棒性:假定数据有噪声或有缺失值时分类器做出正确预测的能力。通常鲁棒性使用噪声和缺失值逐渐增加的一系列合成数据集评估。

  • 可伸缩性:这涉及给定大量数据,有效地构造分类器的能力。通常,可伸缩性用规模渐增的一系列数据集进行评估,甚至数据集无法一次性放入内存。

  • 可解释性:这涉及分类器或预测器提供的理解和洞察水平。这个度量是主观的,因此很难评估。

2.保持方法和随机二次抽样

保持(holdout)方法是我们迄今讨论准确率时暗指的方法。在这种方法中,将给定的数据集随机划分成两个部分:训练集和测试集。通常将2/3的数据划分成训练集,其余1/3的数据集作为测试集。使用训练集导出模型,其准确率用测试集进行估计。这种估计不同于之前提到的乐观估计,这是一种悲观的估计,因为数据集只有部分用于导出模型。

在这里插入图片描述

随机二次抽样(random subsampling) 是保持方法的一种变体,也可以称为K重保持方法。将每次迭代准确率的平均值作为准确率。

3.交叉检验

3.1.k-折交叉验证(k-folf cross-validation)

该方法将初始数据随机划分成k个相互独立的子集或者“折” D 1 , D 2 , . . . D k D_1,D_2,...D_k D1,D2,...Dk,每个折的大小基本相等。训练和检验k次,每次将k折中的一个折作为测试集,其他折作为训练集导出模型。对于分类而言,准确率估计是k次迭代正确分类的元组总数除以初始数据帧元组总数。

3.2.留一法(leave-one-out)

该方法是k-折交叉验证的特殊情况,即k为初始数据元组个数,每个元组即为一折。每次训练时,将一个样本作为测试对象,其余所有样本作为训练集导出模型。

3.3.分层交叉验证(stratified corss-validation)

该方法将划分的折进行分层,使得每个折中样本的类分布和在原始数据中大致相同。避免了类分布不平衡的情况。

4.自助法

自助法(bootstrap) 从给定训练元组中 有放回的均匀抽样,即每当选中一个元组时,这个元组同样可能被再次选中,并被再次添加回训练集中。在有回放的抽样中,允许机器多次选择同一个样本。

自助法有多种,其中最常用的是 .632自助法。假定数据集包含d个元组,该数据集有放回的抽样d次,产生d个样本的自主样本集或训练集。原始数据集中的元组可能在样本集中出现多次,而没有出现在训练集中的元组归结为检验集。假设进行多次重复抽样,其结果为,平均情况下,63.2%的原始数据集将出现在自主样本集中,而剩下36.8%将形成检验集。

“63.2%来源”

对于d个元组的原始数据,每个元组被抽中的概率为1/d,则未被抽中的概率为(1-1/d)。可得在A事件d次抽样均未被选中的元组的概率为:

P ( A ) = ( 1 − 1 / d ) d (10) P(A)=(1-1/d)^d\tag{10} P(A)=(11/d)d(10)

当数据集的规模不断增大,即 d → ∞ d\to \infin d

lim ⁡ d → ∞ P ( A ) = ( 1 − 1 / d ) d = ( 1 + ( − 1 / d ) ) ( − d ) ∗ ( − 1 ) = e − 1 ≈ 0.368 (11) \lim_{d\to \infin}P(A)=(1-1/d)^d=(1+(-1/d))^{(-d)*(-1)}=e^{-1}\approx 0.368\tag{11} dlimP(A)=(11/d)d=(1+(1/d))(d)(1)=e10.368(11)

因此有36.8%的数据元组未被选中,作为检验集。则剩下63.2%则作为自主样本集。

重复k次抽样,每次迭代时,使用当前检验集估计当前自主样本集导出的模型的准确率。则模型的总体准确率为:

A c c ( M ) = ∑ i = 1 k ( 0.632 ∗ A c c ( M i ) t e s t _ s e t + 0.368 ∗ A c c ( M i ) t r a i n _ s e t ) (12) Acc(M)=\sum_{i=1}^k(0.632*Acc(M_i)_{test\_set}+0.368*Acc(M_i)_{train\_set}\tag{12}) Acc(M)=i=1k(0.632Acc(Mi)test_set+0.368Acc(Mi)train_set)(12)

其中 A c c ( M i ) t e s t _ s e t Acc(M_i)_{test\_set} Acc(Mi)test_set是自主样本i得到的模型用于检验集的准确率,而 A c c ( M i ) t r a i n _ s e t Acc(M_i)_{train\_set} Acc(Mi)train_set是自主样本得到的模型用于原始数据集的准确率。对于小规模数据集,自助法效果很好。

est_set}+0.368*Acc(M_i)_{train_set}\tag{12})
$$

其中 A c c ( M i ) t e s t _ s e t Acc(M_i)_{test\_set} Acc(Mi)test_set是自主样本i得到的模型用于检验集的准确率,而 A c c ( M i ) t r a i n _ s e t Acc(M_i)_{train\_set} Acc(Mi)train_set是自主样本得到的模型用于原始数据集的准确率。对于小规模数据集,自助法效果很好。

5.使用统计显著性检验选择模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值