【机器学习】一文读懂准确率、精确率、召回率、F1分数、ROC |
您所在的位置:网站首页 › 精密度和准确性的关系 › 【机器学习】一文读懂准确率、精确率、召回率、F1分数、ROC |
在机器学习中衡量一个模型是否准确我们有很多指标: 准确率 - accuracy 精确率 - precision 召回率 - recall F1分数-F1 score ROC曲线下面积 - ROC-AUC (area under curve) 那么,这些指标到底都是什么呢?各自有什么优缺点呢?笔者在了解这些指标的时候是在网上各大网站(CSDN、博客园、知乎)上找文章学习的。但是这些文章要么是过于数学化,要么是有地方不那么好读(前后变量不一致导致阅读苦难)、要么是过于“去数学化”。我自己整理了一份学习笔记,一定能够让大家一次性读懂这几个指标。 下面进入正文: 大家要明白,以上指标统统离不开一个工具:混淆矩阵-confusion matrix 混淆矩阵是个什么东西? 对于二分类问题,每一条数据要么预测正确,表示为1;要么预测错误,表示为0(注意这里是预测结果正确与否,而不是预测结果是0还是1),而事物本身也是被分为0(负样本)和1(正样本)两类。 用矩阵来表示就是这个样子 FP:False&Positive(positive表示正样本,false表示预测错误,即预测为positive是错误的) FN:False&Negative(negative表示负样本,false表示预测错误,即预测为negative是错误的) TN:True&Negative(negative表示负样本,true表示预测正确,即预测为negative是正确的) 下面正式讲解五种指标: 一、准确率很直观,就是预测正确的个数/总样本数,如果用混淆矩阵里的数据表示,就是(TP+TN)/(TP+FP+FN+TN)。讲道理这其实是正常人最能理解也最常用的评价指标了。但其实这个指标有个缺陷。机器学习的模型经常会出现在一个数据集上表现良好,但是在另一个数据集上却一塌糊涂的情况。假设一个数据集有100条数据,99个1,1个0,而你的模型所有的输出都是1,那么你的模型在该数据集上的准确率是99%,惊人的高。但实际上你的模型没有意义,因为只能输出1。这就反映出了准确率的弊端。 又名查准率,类似于准确率,但有别于准确率。精确率指的是预测为1的样本中实际为1的频率,也就是TP/(TP+FP)。精确率代表的是正样本结果中的预测准确度,准确率是既考虑了正样本也考虑了负样本。照这个逻辑,上面的例子的精确率是0.99。 召回率又叫查全率,其公式为TP/(TP+FN)。这个比率反映了正样本被正确预测的比例,在传染病学领域有极高的意义,我们规定“有病”为正样本,即为1。TP表示被在正确诊断为有病的个数,FN表示本来有病却被诊断为没病的个数。召回率越高,表示我们准确确诊的能力就越强。召回率低说明有大量有病案例被诊断为没病,这就非常可怕。 F1分数的计算公式为: F1score=(2*precision*recall)/(precision+recall)如果将F1分数在不同阈值(阈值的概念下面有介绍)下绘制出来,就得到了P-R曲线(精确率-召回率曲线)。何为阈值?我们都知道,对于二分类问题,模型的输出仅仅是概率,当1的概率为0.8,0的概率为0.2时,我们认为模型预测的结果为1。一般情况下,我们取大于0.5的那个概率作为模型的预测结果,这个0.5就是阈值。但是实际中,阈值为0.5的时候可能不能保证模型的精确率和召回率,因此,我们常常需要尝试不用的阈值,该曲线就是在不同阈值下绘制的P-R关系图。 F1分数其实是精确率和召回率的调和平均(倒数之和的平均值的倒数) 五、ROC_AUCROC(receiver operating characteristic curve:接受者操作特征曲线)是一条曲线。该曲线涉及两个指标:真正率(TPR)和假正率(FPR) 真正率就是召回率,假正率(1-特异度)=FP/(FP+TN)。 我们以FPR为x轴,TPR为y轴画图,就得到了ROC曲线。 与F1分数曲线一样的是,ROC也是通过遍历阈值的方式绘制的。 针对一个模型,我们希望的是假正率(X值,自变量)一定的时候真正率(Y值,因变量)越高越好,也就是曲线“越上凸”就越好。 由于,ROC曲线的xy值都是正负样本的准确率(错误率),因此,**无论我们给的样例中正负样本的个数孰多孰少,都不会影响ROC的形状,我们可以称ROC曲线“无视样本的不平衡”,**这是ROC曲线比前几种指标更加准确合理的根本原因。 上面提到,ROC曲线越上凸模型就越好,那有没有什么度量指标能够量化这种好呢?答案就是用曲线下方的面积,也就是曲线在0到1上的积分。 比较有意思的是,如果我们连接对角线,它的面积正好是 0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是 50%,表示随机效果。 ROC 曲线越陡越好,所以理想值就是 1,一个正方形,而最差的随机判断都有 0.5,所以一般 AUC 的值是介于 0.5 到 1 之间的。 本人还是学生,学识尚浅,如有不正确的地方欢迎大家在评论区指正~ (图片来源见水印,侵删) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |