社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【机器学习】搞懂机器学习的常用评价指标!

机器学习初学者 • 5 年前 • 356 次点击  
作者:陈安东,湖南大学,Datawhale成员

我与评价指标的首次交锋是第一次实习面试时,面试官开头就问分类任务的评价指标。我当时TP,FP,FN,TN各种组合一顿上,回答得乱七八糟。后来经历多了,发现评价指标的确是面试的高频考点。

这次让我们几分钟时间搞懂评价指标,尤其是较难理解的ROC、AUC、精确率、召回率,为之后的数据科学之路打下基础。

分类任务

TP,TN,FN,FP

这是个很直觉的分类,T在开头说明这个是完全正确的。F开头就说明是完全错误的。

  • 真正例(True Positive, TP):被模型预测为正的正样本;
  • 假正例(False Positive, FP):被模型预测为正的负样本;
  • 假负例(False Negative, FN):被模型预测为负的正样本;
  • 真负例(True Negative, TN):被模型预测为负的负样本;

ACC精确度

在精确度中,ACC是最直觉的一种方式:

这里是将所有的预算结果与预测正确的做比率,得到的结果。但同时,这个评价指标很容易受到样本数量以及样本是否均衡带来的影响。

Precision精确率

对于精确率来说,关注点在于,对于所有预测为正的数据中(有预测正确的,也有预测错误的)。其中预测正确的比率:

FP是假预测,TP是真的预测

召回率Recall

这里还是关注于正样本。在样本中的所有真正的正样本里,有多少比率是预测对了,如同下图:

同样都是关注正样本,怎么区分精确度和召回度?

这的确是很容易混淆的两个概念,试想一个场景来区分:有一批零件,通过我们做出的机器学习算法,筛选出了一批需要的零件。其中,这批筛选出的零件中,我们的注意力只关注筛选结果为正的部分(只关注,其他结果压根不看),那这样筛选的零件就包含TP+FP。要看看这个被筛选的零件中有多少是需要的,那么这里的评价指标就是精确度Precision=(TP)/(TP+FP)

那什么是召回呢?召回的意思就是说,我们还是想要好的零件。虽然机器学习已经筛选出来了好的零件,但是理论上还是有一部分好的设备被遗漏了。我们需要默默的将遗漏的好设备捡回来(毕竟花了钱了,不能浪费),这个行为叫做召回,那么我们需要用到召回率Rcall=(TP)/(TP+FN)

P-R曲线

若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。

这里可以知道的是,P(精确率)与R(召回率)是此消彼长的,也就是说,一个高一个就会低。所有对于一个综合的评价指标来说,可以很直觉的想到,将两个参数做加权调和平均数。这样就成为了F1。

F1

F1就是精确率和召回率的加权调和平均数。

特别的,当β=1的时候就是F1:

ROC

优点:在测试样本中正负样本分布不一样的,ROC曲线可以保持不变。

ROC这个优势的来自于灵敏度和特异度这两个评价标准

灵敏度(TPR):其实本质上是正样本召回率

特异度(TNR):本质上是负样本的召回率

计算ROC除了上面两个指标外,还有假负率和假正率。但是这两个指标的计算很简单。假负率 = (1-灵敏度);假正率=(1-特异度)

其实可以这样理解,如果一个验证的数据是不均衡的,那么这个在分类的时候,准确率会考虑到不均衡的所有数据。但是如果是灵敏度和特异度,它只会考虑到正例或者负例,不考虑整体的数据分布。

那么回到ROC曲线,这个ROC曲线的两个指标分别为灵敏度和假正率,效果如图:

两个模型用这个指标做评价的时候,如果一个模型A可以包裹住另一个模型B,那么这个模型A就优于模型B。如果A和B两个模型有交叉,那么这个就看它们曲线下的面积大了,面积大的模型性能更优。

AUC

AUC说白了就是ROC曲线下面的面积大小。AUC越大,说明ROC曲线下面的面积越大,则这个模型的性能更好。一般来说,AUC的值介于0.5到1之间。因为0.5说明,二分类模型随机猜测,有一半的几率猜中。

回归任务

回归任务不同于分类任务。它是带入输入之后,返回一个value。其中回归任务的评价指标衡量的是,模型预测数值和标签提供数值之间的差距。其中对于评价指标的优劣其实并不好评价,这里只列出常用的指标。

MAE(Mean Absolute Error)平均绝对误差

对差值的绝对值求平均。

MSE(Mean Squared Error)均方误差

是对误差平方的期望。

RMSE(Root Mean Squared Error)均方误差根

对MSE指标求平方根。

结尾

评价指标学习完毕啦。对于比较难理解的ROC、AUC、精确率、召回率,文中都列举了场景,希望可以帮助到大家。其实搞懂核心概念,之后都是它的衍生。




    
往期精彩回顾




本站qq群851320808,加入微信群请扫码:
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/117489