模型评价指标-ROC曲线AUC值

模型评估指标详解
本文深入探讨了机器学习中模型评估的正确率、准确率、召回率等指标的局限性及适用场景,通过实例分析,强调了在正负样本不平衡情况下正确率的误导性,并引出了ROC曲线和AUC值的概念,为模型选择提供了量化依据。

     在做机器学习的时候,当模型训练好之后,我们该如何去评价这个模型的好坏呢?我们首先想到的会是使用正确率来评价模型的好坏。首先来看下正确率公式:

                                                          正确率 = 预测正确的样本数 / 总的样本数

那么如果用正确率来衡量一个模型的好坏的话,它会存在什么问题呢?

假如我们有100个样本,其中正样本数有95个,负样本数5个,模型的预测中,在95个正样本里面有94个预测成了正样本,1个预测成了负样本,在5个负样本中,有4个预测成了正样本,1个预测成了负样本,即:

                              实际值                95 正样本数                                    5负样本数

                              预测值          94正                    1负                         4正             1负 

像这种情况,正确率为 (94 + 1)/ 100  = 0.95 ,如果只看0.95这个值的话,该模型算是个好模型了。但是,我们观察下负样本,5个负样本中只有1个本预测对了,显然模型不合理。所以,对于正负例样本比例不平衡的数据集来说,使用正确率来衡量模型好坏显然是不合理的。

准确率和召回率

    接下来引入准确率和召回率两概念。首先这两指标是针对一边的样本的(正样本或负样本),通常叫正样本(负样本)的准确率,正样本(负样本)的召回率。首先引入下图:

                               

如上图所示 : 正样本的召回率 = TP/(TP+FN)           正样本的准确率 = TP/(TP+FP)

其中:真正例(TP)、假正例(FP)、真反例(TN),以及假反例(FN)

        TP :预测是正样本  实际也是正样本               FP:预测是正样本  实际是负样本

        FN:预测是负样本  实际是正样本                    TN:预测是负样本  实际是负样本

还是按上面那个例子计算正样本召回率和准确率:

      正样本召回率 = 94 / (94 + 1)                 正样本准确率 = 94/(94 + 4)

     负样本召回率 = 1 / (4 + 1)                 负样本准确率 = 1/(4 + 1)

不同项目,对于这两指标侧重点不一样,对于一些推荐系统来讲,它们就希望准确率高点,希望达到推荐过去的东西都是用户所喜欢的,进而提高用户体验,这个时候可以提高阈值,但是对于一些文章过滤需求,需要把黄赌毒的文章都过滤掉,这个时候就希望召回率高点,目的是要把所有的黄赌毒文章过滤掉,这个时候可以降低阈值。通过上述分析,这两指标大小是和阈值相关的,阈值大点,准确率就高,阈值小点,召回率就高。显然这也无法定量去衡量模型的好坏,接下来我们引出ROC曲线。

ROC曲线和AUC值

先看下曲线长什么样子

                            

       解释如下:

到这里模型评价指标就结束了。

模型的**AUC-ROC曲线**是评估二分类模型性能的重要工具,尤其适用于不平衡数据集。它通过可视化模型在不同分类阈下的表现,帮助我们理解模型的**判别能力**(区分正负样本的能力)。 --- ### 一、ROC曲线(Receiver Operating Characteristic Curve) ROC曲线是以**假阳性率(FPR)为横轴**,**真阳性率(TPR)为纵轴**绘制的一条曲线,展示了在不同阈模型的分类性能: - **TPR(True Positive Rate)** = 真正例 / (真正例 + 假反例) = 召回率 - **FPR(False Positive Rate)** = 假正例 / (假正例 + 真反例) = 1 - 特异性 --- ### 二、AUC(Area Under the Curve) AUC是指ROC曲线下的面积,取范围通常在0.5到1之间: - **AUC = 1**:模型完美区分正负样本。 - **AUC = 0.5**:模型没有判别能力,相当于随机猜测。 - **0.5 < AUC < 1**:模型有一定判别能力,数越大越好。 --- ### 三、如何解读AUC? | AUC范围 | 模型判别能力解释 | |-----------|------------------| | 0.9 ~ 1.0 | 优秀(Excellent) | | 0.8 ~ 0.9 | 很好(Good) | | 0.7 ~ 0.8 | 一般(Fair) | | 0.6 ~ 0.7 | 差(Poor) | | 0.5 ~ 0.6 | 无判别能力(Fail)| --- ### 四、为什么AUC-ROC在不平衡数据中更有用? 在正负样本比例悬殊的情况下,准确率(Accuracy)容易失真(例如99%负样本,模型全预测为负也能获得高准确率),而AUC-ROC关注的是**排序能力**,更关注模型是否能将正样本排在负样本前面。 --- ### 示例代码(Python): ```python from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 假设 y_true 是真实标签,y_scores 是模型输出的概率 fpr, tpr, thresholds = roc_curve(y_true, y_scores) roc_auc = auc(fpr, tpr) plt.plot(fpr, tpr, label='ROC curve (AUC = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], 'k--') # 绘制对角线 plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver Operating Characteristic') plt.legend(loc="lower right") plt.show() ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值