散记知识点
——“评估分类器,提高分类器”
5. 模型评估与选择
5.1 评估分类器性能
(1) 评估分类器性能的度量
评估分类器性能的度量主要有:准确率(识别率)、敏感度(召回率(recall))、特效性、精度(precision)、 F1 F 1 和 Fβ F β 。
假定 P P 为正元组数、
为负元组数,则下图为各种度量的计算公式:
其中:
- TP T P (True Positive) 真正例:是指被分类器正确分类的正元组个数。
- TN T N (True Negative) 真负例:是指被分类器正确分类的负元组个数。
- FP F P (False Postive) 假正例:是指被错误地标记为正元组的负元组个数。
- FN F N (False Negative) 假负例:是指被错误地标记为负元组的正元组个数。
一个二分类问题的混淆矩阵:
其中, P′ P ′ 表示被分类器标记为正的元组数 (TP+FP) ( T P + F P ) ; N′ N ′ 表示被分类器标记为负的元组数$(TN+FN)。
下面分别考虑每个度量指标的意义:
① 准确率
分类器在给定测试集上的准确率(accuracy)是被该分类器正确分类的元组所占的百分比:
准确率又称识别率,下表显示了混淆矩阵每类及总体识别率:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/22671f200c88e571601bcce080a7859d.png)
观察混淆矩阵,可以看出相应的分类器是否混淆了两类。当 类分布相对平衡时,准确率是评价分类器最有效的指标。
② 灵敏度和特效性
考虑类不平衡问题,即感兴趣的类(正例)很稀少的情况,准确率会不太可靠。例如,医疗数据中,类标签为癌症”cancer”,可以分为两类:得癌症”yes”和不得癌症”no”。假设正常训练一个分类器,准确率为97%,看似很高但实际上意义却不大,因为准确率很大部分由负例”no”决定,而我们感兴趣的正例”yes”却可能没正确地被识别出来,分类器得不到我们想要的结果。
针对这个问题,使用灵敏度和特效性:
灵敏度(sensitivity)为真正例识别率即正确识别正元组的百分比:
特效性(specifictiy)为真负例率即正确识别的负元组百分比:
考虑一个类分布不平衡问题cancer:{‘yes’, ‘no’},混淆矩阵为:
观察混淆矩阵,负例‘no’占比很大,假负例即有癌症‘yes’被判为没有癌症’no’占比很大。进一步计算该分类器的灵敏度为 90/300=30.00% 90 / 300 = 30.00 % ,特效性为 9650/9700=98.56% 9650 / 9700 = 98.56 % 。虽然总体识别率很高,但正例‘yes’的识别率灵敏度很低仅为30%,可以看出该分类器并不能准确地识别癌症。
③ 精度和召回率
精度(precision)可以看作精确性的度量即标记为正类的元组实际为正类所占的百分比:
召回率(recall)是 完全性度量即正例元组标记为正的百分比(亦称灵敏度):
对②中混淆矩阵计算:分类器的精度为 90/230=39.13% 90 / 230 = 39.13 % ,召回率为 90/300=30.00% 90 / 300 = 30.00 % 。
精度和召回率通常一起使用,用固定的召回率比较精度,或用固定的精度比较召回率。例如,可在75%的召回率水平比较精度。
④ Fβ F β 度量
Fβ F β 度量将精度和召回率组合到一起:
其中, β β 为非负实数,当 β=1 β = 1 时,称为 F F 度量是精度和召回率的调和平均值。 是精度和召回率加权度量,赋予召回率的权重是精度的 β β 倍。通常使用 F2、F0.5 F 2 、 F 0.5
总结:当数据类比较均匀地分布时,准确率效果最好。而其他度量,如灵敏度(召回率(recall))、特效性、精度(precision)、 F1 F 1 和 Fβ F β 更适合类不平衡问题。
(2) 其他方面评价分类器性能
除了基于度量评价分类器性能之外,还可以根据其他方面比较分类器:速度、鲁棒性、可伸缩性、可解释性等
5.2 划分数据集与选择分类器模型
(1) 保持法和随机二次抽样
- 保持法(holdout):随机划分数据集为两个集合:训练集和测试集,通常大小为2:1,使用训练集导出模型,使用测试集评估模型。
- 随机二次抽样(random subsampling):将保持法重复 k k 次,总准确率估计取每次迭代准确率的平均值。
(2) 交叉验证
k-折交叉验证(k-fold cross-validation):
- 初始将数据集随机地划分为大小大致相等的 个互不相交的子集(”折”): D1,D2,...,Dk D 1 , D 2 , . . . , D k
- 训练和测试 k k 次,依次从 子集中选择1个作为测试集,其余作为训练集。例,第1次选择 D1 D 1 作为测试集 D2∼Dk D 2 ∼ D k 为训练集。
- 准确率估计是 k k 次迭代正确分类的元组总数除以初始数据元组总数。
留一(leave-one-out)是 -折交叉验证的特殊情况,每次只给测试集“留出”一个样本。
一般采取10-折交叉验证估计准确率。
(3) 自助法
- 自助法(bootstrap):从给定的训练集中有放回的均匀抽样。
.632自助法:
- 假设数据集包含 d d 个元组,有放回地抽取 次,产生 d d 个样本的自助样本集(训练集)。
- 原始数据元组中,某些元组可能多次出现,而从来没有出现的元组最终构成测试集。
- 结果是,平均情况下会有:63.2%的原数据元组将会出现在训练集中,而其余的36.8%的元组将形成测试集。
之所以会是0.632,是因为每个元组被抽中的概率为 ,因此到最后都未被选中的概率为 (1−1/d)d ( 1 − 1 / d ) d 。当 d d 很大时,求极限结果近似为 。因此,36.8%未被选中的元组将形成测试集,其余63.2%的元组形成训练集。
重复迭代过程 k k 次,每次得到测试集和训练集的准确率分别为
,则模型的总体准确率为:
(4) 使用统计显著性检验选择模型
假设在数据集上产生2个分类模型 M1 M 1 和 M2 M 2 ,经过10折交叉验证分别得到平均错误率。为了确定两个模型的平均错误率是否存在“真正的”差别,则需要使用统计显著性检验。
- 对于给定的模型,在交叉验证中计算每个错误率都可以看作来自一种概率分布的不同的独立样本。一般地,它们服从具有 k−1(k=10) k − 1 ( k = 10 ) 自由度的 t t 分布
- 做假设检验,假设这两个模型相同即平均错误率之差为0。如果我们能够拒绝该假设,则可以断言两个模型之间的差时统计显著的。在此情况下,可以选择具有较低错误率的模型。
- 对于10折交叉验证,假设第 轮, M1和M2 M 1 和 M 2 的错误率分别为 err(M1)i e r r ( M 1 ) i 和 err(M2)i e r r ( M 2 ) i 。二者的平均错误率分别为: err¯¯¯¯¯¯¯(M1) e r r ¯ ( M 1 ) 和 err¯¯¯¯¯¯¯(M2) e r r ¯ ( M 2 ) ,两个模型差的方差记为: var