机器学习中的评价指标——Precision、 Recall 、AP and F1 score

本文详细介绍了分类模型的评估指标,包括Accuracy(精度)、ErrorRate(错误率)、Precision(精准度)、Recall(召回率)及其相互关系。此外,还讨论了P-R曲线下的面积(AP)和平均精度均值(mAP)。F1-score作为Precision和Recall的综合体现,以及Micro-F1和Macro-F1在多分类问题中的应用。这些指标对于理解和优化分类模型性能至关重要。

Accuracy(精度)和Error Rate(错误率)

是分类模型中最常见的两种性能度量指标,既适用于二分类任务,也适用于多分类任务。

对于分类模型 f 和大小为 n测试集 D,Accuracy的定义为:
Accuracy(f;D)=1n∑i=1n(f(xi)=labeli) Accuracy(f;D)=\frac{1}{n}\sum_{i=1}^n(f(x_i)=label_i) Accuracy(f;D)=n1i=1n(f(xi)=labeli)
Error Rate的定义为:
ErrorRate(f;D)=1n∑i=1n(f(xi)≠labeli) ErrorRate(f;D)=\frac{1}{n}\sum_{i=1}^n(f(x_i)\not=label_i) ErrorRate(f;D)=n1i=1n(f(xi)=labeli)
两者之间存在这样的关系:
Accuracy(f;D)=1−ErrorRate(f;D) Accuracy(f;D)=1-ErrorRate(f;D) Accuracy(f;D)=1ErrorRate(f;D)

Precision and Recall

Precision(精准度)Recall(召回率),它们仅适用于二分类问题

在这里插入图片描述

Precision的定义为:
Precision=TPTP+FP Precision=\frac {TP}{TP+FP} Precision=TP+FPTP
Recall的定义为:
Recall=TPTP+FN Recall=\frac {TP}{TP+FN} Recall=TP+FNTP
recision从预测结果角度出发,描述了二分类器预测出来的正例结果中有多少是真实正例,即该二分类器预测的正例有多少是准确的;Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。

Precision和Recall通常是一对矛盾的性能度量指标。一般来说,Precision越高时,Recall往往越低。原因是,如果我们希望提高Precision,即二分类器预测的正例尽可能是真实正例,那么就要提高二分类器预测正例的门槛,例如,之前预测正例只要是概率大于等于0.5的样例我们就标注为正例,那么现在要提高到概率大于等于0.7我们才标注为正例,这样才能保证二分类器挑选出来的正例更有可能是真实正例;而这个目标恰恰与提高Recall相反,如果我们希望提高Recall,即二分类器尽可能地将真实正例挑选出来,那么势必要降低二分类器预测正例的门槛,例如之前预测正例只要概率大于等于0.5的样例我们就标注为真实正例,那么现在要降低到大于等于0.3我们就将其标注为正例,这样才能保证二分类器挑选出尽可能多的真实正例。

AP and mAP

那么有没有一种指标表征了二分类器在Precision和Recall两方面的综合性能呢?答案是肯定的。一个比较合理的指标是P-R曲线下面的面的大小,它在一定程度上表征了二分类器在Precision和Recall这两方面的综合性能。

AP就是Precision-recall 曲线下面的面积,通常来说一个越好的分类器,AP值越高

mAP是多个类别AP的平均值

在这里插入图片描述

从上面可以看出:

  • Precision和Recall往往是一对矛盾的性能度量指标;
  • 提高Precision == 提高二分类器预测正例门槛 == 使得二分类器预测的正例尽可能是真实正例;
  • 提高Recall == 降低二分类器预测正例门槛 == 使得二分类器尽可能将真实的正例挑选出来;
  • P-R曲线下面的面积表征了二分类器在Precision和Recall这两方面的综合性能;

F1 score and F1 MACRO

F1 score

Precision和Recall是一对矛盾的度量,一般来说,Precision高时,Recall值往往偏低;而Precision值低时,Recall值往往偏高。当分类置信度高时,Precision偏高;分类置信度低时,Recall偏高。为了能够综合考虑这两个指标,F-measure被提出(Precision和Recall的加权调和平均),即:
F1=2×P×RP+R F1=2\times\frac {P\times R}{P+R} F1=2×P+RP×R

F1的核心思想在于,在尽可能的提高Precision和Recall的同时,也希望两者之间的差异尽可能小。F1-score适用于二分类问题,对于多分类问题,将二分类的F1-score推广,有Micro-F1和Macro-F1两种度量。

Micro-F1

统计各个类别的TP、FP、FN、TN,加和构成新的TP、FP、FN、TN,然后计算Micro-Precision和Micro-Recall,得到Micro-F1。具体的说,统计出来各个类别的混淆矩阵,然后把混淆矩阵“相加”起来,得到一个多类别的混淆矩阵,然后再计算F1score

Macro-F1

我感觉更常用的是Macro-F1。统计各个类别的TP、FP、FN、TN,分别计算各自的Precision和Recall,得到各自的F1值,然后取平均值得到Macro-F1

从上面二者计算方式上可以看出,Macro-F1平等地看待各个类别,它的值会受到稀有类别的影响;而Micro-F1则更容易受到常见类别的影响。

参考:

1.https://zhuanlan.zhihu.com/p/78204581

2.https://cloud.tencent.com/developer/article/1673601

<think>好的,我现在需要回答用户关于机器学习指标的问题,包括precisionrecallf1-score、support、accuracy、AP、AUC这些指标的含义。首先,我得逐一理清每个指标的定义和计算公式,确保准确无误。 用户之前的问题提到了这些指标,所以我需要按照逻辑顺序逐个解释,可能从基础指标开始,如precisionrecall,然后到综合指标f1-score,再到support、accuracy,最后是AP和AUC。需要确保每个术语都有明确的定义,并举例说明,这样用户更容易理解。 接下来,我需要检查是否需要参考提供的引用内容。引用里提到了accuracy、precisionrecallF1-score、ROC-AUC、PRC-AUC等,这些和用户的问题相符。不过要注意引用中的信息是否正确,比如AP通常指Average Precision,而AUC是ROC曲线下的面积,这些需要准确描述。 然后,我要考虑如何组织回答结构。可能先分点解释每个指标,使用公式时注意用LaTeX格式,比如$Precision = \frac{TP}{TP+FP}$。同时,用户提到要生成相关问题,这可能需要放在最后部分,提出几个相关的问题,比如这些指标的应用场景或如何计算等。 还需要注意用户提到的系统级指令,比如行内数学表达式用$...$,独立公式用$$...$$。比如在解释AUC时,可能需要独立成段的公式。同时,确保使用中文回答,避免任何markdown格式,除了代码块需要用三个反引号包裹。 另外,用户示例中在回答后添加了相关问题,我需要模仿这个结构,在最后生成相关问题,比如关于如何选择这些指标,或者它们的优缺点等。同时,引用标识要自然地添加在引用的段落末尾,比如引用[1]中的内容。 现在,我需要确保每个指标的解释正确无误。例如,support指的是每个类别的样本数量,而accuracy是总正确预测的比例。AP和AUC可能涉及更复杂的概念,如PR曲线和ROC曲线下的面积,需要简明扼要地说明。 可能遇到的疑问点:比如AP是否就是PR曲线的AUC?实际上,APPrecision-Recall曲线下的面积,而AUC通常指ROC曲线面积,需要区分清楚。此外,F1-scoreprecisionrecall的调和平均,这点需要正确表达。 最后,检查LaTeX语法是否正确,例如公式中的括号是否闭合,变量是否正确使用斜体等。确保回答结构清晰,分点明确,每个指标之间有适当的过渡,帮助用户逐步理解。</think>### 机器学习评价指标详解 #### 1. 基础指标(二分类场景) - **TP(True Positive)**:正确预测的正类样本 - **FP(False Positive)**:错误预测为正类的负类样本 - **TN(True Negative)**:正确预测的负类样本 - **FN(False Negative)**:错误预测为负类的正类样本 #### 2. 核心指标定义 1. **Precision(精确率)** 预测为正类的样本中实际为正类的比例: $$ Precision = \frac{TP}{TP + FP} $$ 适用于关注**误报成本**的场景(如垃圾邮件检测)[^1]。 2. **Recall(召回率)** 实际为正类的样本中被正确预测的比例: $$ Recall = \frac{TP}{TP + FN} $$ 适用于关注**漏检成本**的场景(如疾病诊断)[^1]。 3. **F1-scoreF1值)** PrecisionRecall的调和平均数,平衡两者关系: $$ F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} $$ 特别适用于**类别不平衡**数据评估。 4. **Support(支持数)** 每个类别在测试集中的**实际样本数量**,反映数据分布特征。 5. **Accuracy(准确率)** 整体预测正确的比例: $$ Accuracy = \frac{TP + TN}{TP + FP + TN + FN} $$ 在类别平衡时有效,但在不平衡数据中可能失真[^1]。 #### 3. 高级指标 1. **AP(Average Precision,平均精确率)** 通过改变分类阈值,计算Precision-Recall曲线面积: $$ AP = \sum_{k} (Recall_k - Recall_{k-1}) \times Precision_k $$ 反映模型在不同召回率下的平均表现,常用于目标检测任务。 2. **AUC(Area Under ROC Curve)** ROC曲线面积,反映模型对正负样本的区分能力: - ROC曲线以**FPR(False Positive Rate)**为横轴:$FPR = \frac{FP}{FP + TN}$ - **TPR(True Positive Rate,即Recall)**为纵轴 - 取值范围$[0,1]$,值越大表示分类性能越好。 ```python # 指标计算示例(Python sklearn实现) from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score, average_precision_score, roc_auc_score y_true = [1,0,1,1,0] y_pred = [1,0,0,1,1] print(f"Precision: {precision_score(y_true, y_pred)}") # 0.6667 print(f"Recall: {recall_score(y_true, y_pred)}") # 0.6667 print(f"F1-score: {f1_score(y_true, y_pred)}") # 0.6667 print(f"Accuracy: {accuracy_score(y_true, y_pred)}") # 0.6 print(f"AP: {average_precision_score(y_true, y_pred)}") # 0.6389 print(f"AUC: {roc_auc_score(y_true, y_pred)}") # 0.6667 ``` #### 4. 关键差异说明 | 指标 | 关注重点 | 适用场景 | 数据敏感性 | |------------|---------------------------|------------------------|----------------| | Precision | 预测正类的准确性 | 高误报成本场景 | 受负类分布影响 | | Recall | 正类样本的覆盖率 | 高漏检成本场景 | 独立于负类分布 | | AUC | 整体排序能力 | 类别不平衡场景 | 综合考量 | | Accuracy | 整体预测正确率 | 类别平衡场景 | 易受分布影响 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值