我试图更好地理解日志丢失及其工作原理,但我似乎找不到的一件事是将日志丢失数放入某种上下文中。如果我的模型的对数损失为 0.5,那很好吗?什么是好成绩和坏成绩?这些阈值如何变化?
什么被认为是好的日志丢失?
与任何指标一样,如果您不得不在没有观察信息的情况下进行猜测,那么一个好的指标就是比“愚蠢”的偶然猜测更好的指标。这在统计学中称为仅截距模型。
这种“愚蠢”的猜测取决于两个因素:
- 班级数
- 类的平衡:它们在观察数据集中的普遍性
在 LogLoss 指标的情况下,一个常见的“众所周知”指标是说0.693是非信息值。这个数字是通过预测p = 0.5
任何类别的二元问题而获得的。这仅对平衡二元问题有效。因为当一个类别的流行率为 10% 时,您将p =0.1
始终预测该类别。这将是你愚蠢的偶然预测的基线,因为预测0.5
会更愚蠢。
一、类数N
对dumb-logloss的影响:
在平衡的情况下(每个类别的流行率相同),当您p = prevalence = 1 / N
对每个观察进行预测时,等式变得简单:
Logloss = -log(1 / N)
log
对于使用该约定的人来说,是Ln
neperian 对数。
在二进制情况下,N = 2
:Logloss = - log(1/2) = 0.693
所以哑对数损失如下:
二、类的流行对dumb-Logloss的影响:
一种。二进制分类案例
在这种情况下,我们总是预测p(i) = prevalence(i)
,我们得到下表:
因此,当类非常不平衡时(流行率 <2%),0.1 的对数损失实际上可能非常糟糕!在这种情况下,例如 98% 的准确度会很糟糕。所以也许 Logloss 不是最好的指标
湾。三级案例
“哑” - logloss取决于流行 - 三类案例:
我们可以在这里看到平衡二元和三类情况(0.69 和 1.1)的值。
结论
0.69 的 logloss 在多类问题中可能很好,而在二元偏差情况下则非常糟糕。
根据您的情况,您最好自己计算问题的基线,以检查您的预测的含义。
在有偏见的情况下,我知道 logloss 与准确性和其他损失函数存在相同的问题:它仅提供对您的性能的全局测量。因此,您最好使用专注于少数类(召回和精度)的指标来补充您的理解,或者根本不使用 logloss。
对数损失很简单在哪里只是归因于真实类别的概率。
所以很好,我们将概率归因于到正确的班级,而不好,因为我们将概率归因于到实际课堂。
所以,回答你的问题,平均而言,您将概率归因于正确的类别跨样本。
现在,决定这是否足够好实际上取决于应用程序,因此取决于争论。
所以这实际上比 Firebugs 响应更复杂,这完全取决于您试图预测的过程的固有变化。
当我说变化时,我的意思是“如果一个事件要在完全相同的条件下重复,无论是已知的还是未知的,那么相同结果再次发生的概率是多少”。
一个完美的预测器会有损失,概率 P:损失 = P ln P + (1-P) ln (1-P)
如果您试图预测某些事情,更糟糕的是,某些事件的预测结果为 50/50,那么通过积分并取平均值,平均损失将是:L=0.5
如果您要预测的内容具有更高的可重复性,则完美模型的损失会更低。例如,假设有足够的信息,一个完美的模型能够预测一个事件的结果,在所有可能的事件中,最坏的情况是“这个事件将以 90% 的概率发生”,那么平均损失将是 L=0.18 .
如果概率分布不均匀,也会存在差异。
因此,在回答您的问题时,答案是“这取决于您要预测的内容的性质”
我想说标准统计答案是与仅拦截模型进行比较。(这处理其他答案中提到的不平衡类)cf mcFadden 的伪 r^2。 https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-what-are-pseudo-r-squareds/
现在的问题是最大值是多少。从根本上说,问题是事件的概率在事件模型之外是未定义的。我建议的方法是您将测试数据汇总到一定水平,以获得概率估计。然后计算这个估计的对数损失。
例如,您根据(web_site、ad_id、consumer_id)预测点击率,然后将点击次数、展示次数汇总到例如 web_site 级别,并计算每个网站在测试集上的点击率。然后使用这些测试点击率作为预测来计算您的测试数据集的 log_loss。对于仅使用 website ids 的模型,这就是您的测试集上的最佳 logloss 。问题是我们可以通过添加更多特征直到每条记录都被唯一识别,从而使这种损失尽可能小。