logloss的取值范围是多少?一般好的分类器能达到多少?

  统计/机器学习 监督式学习 损失函数    浏览次数: 949
13

我在做一个二元分类器,我现在的logloss是1.1左右。

logloss是可以大于1的吗?它的正常范围应该是多少?一般多小的logloss算是好的分类器?

 

杨业勇   2017-04-10 11:39



   4个回答 
21

$logloss$可以大于1,但是对于二元分类来说,大于1说明这个模型是比较糟糕。

回顾一下$logloss$的公式

$$logloss=−\sum_{i=1}^n\left(\frac{y_i}{n}\text{log}(p_i)+\frac{1−y_i}{n}\text{log}(1−p_i)\right)$$

其中$n$是测试样本的个数,$p_i$为预测第$i$个样本为阳性的概率,$y_i$表示第$i$个预测样本的真实标签(1代表阳性,-1代表阴性)。


我一开始就说了大于1的logloss是很差的。我在Gakki下面留言说0.8依然很差。我凭什么这么说?

假如我们现在有个训练集,100万个数据点,其中10万个为阳性,那么总体上每个样本为1的概率可近似认为是0.1。通常来说,测试集的分布是非常接近于训练集的,那么测试集中大概有10%的样本为阳性。如果我们预测测试集中每个样本为1的概率都为0.1,那么logloss会是多少呢?

$$logloss=−\left(0.1\text{log}(0.1)+0.9\text{log}(1−0.1)\right)\approx 0.325$$

假如总体分布是每个样本以$p$的概率为阳性,我们预测每个样本为阳性的概率都为$p$,也就是$p_i=p$,那么$logloss$是多少呢?

很显然

$$logloss=-p\log (p) - (1-p) \log(1-p)$$

若$p=0.1$,$logloss = 0.325$

若$p=0.2$,$logloss = 0.500$

若$p=0.3$,$logloss = 0.611$

若$p=0.4$,$logloss = 0.673$

若$p=0.5$,$logloss = 0.693$

若$p=0.6$,$logloss = 0.673$

若$p=0.7$,$logloss = 0.611$

若$p=0.8$,$logloss = 0.500$

若$p=0.9$,$logloss = 0.325$

所以最差的情况就是,样本正好是一半阳性一半阴性,此时你按照上面方面预测(乱猜)出的logloss是0.693。

换句话说,只要loglss是在0.693以上,就基本说明了模型是失败的。


木子周   2017-12-06 13:07

这个才应该是最佳答案! - sasa   2017-12-07 13:02
哈哈,谢谢 - 木子周   2017-12-07 20:57
送你上最佳! - 剪叔   2017-12-09 16:28
12

先搞清楚logloss的定义

$$\text{logloss}=-\frac{1}{n}\sum_{i=1}^n y_i\log(p_i)+(1-y_i)\log(1-p_i),$$

其中$n$是测试数据的个数,$y_i$是第$i$条记录的真实值(0或者1),$p_i$是你预测的第$i$条记录是1的概率。

很明显$\text{logloss}$的取值范围是$[0,+\infty)$。试想一下,有个记录的真实是1,但是你预测它是1的概率为0,$-\log 0$就是正无穷,你的$\text{logloss}$就是正无穷大。

所以你得到1.1是可能发生的。

LogLoss是越小越好,至于多小是好,并没有统一标准。这个要根据实际问题来看。我参加过两个用LogLoss做标准的比赛,一个比赛的第一名是0.01左右,另外一个是0.4左右。用其他数据的LogLoss作为自己模型的标准,参考意义不大。

batmanX   2017-04-13 09:26

4

可以参考这个(机器读中文2:“辨古识今”-排行榜)咯

感觉0.2到1之间吧


Beck   2017-12-03 13:32

2

我之前有过0.8的loglss,仅供参考

Gakki   2017-04-14 07:44

对于二元分类来说,0.8的logloss算是失败了吧 - 曾经是科比   2017-12-05 12:41
我同意,0.8的确算是非常差的。 - 木子周   2017-12-06 12:43
这么一看的确是的,0.8应该挺糟糕的 - Gakki   2018-01-02 11:17


  相关问题

cross entropy是什么意思?   1回答

怎么理解surrogate loss function代理损失函数?   2回答

Hamming Loss汉明损失的计算公式是什么?   1回答

python求logloss   1回答

Gini指数、Gini系数、Gini不纯是一回事吗?   2回答

逻辑回归的损失函数是怎么来的   1回答

多分类问题有没有类似LogLoss的模型评判标准?   1回答

Ridge,Lasso,ElasticNet的目标函数分别是什么?   1回答

泊松回归(poission regression)的损失函数是什么?   1回答

huber loss是什么?什么时候用?   1回答

最小二乘回归和线性回归   2回答

python里有没有huber loss的线性回归   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!