前言
在机器学习和深度学习中,常见的分类任务可以分为:二分类(Binary Classification); 多分类(Multi-class Classification); 多标签分类(Multi-label Classification); 序列分类 (Sequence Classification); 图分类 (Graph Classification)
一. 二分类(Binary Classification)
定义
每个样本只能属于两个类别中的一个
举例
癌症检测(有癌症 VS 无癌症)
垃圾邮件分类(垃圾邮件 VS 非垃圾邮件)
常见的评价指标
1. 准确率(Accuracy)
准确率表示模型预测正确的样本占所有样本的比例。
2. 精确率(Precision)
精确率表示在所有被预测为正类的样本中,真正为正类的比例。
3. 召回率(Recall)
召回率表示在所有真正为正类的样本中,模型预测为正类的比例。
4. F1值(F1-Score)
F1 值是精确率和召回率的调和平均,综合考虑了这两个指标。
5. ROC 曲线(Receiver Operating Characteristic Curve)
ROC 曲线是以假阳性率(False Positive Rate, FPR)为横轴,真正例率(True Positive Rate, TPR,也就是召回率)为纵轴绘制的曲线。FPR 和 TPR 的计算公式分别为:
6. AUC(Area Under the ROC Curve)
AUC 是 ROC 曲线下的面积,表示分类器随机选择正负样本进行区分的能力,AUC 值越接近 1,模型表现越好。
7. PR 曲线(Precision-Recall Curve)
PR 曲线是以召回率为横轴,精确率为纵轴绘制的曲线。
8. 平均精度(Average Precision, AP)
AP 是 PR 曲线下的面积,反映了模型在不同阈值下的综合表现。
二. 多分类(Multi-class Classification)
定义
每个样本只能属于多个类别中的一个。
举例
图像分类(猫、狗、鸟)
文本分类(新闻文章分类为体育、科技、娱乐)
手写数字识别(数字0-9)
常见的评价指标
1. 准确率 (Accuracy)
定义
准确率是正确分类的样本数占总样本数的比例。
用法
适用于类别分布均衡的数据集。
代码
from sklearn.metrics import accuracy_scoreaccuracy = accuracy_score(y_true, y_pred)
print(f"Accuracy: {accuracy}")
2. 精确率 (Precision)
定义
精确率是模型正确预测的正类样本数占所有预测为正类的样本数的比例。
用法
适用于关注模型精确性的情况,尤其是当假阳性(False Positives)代价较高时。
代码
from sklearn.metrics import precision_scoreprecision = precision_score(y_true, y_pred, average='macro') # 'macro'、'micro'、'weighted'等
print(f"Precision: {precision}")
3. 召回率(Recall)
定义
召回率是模型正确预测的正类样本数占所有实际为正类的样本数的比例。
用法
适用于关注模型召回能力的情况,尤其是当假阴性(False Negatives)代价较高时。
代码
from sklearn.metrics import recall_scorerecall = recall_score(y_true, y_pred, average='macro')
print(f"Recall: {recall}")
4. F1分数(F1 Score)
定义
F1分数是精确率和召回率的调和平均数。
用法
适用于需要平衡精确率和召回率的情况。
代码
from sklearn.metrics import f1_scoref1 = 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_matrixconf_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_scoreroc_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_reportclass_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_scorekappa = cohen_kappa_score(y_true, y_pred)
print(f"Cohen's Kappa: {kappa}")
9. 平均精度 (Average Precision)
定义
平均精度是不同阈值下精确率和召回率的加权平均。
用法
适用于评估模型在不同决策阈值下的表现。
代码
from sklearn.metrics import average_precision_scoreavg_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_lossloss = hamming_loss(y_true, y_pred)
print(f"Hamming Loss: {loss}")
2. 平均精度 (Average Precision Score)
定义
平均精度是指在不同阈值下的精度(Precision)和召回率(Recall)之间的关系。它是精度-召回曲线下的面积。
用法
当需要评价模型对正类的预测能力,并且关心模型在不同阈值下的表现时。
代码
from sklearn.metrics import average_precision_scorepre_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_scorer_a_score = roc_auc_score(y_true, y_score, average='micro')
4. 覆盖误差 (Coverage Error)
定义
覆盖误差是指在预测的标签中,需要覆盖所有真实标签的最小预测数。
用法
当需要评估模型的预测结果是否包含所有真实标签时。
代码
from sklearn.metrics import coverage_errorCoverage_E = coverage_error(y_true, y_score)
5. 标签排序损失 (Label Ranking Loss)
定义
标签排序损失是指模型预测的标签排序中真实标签的错误排序比例。
用法
当需要评估模型对标签的排序能力时。
代码
from sklearn.metrics import label_ranking_lossl_r_loss = label_ranking_loss(y_true, y_score)
6. 标签排序平均精度 (Label Ranking Average Precision Score)
定义
标签排序平均精度是指所有预测标签中,真实标签的平均精度。
用法
当需要评估模型的标签排序精度时。
代码
from sklearn.metrics import label_ranking_average_precision_scorel_r_a_p_score = label_ranking_average_precision_score(y_true, y_score)
7. Classification Report
定义
分类报告汇总了精确率、召回率和 F1 分数等指标。
用法
提供全面的模型评估信息,适用于多标签分类问题。
代码
from sklearn.metrics import classification_reportclass_report = classification_report(y_true, y_pred, target_names=label_names)
print(f"Classification Report:\n{class_report}")