二分类、多分类、多标签分类的评价指标

前言

在机器学习和深度学习中,常见的分类任务可以分为:二分类(Binary Classification); 多分类(Multi-class Classification); 多标签分类(Multi-label Classification); 序列分类 (Sequence Classification); 图分类 (Graph Classification)

一. 二分类(Binary Classification)

定义

每个样本只能属于两个类别中的一个

举例

癌症检测(有癌症 VS 无癌症)
垃圾邮件分类(垃圾邮件 VS 非垃圾邮件)

常见的评价指标

1. 准确率(Accuracy)

Accuracy = \frac{TP+TN}{TP+TN+FP+FN}

准确率表示模型预测正确的样本所有样本的比例。

2. 精确率(Precision)

Precision = \frac{TP}{TP+FP}

精确率表示在所有被预测为正类的样本中,真正为正类的比例。

3. 召回率(Recall)

Recall = \frac{TP}{TP+FN}

召回率表示在所有真正为正类的样本中,模型预测为正类的比例。

4. F1值(F1-Score)

F1 Score = 2\times \frac{Precision\times Recall}{TP+FN}

F1 值是精确率召回率的调和平均,综合考虑了这两个指标。

5. ROC 曲线(Receiver Operating Characteristic Curve)

ROC 曲线是以假阳性率(False Positive Rate, FPR)为横轴,真正例率(True Positive Rate, TPR,也就是召回率)为纵轴绘制的曲线。FPR 和 TPR 的计算公式分别为:

FPR = \frac{FP}{FP+TN}

TPR = \frac{TP}{TP+FN}

6. AUC(Area Under the ROC Curve)

AUC(也就是AUROC)是 ROC 曲线下的面积,表示分类器随机选择正负样本进行区分的能力,AUC 值越接近 1模型表现越好

7. PR 曲线(Precision-Recall Curve)

PR 曲线是以召回率为横轴,精确率为纵轴绘制的曲线。

8. 平均精度(Average Precision, AP)

AP 是 PR 曲线下的面积,反映了模型在不同阈值下的综合表现。

9.Log Loss(对数损失,也称为对数似然损失,logarithmic loss)

是用于评估分类模型性能的一种指标,特别是在概率预测任务中。Log Loss 可以用于二分类,也可以用于多分类问题。Log Loss 值从0到正无穷大,其中0表示完美的预测,越接近0越好

在类别不平衡时,上述指标可能会产生误导。例如,在正样本非常少的情况下,模型可以通过将所有样本都预测为负样本来获得很高的准确率,但这种模型显然没有实际意义。当数据集不平衡(即正负样本数量差异较大)时,AUPOC 和 AUPR 是评估模型性能的更好选择。

10. AUPOC(Precision-Recall Operating Curve 下面积)

是对 Precision 和 Recall 关系的评估。

11. AUPR(Precision-Recall 曲线下面积)

通过计算 Precision-Recall 曲线下的面积来总结模型的整体性能。高 AUPR 表示模型在不同阈值下都能保持较好的 Precision 和 Recall 平衡。

12. Balanced Accuracy (BACC)

特别适用于类别不平衡的数据集。

13. Matthews Correlation Coefficient (MCC)

是一种用于评估分类模型性能的指标,特别在处理类别不平衡的数据集时表现良好。

  • 二分类问题:MCC 最常用于二分类问题,特别是在类别不平衡的数据集上表现出色。
  • 多分类问题:MCC 也可以扩展用于多分类问题,不过需要对每个类别分别计算 MCC
  • MCC = +1:表示模型的预测非常好,所有的正类和负类样本都被正确分类。
  • MCC = 0:表示模型的分类效果与随机猜测相当,即模型几乎没有学习到有用的信息。
  • MCC = -1:表示模型的分类非常糟糕,所有的正类被错误地预测为负类,所有的负类被错误地预测为正类。

二. 多分类(Multi-class Classification)

定义

每个样本只能属于多个类别中的一个。

举例

图像分类(猫、狗、鸟)

文本分类(新闻文章分类为体育、科技、娱乐)

手写数字识别(数字0-9)

常见的评价指标

1. 准确率 (Accuracy)

定义

准确率是正确分类的样本数占总样本数的比例。

用法

适用于类别分布均衡的数据集。

代码
from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_true, y_pred)
print(f"Accuracy: {accuracy}")

2. 精确率 (Precision)

定义

精确率是模型正确预测的正类样本数占所有预测为正类的样本数的比例。

用法

适用于关注模型精确性的情况,尤其是当假阳性(False Positives)代价较高时。

代码
from sklearn.metrics import precision_score

precision = precision_score(y_true, y_pred, average='macro')  # 'macro'、'micro'、'weighted'等
print(f"Precision: {precision}")

3. 召回率(Recall)

定义

召回率是模型正确预测的正类样本数占所有实际为正类的样本数的比例。

用法

适用于关注模型召回能力的情况,尤其是当假阴性(False Negatives)代价较高时。

代码
from sklearn.metrics import recall_score

recall = recall_score(y_true, y_pred, average='macro')
print(f"Recall: {recall}")

4. F1分数(F1 Score)

定义

F1分数是精确率和召回率的调和平均数。

用法

适用于需要平衡精确率和召回率的情况。

代码
from sklearn.metrics import f1_score

f1 = f1_score(y_true, y_pred, average='macro')
print(f"F1 Score: {f1}")

5.  混淆矩阵 (Confusion Matrix)

定义

混淆矩阵是一个表格,用于描述模型预测结果的表现。

用法

提供详细的分类结果信息,包括真阳性(TP)、假阳性(FP)、真阴性(TN)和假阴性(FN)。

代码
from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)
print(f"Confusion Matrix:\n{conf_matrix}")

6. ROC AUC (Receiver Operating Characteristic Area Under Curve)

定义

ROC AUC 是 ROC 曲线下的面积,衡量模型的分类性能

用法

适用于需要评估模型对所有类别的区分能力的情况。

代码
from sklearn.metrics import roc_auc_score

roc_auc = roc_auc_score(y_true, y_score, average='macro', multi_class='ovr')
print(f"ROC AUC: {roc_auc}")

7.  分类报告 (Classification Report)

定义

分类报告汇总了精确率、召回率和 F1 分数等指标。

用法

提供全面的模型评估信息,适用于多分类问题。

代码
from sklearn.metrics import classification_report

class_report = classification_report(y_true, y_pred)
print(f"Classification Report:\n{class_report}")

8. Cohen's Kappa

定义

Cohen's Kappa 是一种评估分类模型性能的统计指标,考虑了随机分类的影响。

用法

适用于需要评估分类一致性的情况。

代码
from sklearn.metrics import cohen_kappa_score

kappa = cohen_kappa_score(y_true, y_pred)
print(f"Cohen's Kappa: {kappa}")

9. 平均精度 (Average Precision)

定义

平均精度是不同阈值下精确率和召回率的加权平均。

用法

适用于评估模型在不同决策阈值下的表现。

代码
from sklearn.metrics import average_precision_score

avg_precision = average_precision_score(y_true, y_score, average='macro')
print(f"Average Precision: {avg_precision}")

三、多标签分类(Multi-label Classification)

定义

每个样本可以同时属于多个类别。类别之间不是互斥的,一个样本可以有多个标签。

举例

图像标注(图像中可能同时包含“人”、“车”、“树”)

医学诊断(一个病人可能同时患有多种疾病)

常见的评价指标

1. Hamming Loss

定义

Hamming Loss 是指预测错误的标签的比例。

用法

适用于衡量模型整体错误率。

代码
from sklearn.metrics import hamming_loss

loss = hamming_loss(y_true, y_pred)
print(f"Hamming Loss: {loss}")

2. 平均精度 (Average Precision Score)

定义

平均精度是指在不同阈值下的精度(Precision)和召回率(Recall)之间的关系。它是精度-召回曲线下的面积。

用法

当需要评价模型对正类的预测能力,并且关心模型在不同阈值下的表现时。

代码
from sklearn.metrics import average_precision_score

pre_score = average_precision_score(y_true, y_score, average='samples')

3. ROC AUC (Receiver Operating Characteristic Area Under Curve)

定义

ROC AUC 是 ROC 曲线下的面积,ROC 曲线是 TPR(True Positive Rate)与 FPR(False Positive Rate)之间的关系图。

用法

当需要评价模型的整体分类能力,不受分类阈值的影响时。

代码
from sklearn.metrics import roc_auc_score

r_a_score = roc_auc_score(y_true, y_score, average='micro')

4. 覆盖误差 (Coverage Error)

定义

覆盖误差是指在预测的标签中,需要覆盖所有真实标签的最小预测数。

用法

当需要评估模型的预测结果是否包含所有真实标签时。

代码
from sklearn.metrics import coverage_error

Coverage_E = coverage_error(y_true, y_score)

5. 标签排序损失 (Label Ranking Loss)

定义

标签排序损失是指模型预测的标签排序中真实标签的错误排序比例。

用法

当需要评估模型对标签的排序能力时。

代码
from sklearn.metrics import label_ranking_loss

l_r_loss = label_ranking_loss(y_true, y_score)

6. 标签排序平均精度 (Label Ranking Average Precision Score)

定义

标签排序平均精度是指所有预测标签中,真实标签的平均精度。

用法

当需要评估模型的标签排序精度时。

代码
from sklearn.metrics import label_ranking_average_precision_score

l_r_a_p_score = label_ranking_average_precision_score(y_true, y_score)

7. Classification Report

定义

分类报告汇总了精确率、召回率和 F1 分数等指标。

用法

提供全面的模型评估信息,适用于多标签分类问题。

代码
from sklearn.metrics import classification_report

class_report = classification_report(y_true, y_pred, target_names=label_names)
print(f"Classification Report:\n{class_report}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值