-
2018-08-17 14:46:10
- logloss和auc的区别:logloss主要是评估是否准确的,auc是用来评估是把正样本排到前面的能力,评估的方面不一样。
- 对预测的pctr,乘以一个倍数,auc是不变的,因为相互的排序关系没有变,但是logloss会变。
更多相关内容 -
模型训练的auc和loss比较问题
2021-11-04 12:00:01AUC 反应的是正样本在负样本前面的概率问题,AUC越大,说明正样本更靠前。 LOSS 反应的是真实值与预测值之前的差值,就是损失,LOSS越小,说明预测值越接近于真实值。在二分类问题中,LOSS越小,说明预测的样本预测...AUC 反应的是正样本在负样本前面的概率问题,AUC越大,说明正样本更靠前。
LOSS 反应的是真实值与预测值之前的差值,就是损失,LOSS越小,说明预测值越接近于真实值。在二分类问题中,LOSS越小,说明预测的样本预测值两极占比高(负样本更接近0,正样本更接近1)
例如:两个模型A B,一个auc高一些,但log也大一些。另一个auc低,但log也低。
A模型AUC高,说明它在判断哪个更好的方面,有着更好的表现,但是可能它比较“保守”,预估分都接近于正负样本的比例值(比如ctr=0.1,则预估分接近0.1)
B模型Logloss表现好,说明B模型可能比较“大胆”,对于正样本的预估更接近1,负样本预估更接近0,但是在区分谁好谁坏的相对值上,性能差于A
所以我们需要根据我们的场景来理解这俩模型,并根据具体问题作出选择 -
关于模型评估指标,可比性,LOSS,AUC,上下限
2020-12-20 18:30:17我们常用的指标,logloss,mse,auc(GAUC)等等。其他指标包括gini(2*AUC -1),PRauc,KS(max(TPR−FPR)),acc,precision,F1 score。对于预估分数的指标包括其分布的值,比如CoV(变异系数),std,avg,等等。还有别...模型评估可以从多维度多指标进行评估。
这里只谈论指标。
我们常用的指标,logloss,mse,auc(GAUC)等等。
其他指标包括gini(2*AUC -1),PRauc,KS(max(TPR−FPR)),acc,precision,F1 score。
对于预估分数的指标包括其分布的值,比如CoV(变异系数),std,avg,等等。还有别的指标,如oe等。
首先,需要明确,这些指标有没有可比性,在什么情况下有。
例如,在ctr预估中,logloss,mse在不同问题,不同数据集,不同评估维度下(数据集分片)没有直接可比性。因为logloss的大小和问题的难度成直接关联(问题越简单,logloss越小。这里指Bayesian Risk,例如一个问题中,ctr大概有2%,那么你预估所有商品都是0.02时,logloss= - 0.02 * ln 0.02 - 0.98 * ln 0.98 = 0.09,而ctr有50%时,盲猜0.5的logloss为0.67),所以,取决于问题,不可直接比。同理,因为一些数据的变化,不同的数据集,不同数据分片,也不具备可比性。
所以一般比较的对象都在相同的数据集上,我们去对比模型的相对差异。比如a模型比b模型logloss小了2%。
这些指标的含义
一般经验上来说,如果二分类(大多数在排序场景运用的话),用auc比较直接。在多分类的情况下,logloss更有参考意义(多分类一般都不是用做排序。在多分类情况下用auc评估的话,要看具体auc的计算实现方式【比如有的包就是直接每个类别单独当作二分类,然后计算多个auc加权起来等】)
auc是个rank statistic (i.e. scale invariant)
logloss是个 calibration statistic(对数据的分布【imbalance】等比较敏感。对于unequally distributed error cost (for example detection of a deadly disease)等,也会有偏差。不过,在有些情况下,比如广告等,logloss也是个重要的参考指标)
我们应该如何选取模型
例如:两个模型,一个auc高一些,但logloss也大一些。另一个auc低,但logloss也低。
即在performance上:
AUC:A>B
LogLoss:B>A
A模型AUC高,说明它在判断哪个更好的方面,有着更好的表现,但是可能它比较“保守”,预估分都接近于正负样本的比例值(比如ctr=0.1,则预估分接近0.1)
B模型Logloss表现好,说明B模型可能比较“大胆”,对于正样本的预估更接近1,负样本预估更接近0,但是在区分谁好谁坏的相对值上,性能差于A
所以我们需要根据我们的场景来理解这俩模型,并根据具体问题作出选择。
深入理解
1、信息熵:(Entropy,符号H)
信源单个信息不确定性的统计平均加和:E(-logPi)=-Pi*logPi( i=1...n)
H(p)代表了p这个信号的信息熵
1.1 联合熵:(H)
H(y,x) = -p(x,y) * log( p(x, y)) 求和
2、交叉熵:(Cross Entropy,符号 CEH)
用于度量两个分布的差异,CEH(p, q) = -p(x)*log(q(x)) 求和,称为交叉熵,交叉熵越小,认为两个随机事件越相近。在p固定的情况下,p=q时,取得最小值。
3、KL散度:(KL Divergency,符号KL)
比较变量X两个不同的分布,p,q
KL散度与交叉熵比较类似: KL(p,q) = CEH(p,q) - H(p)
在很多情况下,我们最优化KL散度与最优化交叉熵是一致的,那就是H(p)可以被视为常数的时候
例如,我们机器学习中经常用交叉熵做Loss【因为label是固定的】,此时最小化KL 散度与最小化交叉熵是等价的。
4、差异
一种信息论的解释是:
熵的意义是对A事件中的随机变量进行编码所需的最小字节数。
KL散度的意义是“额外所需的编码长度”如果我们用B的编码来表示A。
交叉熵指的是当你用B作为密码本来表示A时所需要的“平均的编码长度”
5、LogLoss与熵:
Logloss的下限,其实就取决于该问题场景的“信息熵”,信息熵代表了“不确定性”,不确定性越高(问题越难),下限的loss也越高。即:当我们对“信号发生概率在特征上的分布”一无所知的时候,即是预估所有样本(无论特征)都有一个相同概率时(信号全局的发生概率)那么这个LogLoss得出的值就等于熵(值等于熵不代表含义等价于熵)。对于一个二分类问题,当正负概率为0.5时,不确定性最高,这时候,熵也最大。当正负分类比例变化,熵也会变化,(相当于问题的难度也变化了),此时LogLoss也会有较大的变化。
当我们用交叉熵做Loss Function的时候,其实是在缩小在当前特征上“预估的分布”与“真实分布”之间的差距。当交叉熵为0的时候,即我们能通过特征完美地预估信号的发生时,这个信号,对于我们的模型来说,就是一个“在特征描述下确定性的东西”。【在特征X发生的条件下,信号Y发生的条件熵为0,H(Y|X)=H(Y,X) - H(X) = 0 】
其他:
条件熵:(这里针对的是两个变量,其联合概率)(区别于KL散度,交叉熵)
H(Y|X)=H(Y,X) - H(X)
可以这样理解,描述 X 和 Y 所需的信息是描述 X 自己所需的信息,加上给定 X 的条件下具体化 Y 所需的额外信息。这个额外的信息量即为条件熵,等于描述X,Y所需的信息减去描述X所需的信息。
gini 信息增益
G(Y,X) = H(Y)- H(Y|X)
= H(Y) + H(X) - H(Y,X)
当Y对于X的条件熵越小时(给定 X 的条件下具体化 Y 所需的额外信息,当条件熵为0时,即我们知道X的话不需要额外信息就能描述Y【比如离散变量能直接映射】),X对Y的信息增益越大(直觉上就是X更能帮助我们理解Y)
-
深入理解AUC
2021-01-12 17:19:41在机器学习的评估指标...AUC是什么在统计和机器学习中,常常用AUC来评估二分类模型的性能。AUC的全称是 area under the curve,即曲线下的面积。通常这里的曲线指的是受试者操作曲线(Receiver operating characteri...在机器学习的评估指标中,AUC是一个最常见也是最常用的指标之一。
AUC本身的定义是基于几何的,但是其意义十分重要,应用十分广泛。
本文作者深入理解AUC,并总结于下。
AUC是什么
在统计和机器学习中,常常用AUC来评估二分类模型的性能。AUC的全称是 area under the curve,即曲线下的面积。
通常这里的曲线指的是受试者操作曲线(Receiver operating characteristic, ROC)。
相比于准确率、召回率、F1值等依赖于判决阈值的评估指标,AUC则没有这个问题。
ROC曲线早在第二次世界大战期间就被使用在电子工程和雷达工程当中,被用于军事目标检测。
后来,ROC曲线也被应用到心理学、医学、机器学习和数据挖掘等领域的模型性能评估。
对于二分类问题,预测模型会对每一个样本预测一个得分s或者一个概率p。
然后,可以选取一个阈值t,让得分s>t的样本预测为正,而得分s
这样一来,根据预测的结果和实际的标签可以把样本分为4类:
正样本
负样本
预测为正
TP(真正例)
FP(假正例)
预测为负
FN(假负例)
TN(真负例)
随着阈值t选取的不同,这四类样本的比例各不相同。定义真正例率TPR和假正例率FPR为:
对于真正例率TPR,分子是得分>t里面正样本的数目,分母是总的正样本数目。
而对于假正例率FPR,分子是得分>t里面负样本的数目,分母是总的负样本数目。
因此,如果定义分别为得分大于t的样本中正负样本数目,为总的正负样本数目,
那么TPR和FPR可以表达为阈值t的函数
随着阈值t的变化,TPR和FPR在坐标图上形成一条曲线,这条曲线就是ROC曲线。
显然,如果模型是随机的,模型得分对正负样本没有区分性,那么得分大于t的样本中,正负样本比例和总体的正负样本比例应该基本一致。
也就是说
结合上面的式子可知TPR和FPR相等,对应的ROC曲线是一条直线!
反之,如果模型的区分性非常理想,也就是说正负样本的得分可以完全分开,所有的正样本都比负样本得分高,此时ROC曲线表现为「 字形。
因为正例得分都比负例搞,所以要么TPR=0要么FPR=0!
实际的模型的ROC曲线则是一条上凸的曲线,介于随机和理想的ROC曲线之间。而ROC曲线下的面积,即为AUC!
这里的x和y分别对应TPR和FPR,也是ROC曲线的横纵坐标。
AUC的概率解释
概率解释的证明
AUC常常被用来作为模型排序好坏的指标,原因在于AUC可以看做随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率!
这个结论很容易证明,考虑随机取得这对正负样本中,负样本得分在之间的概率为
如果很小,那么该正样本得分大于该负样本的概率为
所以,
注意积分区间,对应ROC图像最右上角的点,而对应ROC图像最左下角的点。所以,计算面积是。
可以看出,积分项里面实际上是这样一个事件的概率:随机取一对正负样本,负样本得分为t且正样本大于t!
因此,对这个概率微元积分就可以到正样本得分大于负样本的概率!
AUC的排序特性
根据上述概率解释,AUC实际上在说一个模型把正样本排在负样本前面的概率!
所以,AUC常用在排序场景的模型评估,比如搜索和推荐等场景!
这个解释还表明,如果将所有的样本的得分都加上一个额外的常数,并不改变这个概率,因此AUC不变!
因此,在广告等需要绝对的点击率场景下,AUC并不适合作为评估指标,而是用logloss等指标。
AUC对正负样本比例不敏感
利用概率解释,还可以得到AUC另外一个性质,对正负样本比例不敏感。
在训练模型的时候,如果正负比例差异比较大,例如正负比例为1:1000,训练模型的时候通常要对负样本进行下采样。当一个模型训练完了之后,用负样本下采样后的测试集计算出来的AUC和未采样的测试集计算的AUC基本一致,或者说前者是后者的无偏估计!
如果采样是随机的,对于给定的正样本,假定得分为,那么得分小于的负样本比例不会因为采样而改变!
例如,假设采样前负样本里面得分小于的样本占比为70%,如果采样是均匀的,即的负样本和的负样本留下的概率是相同的,那么显然采样后这个比例仍然是70%!
这表明,该正样本得分大于选取的负样本的概率不会因为采样而改变,也就是是不变的,因此,AUC也不变!
相比于其他评估指标,例如准确率、召回率和F1值,负样本下采样相当于只将一部分真实的负例排除掉了,然而模型并不能准确地识别出这些负例,所以用下采样后的样本来评估会高估准确率;因为采样只对负样本采样,正样本都在,所以采样对召回率并没什么影响。这两者结合起来,最终导致高估F1值!
AUC的计算
AUC可以直接根据ROC曲线,利用梯形积分进行计算。此外,还有一个比较有意思的是,可以
利用AUC与Wilcoxon-Mann-Whitney测试的U统计量的关系,来计算AUC。这可以从AUC的概率意义推导而来。
假设我们将测试集的正负样本按照模型预测得分 从小到大 排序,对于第个正样本,假设它的排序为 ,
那么说明排在这个正样本前面的总样本有 个,其中正样本有 个(因为这个正样本在所有的正样本里面排第j),
所以排在第j个正样本前面(得分比它小)的负样本个数为 个。也就是说,对于第j个正样本来说,其得分比随机取的一个负样本大(排序比它靠后)的概率是 ,其中是总的负样本数目。所以,平均下来,随机取的正样本得分比负样本大的概率为
所以
因此,很容易写出计算AUC的SQL代码
select
(ry - 0.5*n1*(n1+1))/n0/n1 as auc
from(
select
sum(if(y=0, 1, 0)) as n0,
sum(if(y=1, 1, 0)) as n1,
sum(if(y=1, r, 0)) as ry
from(
select y, row_number() over(order by score asc) as r
from(
select y, score
from some.table
)A
)B
)C
AUC的优化
采用极大似然估计对应的损失函数是logloss,因此极大似然估计的优化目标并不是AUC。
在一些排序场景下,AUC比logloss更贴近目标,因此直接优化AUC可以达到比极大似然估计更好的效果。
实际上,pairwise的目标函数就可以看做一种对AUC的近似。因为损失函数都是作用与正负样本得分差之上!
例如,
rank-SVM
rank-net
指数损失
TOP 损失
显然,这些损失函数都是对的正负样本对进行惩罚!
此外,也有一些其它对AUC近似度更好的损失函数,例如
分别表示正例和负例的得分。
这解释了为什么某些问题中,利用排序损失函数比logloss效果更好,因为在这些问题中排序比概率更重要!
AUC要到多少才算好的模型
AUC越大表示模型区分正例和负例的能力越强,那么AUC要达到多少才表示模型拟合的比较好呢?在实际建模中发现,预测点击的模型比预测下单的模型AUC要低很多,在月活用户里面预测下单和日活用户里面预测下单的AUC差异也很明显,预测用户未来1小时下单和预测未来1天的下单模型AUC差异也很大。这表明,AUC非常依赖于具体任务。
以预测点击和预测下单为例,下单通常决策成本比点击高很多,这使得点击行为比下单显得更加随意,也更加难以预测,所以导致点击率模型的AUC通常比下单率模型低很多。
那么月活用户和日活用户那个更容易区分下单与不下单用户呢?显然月活用户要容易一些,因为里面包含很多最近不活跃的用户,所以前者的AUC通常要高一些。
对于预测1小时和预测1天的模型,哪一个更加困难?因为时间越长,用户可能发生的意料之外的事情越多,也越难预测。举个极端的例子,预测用户下一秒中内会干啥,直接预测他会做正在干的事情即可,这个模型的准确率就会很高,但是预测长期会干啥就很困难了。所以对于这两个模型,后者更加困难,所以AUC也越低。
-
logloss与AUC的区别
2021-02-14 16:34:35AUC只在乎把正样本排到前面的能力,logloss更加注重评估的准确性,评估的方面不一样。 如果给预测值乘以一个倍数,则AUC不会变,但是logloss会变。 -
机器学习学习笔记(2)——ROC、AUC与loss公式的推导过程
2020-08-22 21:06:48ROC与AUC是我看的很累的一节,主要是公式推导过程太复杂了,并且南瓜书上也没有写的特别明白计算... 计算三、loss1. 概念2. 计算四、参考 一、ROC 1. 概念 ROC全称是“受试者工作特征”(Receiver Operating Character. -
AUC 理解
2020-12-20 18:30:15AUC(Area under curve)是机器学习常用的...如果你经常关注数据挖掘比赛,比如 kaggle,那你会发现 AUC 和 logloss 基本是最常见的模型评价指标。从AUC 判断分类器(预测模型)优劣的标准:AUC = 1,是完美分类器;AUC... -
loss下降auc下降_人脸识别的LOSS(下)
2020-11-15 15:54:05上篇地址:YaqiLYU:人脸识别的LOSS(上)zhuanlan.zhihu.comFeature NormalizationLiu Y, Li H, Wang X. Rethinking feature discrimination and polymerization for large-scale recognition [C]// NIPS ... -
loss下降auc下降_比较两个疾病模型的预测能力,AUC和NRI了解一下?
2020-11-19 22:59:16在上一期内容中,我们介绍了当考察一个疾病预测模型好坏的时候,常常会关注到2个维度,一个是预测模型的区分度(Discrimination),它反映了该模型是否能够将患者和非患者区分开来的能力;另一个维度是预测模型的校准... -
二分类时AUC和binary_logloss的不一致问题
2021-06-22 15:10:48二分类时AUC和binary_logloss的不一致问题 今天在用LGBM算法对一个二分类的数据进行训练时: lgbm1 = lgbm.LGBMClassifier(num_leaves=10, learning_rate=0.05, n_estimators=2000, ) # n_estimators是循环次数,... -
loss下降auc下降_理解梯度下降
2020-11-18 18:13:25介绍在这篇文章中,我们将了解什么是真正的梯度下降,为什么它变得流行,为什么AI和ML中的大多数算法都遵循这种技术。在开始之前,梯度下降实际上意味着什么?听起来很奇怪对吧!柯西是1847年第一个提出梯度下降的人... -
二分类评估指标F1 & AUC & LogLoss
2020-12-20 18:30:14首先,我们看下面这个表格,假设有一批样本,一共有 个,其中有正样本( )和负样本( ),通过二分类模型,我们也能得到预测出的正样本( )和预测出的负样本( ),他们的关系如下 :预测为正样本,实际也是正样本。... -
auc vs logloss
2016-12-28 02:02:25auc 更多的关注的是排序的结果。...auc 与 logloss 关系比如 1 1 0 1 预测值 为 0.5 0.5 0.3 0.5 那么 auc 是 1 我们提升预测值到 0.7 0.7 0.4 0.7那么 auc 依然是1 但是 logloss 有了很大的提升。 ... -
loss下降auc下降_替代梯度下降——基于极大值原理的深度学习训练算法
2020-11-19 20:04:26方便起见,我们还是先讨论时间连续的情况,对于最终状态 ,可以计算它的loss ,其中函数 是固定的,因此优化问题就可以写成如下形式: 其中 是参数空间, 在控制问题中叫做running cost,放在机器学习中可以理解为... -
keras绘制acc和loss曲线图实例
2020-12-30 09:52:34Dropout, Activation from keras.optimizers import SGD, Adam, RMSprop from keras.utils import np_utils import matplotlib.pyplot as plt %matplotlib inline #写一个LossHistory类,保存loss和acc class ... -
loss下降auc下降_优化算法之梯度下降算法整理
2020-11-18 18:13:372.7 Adam Adam同时考虑了自适应学习率以及动量梯度,是RMSProp和Momentum的结合,效果一般较好。参数更新公式如下: 是一阶动量的累加,保留了前一轮梯度方向信息的动量梯度,类似Momentum的做法; 是二阶动量的... -
loss下降auc下降_梯度下降(GD)
2020-11-18 18:13:380.001#误差m = len(x)count = 0loss = []for time in range(1000): count += 1 #求偏导theta0和theta1的结果 temp0 = 0#J(θ)对θ0求导的结果 temp1 = 0#J(θ)对θ1求导的结果 diss = 0 for i in range(m): temp0 +=... -
如何理解机器学习和统计中的AUC?
2020-12-30 09:52:33之前各位的回答从各个角度解释了AUC的意义和计算方法,但是由于本人实在愚钝,一直没能参透AUC的意义和计算方法之间的联系,直到刚才突然有所顿悟,本着尽量言简意赅、浅显易懂的原则,在这里记录一下。首先,在试图... -
loss下降auc下降_「五分钟机器学习:进阶篇」梯度下降(Gradient Descent)
2020-11-18 18:13:20而对于LOSS中只有的y_pred这一项和a相关,其余都是无关项(可以忽略),所以可以得到: Eq5: a的导数(2) 其中, Eq6: L/y_pred Eq7: y_pred/a 所以,综合 Eq 6和Eq 7我们可以求到ga: Eq8: ga 同理,我们计算gb。... -
keras用auc做metrics以及早停实例
2020-12-17 10:34:04我就废话不多说了,大家还是直接看代码吧~ import tensorflow as tf from sklearn.metrics ...model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy', auroc]) 完整例子: def a -
loss下降auc下降_pytorch基础3:梯度下降算法
2020-11-18 18:13:433.1535329869958857 Epoch 3 w= 1.3242429313580246 loss= 2.592344272332262 Epoch 4 w= 1.3873135910979424 loss= 2.1310222071581117 Epoch 5 w= 1.4444976559288012 loss= 1.7517949663820642 Epoch 6 w= 1.... -
正负样本不均衡会带来的问题以及使用auc评估模型,focal lossfunction解决问题
2021-05-01 19:12:01使用auc解决该问题,甚至可以直接将auc作为loss function 2.对l参数的影响主要是由正负样本数目多的一方决定,基本上参数是在拟合数目多的一方,使得数目多的一方预测准确,而忽略了对数目少的一方的拟合。 使用进阶... -
tf2 自定义循环训练,添加metrics(acc、auc、precision、recall)
2022-01-26 15:53:54tf2 自定义循环训练,并添加评估acc、auc、精确率、召回率 -
加了权重样本的AUC如何计算
2020-08-06 11:42:36加了权重的样本的AUC如何计算?roc_auc_score函数里sample_weight参数以及xgb模型赋予样本权重再评估都有用到哦~ 一、 roc_auc_score函数中有个参数是sample_weight,可以给样本设置权重。一直不太理解加上weight... -
xgboost + Focal Loss实现
2020-08-25 14:07:25xgboost如果想应用focal loss可以使用自定义损失函数来实现。 首先介绍一个比较好用的求导的python包 sympy。用这个包来求导,可以比较轻松求出一阶导和二阶导。 from sympy import * import numpy as np # y指的...