选择哪个指标来跟踪模型性能?

数据挖掘 机器学习 深度学习 数据挖掘 预测建模 统计数据
2022-03-10 15:52:18

我正在研究类别比例为 33:67 的二元分类问题。

目前我正在做的是运行多个模型,如LR, SVM, RF,XgBoost进行分类。

RF模型表现Xgboost更好。

但是我在网上看到AUCF1-score或者Accuracy模型之间的比较可能不是衡量模型性能的好指标(因为它们很敏感)。

我看到这些是最常用的评分指标,但你能告诉我我应该寻找哪个指标measuring binary classification model performance吗?

你能告诉我为什么我们应该选择不同的指标吗?

这些是我看到的指标scikit-learn

在此处输入图像描述

2个回答

TL;博士

我建议你:

  1. 平衡您的数据集(因为您没有执行异常检测任务,这应该没问题)。
  2. 测量精确度/召回率/F1 分数并根据您的问题为它们争论。
  3. 执行 K 折交叉验证以比较模型

平衡数据集

你说你有一个33:67比例。为什么要保持这种状态而不是仅仅实现它50:50(例如,通过从更大的类中删除样本)?一般来说,这有助于您的模型减少对较大类别的偏见。

进行异常检测时需要特别小心,其中比率通常约为1:99. 但是由于您没有这样做,因此建议进行简单的数据集平衡。

精度/召回/F1

F1 分数是用于分类的默认分数。只要您test set对所有模型保持相同,就可以跨模型使用。比较模型更好的做法是K-Fold Cross Validation在每个模型上执行。Sklean 文档)。

但是,您可以查看 Precision 或 Recall 而不是 F1 分数,但这取决于您要解决的问题。

精度 = 当我检测到一个类的实例时,我确信它是正确的类。

召回=我检测到一个类的所有实例,即使我检测到不属于的实例。

例如:我们正在对患者是否患有致命疾病进行二元分类。 健康保险:“让我们优化精准度,因为我们只想为真正患有疾病的患者支付治疗费用”。医生:“让我们优化召回,因为即使没有疾病,最好治疗更多的人,以确保那些有疾病的人很可能得到照顾”。

如果您认为准确率和召回率同样重要,那么这就是 F1 分数的定义。

F1 只是基于混淆矩阵(并考虑到类别不平衡),因此不同的模型应该只专注于正确预测混淆矩阵,如果它们不正确,则不敏感。

F1Score 是使用公式评估预测器性能的指标

F1 = 2 * (精度 * 召回率) / (精度 + 召回率)

召回 = TP/(TP+FN)

精度 = TP/(TP+FP)

但主要的是:

在此处输入图像描述