二分类一般使用Acc,Sn,Sp,MCC等指标。
Sn, Sp,Acc
Sensitivity Sn = TP /(TP+FN)
Specificity Sp = TN / (TN+FP)
Accuracy Acc = (TP+TN)/(TP+FN+TN+FP)
MCC(Matthews correlation coefficient)
MCC是应用在机器学习中,用以测量二分类的分类性能的指标,该指标考虑了真阳性,真阴性,假阳性和假阴性,通常认为该指标是一个比较均衡的指标,即使是在两类别的样本含量差别很大时,也可以应用它。
MCC本质上是一个描述实际分类与预测分类之间的相关系数,它的取值范围为[-1,1],取值为1时表示对受试对象的完美预测,取值为0时表示预测的结果还不如随机预测的结果,-1是指预测分类和实际分类完全不一致。
三分类简单预测可使用precision,recall,F1.
在三分类预测中,或者严谨的论文中,三分类的评价指标一般有多个,例如,micro_f1,macro_f1,等。【其他的暂时忘记了,有一篇详细介绍多分类指标的论文,找到再标注上】
查准率P ,查全率R
查准率亦称为“准确率”,查全率亦称为“召回率”
对于多分类的P,R计算,以三类A,B,C为例。
将A看作1类,BC看作0类,计算Pa,Ra。
将B看作1类,AC看作0类,计算Pb,Rb。
将C看作1类,AB看作0类,计算Pc,Rc。
P =(Pa + Pb + Pc)/3
R = (Ra + Rb + Rc)/3
更多类别时,以此类推。
sklearn.metrics.precision_score
sklearn.metrics.recall_score
sklearn.metrics.confusion_matrix(label, predict)
这三个sklearn函数,在计算多分类时,不可以直接使用,会出错!!!
一般三分类的可以通过混淆矩阵计算,但随着类别数增大,使用混淆矩阵会很麻烦,暂时还没找到可以使用的库函数。
metrics.multilabel_confusion_matrix
这个函数可以分别计算每个类别的二分类矩阵,即A=1,BC=0的混淆矩阵。
P-R曲线
F1:micro_f1,macro_f1
micro-F1: 计算方法:先计算所有类别的总的Precision和Recall,然后计算出来的F1值即为micro-F1; 使用场景:在计算公式中考虑到了每个类别的数量,所以适用于数据分布不平衡的情况;但同时因为考虑到数据的数量,所以在数据极度不平衡的情况下,数量较多数量的类会较大的影响到F1的值;marco-F1: 计算方法:将所有类别的Precision和Recall求平均,然后计算F1值作为macro-F1; 使用场景:没有考虑到数据的数量,所以会平等的看待每一类(因为每一类的precision和recall都在0-1之间),会相对受高precision和高recall类的影响较大
F1相关内容引用此链接,讲解得很全面。F1详细介绍
其他评价指标
1.用于不平衡数据集分类的G-mean
G-mean = √(TP/(TP+FN)*TN/(TN+FP))
= √(Sn*Sp)
(更新日期:20210508,随时补充)