机器学习常见评价指标の分类算法的评价标准

分类算法评价标准

评价指标

评价模型预测能力最广泛使用的是 二维混淆矩阵(Confusion matrix),具体如下图所示:
在这里插入图片描述
在混淆矩阵中,包含以下四种数据:
a、 (True Positive, TP):被模型 正确 预测为 正样本
b、 (False Positive , FP):被模型 错误 预测为 负样本
c、 (False Negative , FN):被模型 错误 预测为 正样本
d、 (True Negative, TN):被模型 正确 预测为 负样本

评价指标
1、 正确率(accuracy) :表示被模型 正确 预测的样本数占样本总数的比例,是我们最常见的评价指标,准确率是灵敏性和特效性度量的函数。计算公式为: A c c u r a c y = ( T P + T N ) / ( P + N ) Accuracy = (TP+TN)/(P+N) Accuracy=TP+TN/(P+N)

2、错误率(ErrorRate),也叫误分类率 :错误率则与正确率相反,表示被模型 错误 预测的样本数占样本总数的比例,计算公式为: E r r o r R a t e = ( F P + F N ) / ( P + N ) = 1 − A c c u r a c y Error Rate=(FP+FN)/(P+N)=1-Accuracy ErrorRate=(FP+FN)/(P+N)=1Accuracy

3、召回率(Recall),也叫查全率 :表示被模型 正确 预测为 的样本数占 实际 为正例样本总数的比例,计算公式为: R e c a l l = T P / ( T P + F N ) = T P / P = S e n s i t i v i t y Recall=TP/(TP+FN)=TP/P=Sensitivity Recall=TP/(TP+FN)=TP/P=Sensitivity

4、精确率(Precision),也叫查准率,表示被模型 正确 预测为 的样本数占 预测 为正例样本总数的比例,计算公式为: P r e c i s i o n = T P / ( T P + F P ) = T P / P ' Precision=TP/(TP+FP)=TP/P' Precision=TP/(TP+FP)=TP/P

5、灵敏性(sensitivity)或真正例率:表示与 召回率(Recall) 相等,计算公式为: s e n s i t i v i t y = T P / P sensitivity=TP/P sensitivity=TP/P

6、特效性(specificity)或真负例率:表示被模型 正确 预测为 的样本数占 实际 为负例样本总数的比例,计算公式为: S p e c i f i c i t y = T N / ( F P + T N ) = T N / N Specificity=TN/(FP+TN)=TN/N Specificity=TN/(FP+TN)=TN/N

备注:
针对灵敏性特效性而言——对于平衡样本,单指标可衡量模型的准确性,对于非平衡样本,必须两个指标同时衡量才具有可信力。

7、F1-score,也叫综合分类率:用来衡量二分类模型精确度的指标,是基于召回率(Recall)与精确率(Precision)的调和平均,即将召回率和精确率综合起来评价,计算公式为:
F 1 − s c o r e = 2 × R e c a l l × P r e c i s i o n R e c a l l + P r e c i s i o n w h e r e P r e c i s i o n = T P T P + F P ; R e c a l l = T P T P + F N = A c c + \begin{aligned} &F1-score=\frac{2×Recall×Precision}{Recall+Precision}\\ &where \quad Precision=\frac{TP}{TP+FP};\quad Recall=\frac{TP}{TP+FN}=Acc^+ \end{aligned} F1score=Recall+Precision2×Recall×PrecisionwherePrecision=TP+FPTP;Recall=TP+FNTP=Acc+

宏平均(Macro-averaging)和微平均(Micro-averaging)
为了综合多个类别的分类情况,评测系统整体性能,经常采用的还有 微平均F1(micro-averaging)宏平均F1(macro-averaging ) 两种指标,计算公式见链接
宏平均F1与微平均F1是以两种不同的平均方式求的全局的F1指标。其中,
(1)宏平均F1的计算方法:先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。
(2)微平均F1的计算方法:先累加计算各个类别的a、b、c、d的值,再由这些值求出F1值。
由两种平均F1的计算方式不难看出,宏平均F1平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均F1平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大

8、 F β F_β Fβ加权调和平均 F β F_β Fβ F 1 F1 F1度量的一般形式 ,能让我们表达出对查准率、查全率的不同偏好,计算公式如下:
F β = ( 1 + β 2 ) ∗ R e c a l l ∗ 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 ) F_β=\frac{(1+β^2)*Recall*Precision}{Recall+(β^2*Precision)} Fβ=Recall+(β2Precision)(1+β2)RecallPrecision
其中, β > 0 β>0 β>0 度量了查全率查准率的相对重要性。 β = 1 β=1 β=1时,P、R权重相等,此时退化为标准的 F 1 F1 F1 β > 1 β>1 β>1查全率有更大影响(即:R的权重>P的权重
); β < 1 β<1 β<1查准率有更大影响(即:R的权重<P的权重)。

9、 G − m e a n G-mean Gmean:计算公式如下:
G − m e a n = ( A c c + × A c c − ) 1 / 2 w h e r e A c c + = T P T P + F N ; A c c − = T N T N + F P \begin{aligned} &G-mean=(Acc^+×Acc^-)^{1/2}\\&where Acc^+=\cfrac{TP}{TP+FN};\quad Acc^-=\cfrac{TN}{TN+FP} \end{aligned} Gmean=(Acc+×Acc)1/2whereAcc+=TP+FNTP;Acc=TN+FPTN

评价曲线

9、ROC曲线(ROC Curve):全称为“Receiver Operating Characteristic(受试者工作特征)”。ROC曲线是评判一个模型好坏的标准

适用前提:两个分类模型是 均等代价 。广泛用于度量分类中样本集存在 非均衡性 的情况。

备注:
TPR(True Positive Rate):表示在所有实际为正的样本中,被 正确地判断的比率,即: T P R = T P / ( T P + F N ) = T P / P TPR=TP/(TP+FN)=TP/P TPR=TP/(TP+FN)=TP/P
FPR( False Positive Rate):表示在所有实际为负的样本中,被 错误地判断的比率,即: F P R = F P / ( F P + T N ) = F P / F FPR=FP/(FP+TN)=FP/F FPR=FP/(FP+TN)=FP/F

ROC曲线显示了给定模型的真正例率(TPR)和假正例率(FPR)之间的权衡,ROC曲线的横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR),FPR越大表明预测正类中实际负类越多,TPR越大,预测正类中实际正类越多。ROC曲线如下图所示:
在这里插入图片描述

ROC曲线的理解:
ROC上几个关键点的解释:
1、(TPR=0,FPR=0):把每个实例都预测为负类的模型
2、(TPR=1,FPR=1):把每个实例都预测为正类的模型
3、(TPR=1,FPR=0):理想模型,全部预测正确
4、(TPR=0,FPR=1):最差模型,全部预测错误
\quad
连接点(TPR=0,FPR=0)和(TPR=1,FPR=1)的主对角线 形成的ROC curve实际上代表一个 随机分类器,而一个好的分类模型应该尽可能靠近图形的左上角
\quad
既然已经有这么多评价标准,为什么还要使用 R O C ROC ROC A U C AUC AUC呢?
\quad
Answer: 因为ROC曲线有个很好的特性:当测试集中的正、负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正、负样本的分布也可能随着时间变化。

ROC曲线的绘制过程:
现实任务中通常利用有限个测试样例来绘制ROC图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生图(a)中光滑的ROC曲线,只能绘制如图(b)所示的近似ROC曲线。在这里插入图片描述
ROC曲线的分类原理
分类的过程就相当于在排序中以某个“截断点(cut point)”将样本分为两部分,前一部分判断正例,后一部分为反例。不同任务中根据需求划分截断点;重视查准率(精度),靠前位置截断;重视查全率(召回率),靠后位置截断。
ROC曲线的绘图过程
(1)给定 m + m^+ m+个正例和 m − m^- m个反例,根据学习器预测结果对样例进行排序(排序方法:“最可能”是正例的样本排在最前面,“最不可能”是正例的排在最后面);
(2)先把分类阈值设为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0,0)处标记一个点。
(3)再将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点坐标为(x,y),当前若为真正例,则对应标记点的坐标为 ( x , y + 1 m + ) (x,y+\frac{1}{m^+}) (x,y+m+1);当前若为假正例,则对应标记点的坐标为 ( x + 1 m − , y ) (x+\frac{1}{m^-},y) (x+m1,y),然后用线段连接相邻点即可。
ROC曲线的分析评判
(1)若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者性能优于前者;
(2)若两个学习器的ROC曲线曲线交叉,可以根据ROC曲线下面积大小进行比较,也即AUC(Area Under ROC Curve)值。
AUC的计算
AUC可通过对ROC曲线下各部分的面积求和而得。假定ROC曲线由坐标为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) {(x_1,y_1),(x_2,y_2),...,(x_m,y_m)} (x1,y1),(x2,y2),...,(xm,ym)的点,按序连接而形成 ( x 1 = 0 , x m = 1 ) (x_1=0,x_m=1) (x1=0,xm=1),则 AUC的估算公式 为:
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC=\frac{1}{2}\sum^{m-1}_{i=1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)
AUC给出的是分类器的平均性能值,它并不能代替对整条曲线的观察。一个完美的分类器的AUC为1.0,而随机猜测的AUC值为0.5

10、AUC(Area Under ROC Curve):AUC的值就是 处于ROC curve下方的那部分面积的大小
通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。
(1)如果模型是完美的,那么它的AUG = 1;
(2)如果模型是个简单的随机猜测模型,那么它的AUG = 0.5;
(3)如果一个模型好于另一个,则它的曲线下方面积相对较大。

11、K-S曲线:全称为 “Kolmogorov-Smirnov(正样本洛伦兹曲线与负样本洛伦兹曲线的差值曲线)”。K-S曲线度量学习器将正例和反例分开的能力,确定最好的“截断点”,常用于对模型的风险区分能力进行评估。

适用场景:
通常是在模型预测全体信用样本的信用评分后,将样本按违约率与非违约率分成两部分,然后用KS统计量来检验两组样本信用评分是否具有显著性差异。

K-S值的计算公式:
K S = m a x ( C u m . B a d i B a d t o t a l − C u m . G o o d i G o o d t o t a l ) KS=max\big( \frac{Cum.Bad_i}{Bad_{total}} \quad−\quad \frac{Cum.Good_i}{Good_{ total}}\big) KS=max(BadtotalCum.BadiGoodtotalCum.Goodi)
其 中 , C u m . B a d i 和 C u m . G o o d i 分 别 表 示 分 数 累 积 到 第 i 个 分 位 点 的 坏 样 本 个 数 和 好 样 本 个 数 其中,Cum.Bad_i和Cum.Good_i分别表示分数累积到第 i 个分位点的坏样本个数和好样本个数 Cum.BadiCum.Goodii

K-S曲线特征:
KS曲线是两条线,其横轴表示 阈值 (即:总样本累积比例),纵轴表示 TPR与FPR的值 (即:累积好,坏样本分别占总的好,坏样本的比例。),KS值的取值范围是[0,1] ,然后在两条曲线分隔最开的地方,对应的就是划分模型最好的阈值,也是该模型最好的AUC值。通常来讲, K S > 0.2 KS>0.2 KS>0.2 即表示模型有较好的预测准确性。

好坏样本累计差异越大,KS值越大,表示模型能够将正、负客户区分开的程度越大,说明模型的风险区分能力越强;KS值还可以用来选择最佳阈值。

KS曲线受到样本类别不平衡的影响较小,但要注意的是:即便正负样本完全分错了,KS值依然会很高。

K-S曲线的示例样图如下:
在这里插入图片描述
在这里插入图片描述
K-S曲线的作图步骤:

  1. 根据分类模型返回的预测结果(注意:是正例的概率值,非0/1变量)将样本从大到小进行排序,得到rank−threshold——这就是截断点依次选取的顺序;
  2. 按顺序选取截断点,并计算TPR、FPR 和它们之间的差值——通常把0-1之间等分N份,等分点为阈值(如:以10%*k(k=1,2,3,…,10)为横坐标),也可以将每个样本点作为阈值;
  3. 横轴为rank−threshold(即:样本的占比百分比(最大100%)),纵轴分别为TPR和FPR,可以得到KS曲线;
  4. TPR和FPR曲线分隔最开的位置就是最好的”截断点“,KS值即为Max(TPR-FPR)。

Logistic Regression模型中,K-S曲线的作图方法:
(1)把Logistic Regression模型对样本的输出概率(predict_proba)从大到小排序得rank−threshold;
(2)计算阈值取每个概率时对应的TPR和FPR值;
(3)以(rank−threshold,TPR)画正样本曲线,以(rank−threshold,FPR)画负样本曲线,就构成K-S曲线 ;
(4)K-S曲线上的KS值,为 m a x ( T P R − F P R ) max(TPR−FPR) max(TPRFPR),即两条曲线间的最大间隔距离。

12、代价敏感错误率和代价曲线适用前提: 两个分类模型是 非均等代价

非均等代价
现实任务中不同类型的错误所造成的后果很可能不同,为了权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。
以二分类为例,可根据领域知识设定 “代价矩阵”,如下表所示,其中 c o s t i j cost_{ij} costij表示将第 i {i} i 类样本预测为第 j {j} j 类样本的代价。一般来说, c o s t i i = 0 cost_{ii}=0 costii=0;若将第 0 0 0 类,判别为第 1 1 1 类所造成的损失更大,则 c o s t 01 > c o s t 10 cost_{01}>cost_{10} cost01>cost10;损失程度越大, c o s t 01 cost_{01} cost01 c o s t 10 cost_{10} cost10值的差别越大。
在这里插入图片描述

(1)在非均等代价下,不再最小化错误次数,而是最小化“总体代价”,则 "代价敏感”错误率 相应的为:
E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + ∣ ∣ ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∈ D − ∣ ∣ ( f ( x i ) ≠ y i ) × c o s t 10 ) E(f;D;cost)=\frac{1}{m}(\sum_{x_i∈D^+}||(f(x_i)≠y_i)×cost_{01}+\sum_{x_i∈D^-}||(f(x_i)≠y_i)×cost_{10}) E(f;D;cost)=m1(xiD+(f(xi)=yi)×cost01+xiD(f(xi)=yi)×cost10)
(2)在非均等代价下,ROC曲线 不能直接反映出学习器的期望总体代价,而 “代价曲线(cost curve)” 可以。

代价曲线图
代价曲线图的横轴是取值为[0,1]的正例概率代价 P ( + ) c o s t P(+)cost P(+)cost,计算公式为:
P ( + ) c o s t = p × c o s t 01 p × c o s t 01 + ( 1 − p ) × c o s t 10 P(+)cost=\frac{p×cost_{01}}{p×cost_{01}+(1-p)×cost_{10}} P(+)cost=p×cost01+(1p)×cost10p×cost01
其中 p p p是样例为正例的概率;
代价曲线图的纵轴是取值为 [ 0 , 1 ] [0,1] [0,1]的归一化代价 c o s t n o r m cost_{norm} costnorm,计算公式为:
c o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 − p ) × c o s t 10 p × c o s t 01 + ( 1 − p ) × c o s t 10 cost_{norm}=\frac{FNR×p×cost_{01}+FPR×(1-p)×cost_{10}}{p×cost_{01}+(1-p)×cost_{10}} costnorm=p×cost01+(1p)×cost10FNR×p×cost01+FPR×(1p)×cost10
其中, F P R FPR FPR假正例率 F N R = 1 − T P R FNR=1-TPR FNR=1TPR假反例率
代价曲线的绘制
(1)ROC曲线上每个点对应了代价曲线上的一条线段,设ROC曲线上点的坐标为 ( T P R , F P R ) (TPR,FPR) (TPR,FPR),则可相应计算出 F N R FNR FNR
(2)在代价平面上绘制一条从 ( 0 , F P R ) (0,FPR) (0,FPR) ( 1 , F N R ) (1,FNR) (1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价
(3)如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为所有条件下学习器的期望总体代价
在这里插入图片描述

13、P-R曲线:查准率-查全率曲线,以查准率为纵轴,查全率为横轴作图。如下图所示:
在这里插入图片描述
(1)若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则后者性能优于前者,上图中学习器A的性能优于学习器C;
(2)若两个学习器的P-R曲线发生交叉,则需要比较P-R曲线下面积的大小,但这个面积不容易估算,通常综合考虑查准率、查全率的性能度量 “平衡点(Break-Event Point,BEP) ”,BEP是 “查准率=查全率”时的取值。但BEP还是过于简化,此时更常用的是前面提到的 F1度量

总结:
(1)当数据集样本呈现均衡分布时,选择准确率(Accuracy)作为分类性能的评价指标,效果最好;
(1)当数据集样本呈现不均衡分布时,选择其他度量,如灵敏度(或召回率)、特效性、精度、 F 1 F1 F1 F β F_β Fβ更适合。

其他评价指标

除了上述11项基本的分类性能评价指标外,还可以根据其他方面比较分类器:
1、速度:涉及产生和使用分类器的计算开销。
2、鲁棒性:这是假定数据有噪声或有缺失值时分类器做出正确预测的能力。通常,鲁棒性用噪声和缺失值渐增的一系列合成数据集评估。
3、可伸缩性:这涉及给定大量数据,有效地构造分类器的能力。通常,可伸缩性用规模渐增的一系列数据集评估。
4、可解释性:这涉及分类器或预测器提供的理解和洞察水平。可解释性是主观的,很难评估。

分类算法评价标准的python实现

#调用sklearn库中的指标求解
from sklearn import metrics
from sklearn.metrics import precision_recall_curve
from sklearn.metrics import average_precision_score
from sklearn.metrics import accuracy_score
#给出分类结果
y_pred = [0,1,0,0]
y_true = [0,1,1,1]
print("accuracy_score:",accuracy_score(y_true,y_pred))
print("precision_score:", metrics.precision_score(y_true, y_pred))
print("recall_score:", metrics.recall_score(y_true, y_pred))
print("f1_score:", metrics.f1_score(y_true, y_pred))
print("f0.5_score:", metrics.fbeta_score(y_true, y_pred, beta=0.5))
print("f2_score:", metrics.fbeta_score(y_true, y_pred, beta=2.0))
>>>
accuracy_score: 0.5
precision_score: 1.0
recall_score: 0.3333333333333333
f1_score: 0.5
f0.5_score: 0.7142857142857143
f2_score: 0.3846153846153846
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yale曼陀罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值