机器学习中的评估指标

Posted

技术标签:

【中文标题】机器学习中的评估指标【英文标题】:Evaluation metric in machine learning 【发布时间】:2017-03-01 21:27:33 【问题描述】:

对于下面的二元分类问题,如果我在训练中使用“准确度”作为指标并使用 ROCR 包找到 AUC 分数,这将是多么合乎逻辑?或者我应该始终使用“ROC”作为计算 AUC 分数的指标吗?数据集不平衡。

control <- trainControl(method="cv", number=5)

fit <- train(diabetes~., data=PimaIndiansDiabetes, method="gbm", metric="Accuracy", trControl=control)

【问题讨论】:

准确性受到不平衡数据的影响,您可能希望使用不受类别平衡影响的任何指标。 ROCR 是一个很好的计算度量的包,你想要曲线(ROC)还是曲线下的面积(AUROC)? 是的,我想要曲线 (ROC) 或曲线下的面积 (AUROC)。 【参考方案1】:

我认为,如果您想使用准确性,那么您应该首先使用上采样或下采样等技术使您的数据集平衡。 在可解释性方面,AUC 比准确性更好。

【讨论】:

【参考方案2】:

为了评估任何分类器的性能,最基本的指标/基准是混淆矩阵,因为准确率、精度、召回率、F-measure、ROC 和 AUC 都来自混淆矩阵。提出您的问题,作为性能指标的准确性是否足以判断二元分类器?答案是“是”,前提是数据分布平衡,即 1 类和 2 类对象的数量相等。但是,如果数据不平衡(如您的情况),那么使用准确性作为关键性能指标是一个很大的NO。揭穿准确性的吸引力/谬误的一个简单示例是:考虑 *** 电话公司想要检查其生产的有缺陷手机的数量。现在平均每 1000 部手机中有 10 部坏手机,并且构建的分类器从未在它采样的 1000 部手机中捕捉到有缺陷/坏手机,那么分类器的准确率仍然是 99%,因为 TP = 990 和 TN = 0 和准确度 = TP+TN/1000。因此,评估性能的最佳或至少基准是每个类别的 F 分数,从那里可以将其带到绘制 ROC 曲线和评估 AUC 的下一个级别。

【讨论】:

准确度只对平衡数据有好处是不正确的。是的,当您极度不平衡时(例如 1-99),它可能会导致非常奇怪的行为,但是具有 (1-4-3-8) 之类的比例的数据集可以准确无误。这种推理从一开始就是有缺陷的。您不适合数据分布的评估指标,您适合评估您要回答的问题是什么。永远不要反过来。 实际上,我的目标是绘制 ROC 曲线并找到该曲线下的面积 (AUROC)。正如我在问题中指出的那样,在我使用“准确度”或“ROC”作为训练功能的评估指标后,我得到的 F1score 或 AUC 的结果略有不同。我想知道原因。那么在这种情况下,我应该使用“ROC”作为指标吗? @lejlot 我并不是说评估指标和数据分布是相关的。我试图传达的只是使用 Accuracy 来评估分类器的性能,这是我不推荐的。谢谢!

以上是关于机器学习中的评估指标的主要内容,如果未能解决你的问题,请参考以下文章

机器学习算法分类及其评估指标

机器学习模型评估指标汇总

机器学习中的数学原理——模型评估与交叉验证

机器学习中的模型选择和评估

Python机器学习中的模型选择和评估

我将如何确定我应该使用哪个评估指标来进行机器学习中的分类问题陈述?