【机器学习】评价指标 Precision&Recall

【机器学习】PRC(PR曲线)

【机器学习】POC & AUC

混淆矩阵(Confusion Matrix)

  1. 预测值为正(Positive),并且真实值也为正(Positive),预测为真(True),True Positive (TP)。
  2. 预测值为负(Negative),但是真实值为正(Positive),预测失败(False),False Negative (FN)。
  3. 预测值为正(Positive),但是真实值为负(Negative),预测失败(False),False Positive (FP)。
  4. 预测值为负(Negative),并且真实值也为负(Negative),预测为真(True),True Negative (TN)。

准确率(Accuracy)

既然我们是做预测,那自然希望我们做出的预测尽可能的准确,准确率就是在所有样本数中,我们做出正确预测(True)的样本比例。在图中就是

准确率(Accuracy)的适用场景:

不同的分类是同等地位的,对猫狗喜好进行分类,问题中并没有对猫和狗有特定的侧重,因此在这里我们只强调于分类的正确度,即准确率。

精确率(Precision)

但更一般的分类问题,对于类别往往有所侧重,例如银行进行用户违约预测的例子中,银行更关注的是那些少量的违约案例,因为这关系到贷出资金能否收回,涉及坏账率,因此需要一个针对于正预测(Positive)的指标,所以这里银行会更加看重所做出的正预测中,预测为真(True)的比例。

精确率(Precision)的适用场景:

因为预测为正但真实为负(FP)的成本很高,因此非常看重预测正样本预测的准确度。比如在银行对用户违约与否进行预测时,假如将客户分类为会违约,但客户实际不违约,那么银行损失了一名客户,同时也损失了利息收入,所以银行会比较看重预测的精确度。

召回率(Recall)

召回率又可以被翻译为查全率,同样基于对于正(Positive)案例的指标。但与精确率不同之处在于,召回率更加侧重真实为正(Positive)的样本中被成功预测的比例。

召回率(Recall)的适用场景:

在真实值为正,而未被成功预测为正(FN)的成本很高,因此非常看重真实为正样本被正确预测的比例。比如在流行病的案例中,如果真实为正而未被正确预测,即本身患病而被判断为不患病,那么对于社会公共安全造成极大危害,后果严重,所以这里会很看重召回率。

总结:

  • precision是从已经预测为同一类别的样本抽样。是针对预测结果而言的,表示:预测样本为正的样本中有多少是真正的正样本。
  • recall是从dataset的同一类的样本抽样。是针对原来样本而言的,表示:样本中的正例有多少被预测正确。

但仔细想想,单纯以精确率或者召回率作为度量标准其实存在一个很大的问题,让我们因为虽然真实的类别是已经存在的客观事实,我们可以通过主观地修改预测比例来“调整”混淆矩阵,从而有意提高精确率或召回率。

例如,银行若仅以精确率为度量标准,非常谨慎地进行正预测,那么只给收入最低、学历最低、工作没有保障的少量用户分类为正(Positive),判断他们将无力偿还贷款,那精确度将非常高。但这种做法会使很多其他方面有问题,而无力偿还贷款的人不被判定为违约者,而给他们发放贷款,造成资金无法收回,坏账率提高。

又比如,假设在流行病检验中,假设检疫局仅以召回率作为唯一度量标准进行分类,那么将以非常松散的标准进行正(Positive)分类,将大部分人预测为患病。这样操作会使召回率非常高(想象一下极端情况下将所有样本预测为正,召回率将为100%),但同时很多未患病的人会被误分类为患病,造成很多不必要的隔离措施。

F值

因此,在实际情况中,不会有分类器仅仅以精确度(Precision)或者召回率(Recall)作为单一的度量标准,而是使用这两者的调和平均,于是就有了F值(F-Score),F值的一般表达式为:

 在实际过程中,我本以为二分类的话只能是0,1。(类别可以,但我理解的是分数iou这种吧,其实这种可以直接用)

>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')  
0.26...
>>> f1_score(y_true, y_pred, average='micro')  
0.33...
>>> f1_score(y_true, y_pred, average='weighted')  
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])

参考:

精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

机器学习中,查准率(precision)和查全率(recall)是用来评估分类模型性能的重要指标。查准率指的是在所有被模型预测为正例的样本中,实际为正例的比例。而查全率指的是在所有实际为正例的样本中,被模型正确预测为正例的比例。 通常情况下,查准率和查全率是相互矛盾的,提高查准率会导致查全率下降,反之亦然。这是因为在分类问题中,我们可以通过调整阈值来决定将样本划分为正例还是负例。当我们降低阈值时,会增加正例的数量,从而提高查全率,但可能会降低查准率。相反,当我们提高阈值时,会减少正例的数量,从而提高查准率,但可能会降低查全率。 为了综合考虑查准率和查全率,我们通常使用F1分数来评估模型的性能。F1分数是查准率和查全率的调和平均值,可以通过以下公式计算:F1 = (2 * precision * recall) / (precision + recall)。 因此,在机器学习中,我们可以使用查准率、查全率和F1分数来评估分类模型的性能。 #### 引用[.reference_title] - *1* *2* [【机器学习精确率(precision)、召回率(recall)以及F1分数的概念讲解加python代码实现](https://blog.csdn.net/weixin_42163563/article/details/116697828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [机器学习之——PrecisionRecall](https://blog.csdn.net/educationer/article/details/99580979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值