机器学习中的评估指标
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 来评估分类器的性能,这是我不推荐的。谢谢!以上是关于机器学习中的评估指标的主要内容,如果未能解决你的问题,请参考以下文章