比较模型之间的 AUC、对数损失和准确度得分
Posted
技术标签:
【中文标题】比较模型之间的 AUC、对数损失和准确度得分【英文标题】:Comparing AUC, log loss and accuracy scores between models 【发布时间】:2020-02-24 20:26:45 【问题描述】:在为binary classification problem
运行 6 个模型后,我在test set
上有以下评估指标:
accuracy logloss AUC
1 19% 0.45 0.54
2 67% 0.62 0.67
3 66% 0.63 0.68
4 67% 0.62 0.66
5 63% 0.61 0.66
6 65% 0.68 0.42
我有以下问题:
模型1
如何在 logloss
方面是最好的(logloss
最接近 0),因为它表现最差(在 accuracy
方面)。这是什么意思?
为什么模型6
的AUC
分数低于例如?模型5
,当模型6
具有更好的accuracy
。这是什么意思?
有没有办法说这 6 种模型中哪一种是最好的?
【问题讨论】:
【参考方案1】:非常简短,带有链接(部分内容已在别处讨论过)...
模型
1
如何在logloss
方面是最好的(logloss
最接近 0),因为它表现最差(在accuracy
方面)。这是什么意思?
虽然损失是准确性的代表(反之亦然),但在这方面它并不是一个非常可靠的。在这里仔细研究准确性和损失之间的特定机制可能会很有用;考虑以下 SO 线程(免责声明:答案是我的):
Loss & accuracy - Are these reasonable learning curves? How does Keras evaluate the accuracy?(尽管有标题,但这是一个笼统的阐述,并不局限于 Keras)稍微详细一点:
假设一个样本的真实标签为y=1
,来自p=0.51
的分类器的概率预测,以及0.5的决策阈值(即对于p>0.5
,我们分类为1
,否则为0
),这个样本对准确率的贡献是1/n
(即正),而损失是
-log(p) = -log(0.51) = 0.6733446
现在,再次假设另一个样本为真y=1
,但现在的概率预测为p=0.99
;对准确性的贡献将是相同的,而现在的损失将是:
-log(p) = -log(0.99) = 0.01005034
因此,对于两个都被正确分类的样本(即它们以完全相同的数量对准确率做出积极贡献),我们在相应的损失方面存在相当大的差异......
尽管您在这里展示的内容看起来相当极端,但不难想象y=1
的许多样本将在p=0.49
的区域周围,因此给出一个相对损失低,但对准确性的贡献为零......
为什么模型
6
的AUC
分数低于例如?模型5
,当模型6
具有更好的accuracy
时。这是什么意思?
这个比较简单。
至少根据我的经验,大多数 ML 从业者认为 AUC 分数衡量的东西与它实际所做的不同:常见(和不幸)的使用就像任何其他的 -higher-更好的指标,比如准确度,这自然会导致你表达自己的问题。
事实是,粗略地说,AUC 衡量的是二元分类器的性能在所有可能的决策阈值上取平均值。因此,AUC 实际上并不衡量特定部署模型的性能(包括选择的决策阈值),而是衡量一个家庭模型在所有阈值上的平均性能(其中绝大多数是你当然不感兴趣,因为它们永远不会被使用)。
出于这个原因,AUC 已开始在文献中受到严厉批评(不要误读 - ROC 曲线 本身的分析非常有用且信息量很大);强烈推荐阅读Wikipedia entry 和其中提供的参考资料:
因此,AUC 度量的实用价值受到质疑,这增加了 AUC 实际上可能在机器学习分类准确性比较中引入比分辨率更多的不确定性的可能性。
[...]
最近对 ROC AUC 问题的一种解释是,将 ROC 曲线减少到一个数字忽略了这样一个事实,即它是关于不同系统或绘制的性能点之间的权衡,而不是单个系统的性能
强调我的 - 另见On the dangers of AUC...
简单的建议:不要使用它。
有没有办法说这 6 个模型中哪个是最好的?
取决于“最佳”的确切定义;如果“最佳”意味着最适合我正在尝试解决的自己的业务问题(对于 ML从业者来说不是一个不合理的定义),那么它就是表现更好的那个根据您自己定义的适合您问题的业务指标。这可能永远是AUC,通常也不是损失......
【讨论】:
我得出了同样的结论,尤其是关于“最佳的定义”,尽管没有人告诉我。 @SidaZhou 也没有人告诉我,这是很少被明确教授的东西之一,你只能在实践中自己总结;)以上是关于比较模型之间的 AUC、对数损失和准确度得分的主要内容,如果未能解决你的问题,请参考以下文章