其他分享
首页 > 其他分享> > 机器学习的分类模型评价方法

机器学习的分类模型评价方法

作者:互联网


layout: post
title: 机器学习的分类模型评价方法
description: 模型评价
tag: 机器学习

分类模型评价方法

评估分类器(分类模型)相对于评估回归器通常要复杂,本篇以MNIST数据集的手写数字识别分类为例,记录常用的分类器评估方法。

from sklearn.metrics import confusion_matrix
def plot_confusion_matrix(clf,name):
    y_pre=clf.predict(X_test)
    confusion=confusion_matrix(y_test,y_pre)
    plt.figure()
    plt.imshow(confusion, cmap=plt.cm.Blues)
    classes = list(set(y_test))
    classes.sort()
    indices = range(len(confusion))
    iters = np.reshape([[[i,j] for j in indices] for i in indices],(confusion.size,2))
    for i, j in iters:
        plt.text(j, i, confusion[i, j])   #显示对应的数字
    plt.title("Confusion matrix of %s "%name,fontsize=12)
    plt.xticks(indices, classes)
    plt.yticks(indices, classes)
    # plt.ylim(len(confusion)-0.5,-0.5)
    plt.xlabel('prediction',fontsize=18)
    plt.ylabel('reality',fontsize=18)
    
plot_confusion_matrix(log_reg,'LogistRegression')`

在这里插入图片描述混淆矩阵沿着主对角线的分布集中度越高,代表模型的分类精度越高。

P = T P / ( T P + F P ) P = TP/(TP+FP) P=TP/(TP+FP)
精确率针对预测结果而言,又称查准率,即预测结果中预测正确的正样本所占总预测次数的比率,该值越大证明预测结果的准确率越高
R = T P / ( T P + F N ) R = TP/(TP+FN) R=TP/(TP+FN)

召回率针对原有样本而言,又成查全率,即预测模型预测正确的正样本占总的真实样本的比率,该值越大证明预测结果中预测到的正例数相对于样本中实际的正例数越全。所谓召回,可理解为真实的正例数在预测中再次预测出,即被召回。

在这里插入图片描述

高精确率和高召回率的取舍通常取决于我们需要解决的实际问题,例如我们要训练一个视频分类器,以避免将不好的内容推送给用户时,假如这里的5代表健康的视频,那么我们倾向于模型具有更高的准确性,以保证推送给用户的视频尽可能的健康,尽管这样可能会导致召回率的下降,即将一些原本健康的视频分到问题视频的类别中;在另一种情况下,考虑机场视频监控中可疑扒手识别模型中,假如这里的5代表偷窃行为,那么我们更倾向于模型能够具有更高的召回率,以尽可能地不放过任何一个扒手,尽管这样做可能会导致模型准确性下降,以至于错误警报增多。
准确率与召回率的权衡也可能通过绘制以准确率和召回率为坐标轴的图像曲线来看,通常称为PR曲线:
在这里插入图片描述
通过该图,结合自己的实际情况,可以在确保精确率或者召回率一方达到要求的同时,仅可能选择另一参数更高的阈值,来得到符合期望的模型效果。

此外,当模型的准确率和召回率相近时,可以使用准确率和召回率的调和平均数,通常称为F1得分,来评价模型分数
F 1 = 2 1  precision  + 1  recall  = 2 ×  precision  ×  recall   precision  +  recall  = T P T P + F N + F P 2 F_{1}=\frac{2}{\frac{1}{\text { precision }}+\frac{1}{\text { recall }}}=2 \times \frac{\text { precision } \times \text { recall }}{\text { precision }+\text { recall }}=\frac{T P}{T P+\frac{F N+F P}{2}} F1​= precision 1​+ recall 1​2​=2× precision + recall  precision × recall ​=TP+2FN+FP​TP​

得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。
它与精确率/召回率曲线非常相似,但 ROC 曲线不是绘制精确率与召回率的关系图,而是绘制真阳性率(召回的另一个名称)与假阳性率的关系图。所谓真阳性率即为召回率,而假阳性率(false positive rate),即真实为阴性的被误认为是阳性的样本占原有样本的比率,它等价于1-真阴性率,真阴性率即真实为阴性且预测为阴性所在预测样本中的比率,真阴性率可以称为以阴性为主的准确率。
T P R = T P / ( T P + F N ) TPR = TP/(TP+FN) TPR=TP/(TP+FN)
F P R = F P / ( F P + T N ) = 1 − T N R FPR = FP/(FP+TN) = 1-TNR FPR=FP/(FP+TN)=1−TNR
T N R = T N / ( T N + F P ) TNR = TN/(TN+FP) TNR=TN/(TN+FP)
在这里插入图片描述
FPR和TPR曲线同样具有类似准确率和召回率那样的权衡,上图虚线代表随机分类器的结果,一个好的分类器会尽可能的远离该虚线。
一种比较分类器好坏的方法是比较ROC曲线下方的面积(Area Under the Curve),面积接近为1的分类器是最为理想的。
ROC曲线和PR曲线是十分类似的,经验法则告诉我们,当样本中阳性例数目较少,或者我们更加关心假阳性(假阳性为小概率)时,选择PR曲线,反之选择ROC曲线。

标签:FP,机器,confusion,模型,TP,分类器,召回,评价
来源: https://blog.csdn.net/baiduwaimai/article/details/120613888