机器学习常用评价指标、混淆矩阵、ROC曲线、AUC

2022-10-18 14:45:31

机器学习常用评价指标、混淆矩阵、ROC曲线、AUC

1.混淆矩阵

1.1 什么是混淆矩阵?

也叫误差矩阵,是表示精度评价的一种标准格式,可以用来评价监督算法性能。
用n行n列的矩阵形式来表示,可以直观的看出模型对各个类别的分类性能,也可以利用它计算各个类别准确率,召回率。

1.2 混淆矩阵里的内容是什么意思?

在这里插入图片描述
以二分类为例:
正例(Positives):希望识别出的类别。
负例(Negaives):其他类别。
TP:True Postive,真阳性,预测是正类,真值也是正类;
FP:False Positive, 假阳性,预测是负类,真值是正类;
TN:True Negative,真阴性,预测是正类,真值是负类;
FN: False Negative,假阴性,预测是负类,真值也是负类。

1.3 利用混淆矩阵计算各种评价指标

  • Accuracy:
    准确度,预测对的占所有数据百分比
    A c c u r a c y = ( T P + T N ) / ( T P + T N + F N + T N ) Accuracy=(TP+TN) / (TP+TN+FN+TN)Accuracy=(TP+TN)/(TP+TN+FN+TN)

  • Precision
    精确率,PPV(Positive predictive value),预测是正类并且预测对的占预测为正类的百分比,反映的是查准的能力,即预测的里面有多少是对的。
    P r e c i s i o n = T P / ( T P + F P ) Precision = TP / (TP + FP)Precision=TP/(TP+FP)

  • TPR、Recall
    真阳性率(TPR,True Positive Rate),敏感度(Sensitivity),【正类召回率】:预测是正类并且预测对了的占正类的百分比,反应的是查全的能力及某类有多少能被预测出来(查出的病人占所有病人百分比)。
    R e c a l l = T P R = T P T P + F N Recall = TPR=\frac{TP}{TP+FN}Recall=TPR=TP+FNTP

  • FPR
    假阳性率(FPR,False Positive Rate),预测为正类实际为负类的占所有负类百分比。
    F P R = F P / ( F P + T N ) FPR= FP / (FP + TN)FPR=FP/(FP+TN)

  • TNR
    真阴性率(TNR,True Negative Rate),特异度(specificity),预测出是负类实际是负类的占所有负类百分比(实际无病按该诊断标准被正确地判为无病的百分比)。
    T N R = T N / ( T N + F P ) TNR = TN/(TN+FP)TNR=TN/(TN+FP)

  • FNR
    假阴性率(FNR,False Negative Rate),预测是负类实际是正类的占负类白人比

  • F-measure(F-score)
    F值,精度和召回一般不可兼得,为了更全面更综合评价算法,是Precision和Recall的加权调和平均。
    【只能用来评价二分类算法】
    F s c o r e = ( 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 Fscore=(1+\alpha^2) * \frac{Precision*Recall}{({\alpha}^2 * Precision)+Recall}Fscore=(1+α2)(α2Precision)+RecallPrecisionRecall
    α = 1 \alpha=1α=1时P和R重要性相同;
    α < 1 \alpha<1α<1时P更重要;
    α > 1 \alpha>1α>1时R更重要。

  • F1值
    F1值, α = 1 \alpha=1α=1时的F-score,越高越好。
    2 F s c o r e = 1 P r e c i s i o n + 1 R e c a l l \frac{2}{Fscore}=\frac{1}{Precision}+\frac{1}{Recall}Fscore2=Precision1+Recall1

F 1 = 2 ∗ T P / ( 2 ∗ T P + F P + F N ) F_1 = 2*TP / (2 * TP + FP + FN)F1=2TP/(2TP+FP+FN)

敏感度:对正类识别能力,其实就是诊断疾病不漏诊的能力;
特异度:对负类识别能力,其实就是诊断疾病不误诊的能力;
不漏诊肯定会误诊的多,所以敏感度和特异度是有冲突的,所以为了综合评价并平衡两个指标找到最佳的诊断值,可以通过画ROC曲线,计算曲线下面积。

2.ROC曲线和AUC

2.1什么是ROC曲线?

ROC(Receiver Operating Characteristic Curve)曲线,中文名字叫“受试者工作特征曲线。
1)横坐标是FPR(假正率),纵坐标是TPR(真正率),ROC曲线是一系列threshold下的(FPR,TPR)数值点的连线。
2))threshold是分为正类的阈值,大于等于阈值是正类,小于是负类;
3)threshold的取值分别为测试数据集中各样本的预测概,顺序是从大到小,threshold最大时TP=FP=0对应原点;threshold最小时TN=FN=0,对应于右上角(1,1)(因为左下角都预测为负,右上角都预测为正);
4)越光滑一般越没有过拟合,泛化能力越好;
5)越靠近左上角的曲线分类准确性越高,假正和假负总数越少;
5)假正是预测错了的负类为误诊,真正是预测对了的正类,接近左上角的精度高,但是不同算法ROC曲线会相交,不好判断哪个好,所以要计算AUC。

2.2 什么是AUC?

AUC(Area Under roc Cure),ROC曲线与坐标轴围成的面积;
1)AUC是衡量二分类模型优劣的一种评价指标,表示预测的正例排在负例前面的概率;
2)x和y范围都是0-1,所以AUC取值0-1;
3)需要算法保证AUC取值0.5到1,等于0.5时,无应用价值(因为和随便猜的是一样的);
4)AUC越大算法性能越好,正确率越高。
5)经常用在点击率估计(CTR)的离线评估,因为CTR把分类器输出的概率当做点击率的预估值,和常用分类算法相似,越高排序能力越强。

6)AUC可以理解为:有一个正样本和一个负样本,预测出两个样本的分数正样本比负样本高(具体是多少,高多少不管)的概率就是AUC的值;所以AUC的值高算法更合理;

2.3 绘制ROC曲线、计算AUC的值

code:

import numpyas npfrom sklearnimport metricsimport matplotlib.pyplotas plt

y= np.array([1,1,2,2,1,2])
scores= np.array([0.1,0.4,0.35,0.75,0.5,0.8])# y是label,scores是预测的分数,pos_label是设置为正例的标签
fpr, tpr, thresholds= metrics.roc_curve(y, scores, pos_label=2)
auc= metrics.auc(fpr, tpr)print('fpr: {},\ntpr: {},\nthresholds: {},\nauc: {}'.format(fpr, tpr, thresholds, auc))

plt.figure()
lw=2
plt.plot(fpr, tpr, color='darkorange',
         lw=lw, label='ROC curve (area = %0.2f)'% auc)
plt.plot([0,1],[0,1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0,1.0])
plt.ylim([0.0,1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

参考:
https://baike.baidu.com/item/%E6%B7%B7%E6%B7%86%E7%9F%A9%E9%98%B5/10087822?fr=aladdin
https://baike.baidu.com/item/%E6%8E%A5%E5%8F%97%E8%80%85%E6%93%8D%E4%BD%9C%E7%89%B9%E5%BE%81%E6%9B%B2%E7%BA%BF/2075302?fromtitle=ROC%E6%9B%B2%E7%BA%BF&fromid=775606&fr=aladdin
https://baike.baidu.com/item/AUC/19282953?fr=aladdin
https://www.jianshu.com/p/7919ef304b19
https://blog.csdn.net/Joseph__Lagrange/article/details/90813885

  • 作者:星落秋风五丈原
  • 原文链接:https://blog.csdn.net/qq_33278461/article/details/106037179
    更新时间:2022-10-18 14:45:31