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

  统计/机器学习 监督式学习 损失函数
8

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

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

 

杨业勇   2017-04-10 11:39



   4个回答 
10

$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
9

先搞清楚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

3

可以参考这个(机器读中文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


相关问题

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

cross entropy是什么意思?   0回答

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

python求logloss   1回答

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

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

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

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

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

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

sklearn有没有生成混淆矩阵的函数?   1回答

sklearn里LogisticRegressionCV总是报错:Expected sequence or array-like, got estimator   1回答



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

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

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

我们谢绝答非所问。

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

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