评分:计算各种性能指标
一个用于计算各种性能指标的函数。
from mlxtend.evaluate import scoring
概述
混淆矩阵
混淆矩阵(或错误矩阵)是总结二元分类任务分类器性能的一种方法。这个方阵由列和行组成,列出实例的绝对或相对数量,表示“实际类别”与“预测类别”的比例。
设为类别 1 的标签,为第二类别或在多类别设置中非类别 1 的所有类别的标签。
错误率和准确率
预测错误率 (ERR) 和准确率 (ACC) 都提供了关于有多少样本被错误分类的一般信息。错误率可以理解为所有错误预测的总和除以总预测数,而准确率则计算为正确预测的总和除以总预测总数。
真阳性率和假阳性率
真阳性率 (TPR) 和假阳性率 (FPR) 是在类别不平衡问题中特别有用的性能指标。例如,在垃圾邮件分类中,我们当然主要关注垃圾邮件的检测和过滤。然而,减少被错误分类为垃圾邮件的消息数量(即假阳性)也很重要:漏掉重要消息的情况被认为比邮箱里有几封垃圾邮件的情况“更糟”。与 FPR 相比,真阳性率提供了关于从所有阳性样本中正确识别出的阳性(或相关)样本比例的有用信息。
精确率、召回率和 F1 分数
精确率 (PRE) 和召回率 (REC) 是在信息技术中更常用的指标,与假阳性率和真阳性率相关。实际上,召回率是真阳性率的同义词,有时也称为灵敏度。F-分数可以理解为精确率和召回率的组合。
灵敏度和特异度
灵敏度 (SEN) 是召回率和真阳性率的同义词,而特异度 (SPC) 是真阴性率的同义词——灵敏度衡量阳性样本的召回率,补充地,特异度衡量阴性样本的召回率。
Matthews 相关系数
Matthews 相关系数 (MCC) 由 Brian W. Matthews [3] 于 1975 年首次提出,用于评估蛋白质二级结构预测的性能。MCC 可以理解为二元分类设置中线性相关系数(Pearson's R)的一个特例,在类别不平衡的设置中尤其有用。之前的指标取值范围在 0(最差)到 1(最好)之间,而 MCC 的范围限制在 1(地面实况与预测结果完美相关)和 -1(逆相关或负相关)之间——值为 0 表示随机预测。
平均每类别准确率
“总体”准确率定义为所有样本 n 中正确预测(真阳性 TP 和 真阴性 TN)的数量
在二元类别设置中
在多类别设置中,我们可以将准确率的计算泛化为所有正确预测(对角线上的)占总样本数 n 的比例。
考虑一个有 3 个类别(C0, C1, C2)的多类别问题
假设我们的模型做出了以下预测
我们计算准确率如下
现在,为了计算平均每类别准确率,我们分别为每个类别标签计算二元准确率;也就是说,如果类别 1 是阳性类别,则类别 0 和 2 都被视为阴性类别。
参考文献
- [1] S. Raschka. 二元分类器系统的一般性能指标概述。Computing Research Repository (CoRR), abs/1410.5330, 2014。
- [2] Cyril Goutte 和 Eric Gaussier. 精确率、召回率和 f 分数的概率解释及其对评估的影响。载于 Advances in Information Retrieval, 页码 345–359。Springer, 2005。
- [3] Brian W Matthews. T4 噬菌体溶菌酶预测结构与观察结构的比较。Biochimica et Biophysica Acta (BBA)- Protein Structure, 405(2):442–451, 1975。
示例 1 - 分类错误
from mlxtend.evaluate import scoring
y_targ = [1, 1, 1, 0, 0, 2, 0, 3]
y_pred = [1, 0, 1, 0, 0, 2, 1, 3]
res = scoring(y_target=y_targ, y_predicted=y_pred, metric='error')
print('Error: %s%%' % (res * 100))
Error: 25.0%
API
scoring(y_target, y_predicted, metric='error', positive_label=1, unique_labels='auto')
计算监督学习的评分指标。
参数
-
y_target
: 类似数组, 形状=[n_values]真实类别标签或目标值。
-
y_predicted
: 类似数组, 形状=[n_values]预测类别标签或目标值。
-
metric
: 字符串 (默认值: 'error')性能指标:'accuracy'(准确率):(TP + TN)/(FP + FN + TP + TN) = 1-ERR
'average per-class accuracy'(平均每类别准确率):平均每类别准确率
'average per-class error'(平均每类别错误率):平均每类别错误率
'error'(错误率):(FP + FN)/(FP + FN + TP + TN) = 1-ACC
'false_positive_rate'(假阳性率):FP/N = FP/(FP + TN)
'true_positive_rate'(真阳性率):TP/P = TP/(FN + TP)
'true_negative_rate'(真阴性率):TN/N = TN/(FP + TN)
'precision'(精确率):TP/(TP + FP)
'recall'(召回率):等于 'true_positive_rate'
'sensitivity'(灵敏度):等于 'true_positive_rate' 或 'recall'
'specificity'(特异度):等于 'true_negative_rate'
'f1'(F1 分数):2 * (PRE * REC)/(PRE + REC)
'matthews_corr_coef'(Matthews 相关系数):(TPTN - FPFN) / (sqrt{(TP + FP)( TP + FN )( TN + FP )( TN + FN )})
其中:[TP: 真阳性,
TN: 真阴性, FN = 假阴性]
-
positive_label
: 整数 (默认值: 1)二元分类指标中阳性类别的标签。
-
unique_labels
: 字符串或类似数组 (默认值: 'auto')如果为 'auto',则从 y_target 推断唯一的类别标签
返回值
score
: 浮点数
示例
有关使用示例,请参阅 https://mlxtend.cn/mlxtend/user_guide/evaluate/scoring/