精华内容
下载资源
问答
  • Log Loss和AUC
    千次阅读
    2018-08-17 14:46:10
    • logloss和auc的区别:logloss主要是评估是否准确的,auc是用来评估是把正样本排到前面的能力,评估的方面不一样。
    • 对预测的pctr,乘以一个倍数,auc是不变的,因为相互的排序关系没有变,但是logloss会变。
    更多相关内容
  • AUC 反应的是正样本在负样本前面的概率问题,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
    所以我们需要根据我们的场景来理解这俩模型,并根据具体问题作出选择

    展开全文
  • 我们常用的指标,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也越低。

    展开全文
  • loglossAUC的区别

    2021-02-14 16:34:35
    AUC只在乎把正样本排到前面的能力,logloss更加注重评估的准确性,评估的方面不一样。 如果给预测值乘以一个倍数,则AUC不会变,但是logloss会变。
  • ROC与AUC是我看的很累的一节,主要是公式推导过程太复杂了,并且南瓜书上也没有写的特别明白计算... 计算三、loss1. 概念2. 计算四、参考 一、ROC 1. 概念 ROC全称是“受试者工作特征”(Receiver Operating Character.
  • AUC 理解

    2020-12-20 18:30:15
    AUC(Area under curve)是机器学习常用的...如果你经常关注数据挖掘比赛,比如 kaggle,那你会发现 AUC logloss 基本是最常见的模型评价指标。从AUC 判断分类器(预测模型)优劣的标准:AUC = 1,是完美分类器;AUC...
  • 上篇地址:YaqiLYU:人脸识别的LOSS(上)​zhuanlan.zhihu.comFeature NormalizationLiu Y, Li H, Wang X. Rethinking feature discrimination and polymerization for large-scale recognition [C]// NIPS ...
  • 在上一期内容中,我们介绍了当考察一个疾病预测模型好坏的时候,常常会关注到2个维度,一个是预测模型的区分度(Discrimination),它反映了该模型是否能够将患者非患者区分开来的能力;另一个维度是预测模型的校准...
  • 二分类时AUC和binary_logloss的不一致问题 今天在用LGBM算法对一个二分类的数据进行训练时: lgbm1 = lgbm.LGBMClassifier(num_leaves=10, learning_rate=0.05, n_estimators=2000, ) # n_estimators是循环次数,...
  • 介绍在这篇文章中,我们将了解什么是真正的梯度下降,为什么它变得流行,为什么AIML中的大多数算法都遵循这种技术。在开始之前,梯度下降实际上意味着什么?听起来很奇怪对吧!柯西是1847年第一个提出梯度下降的人...
  • 首先,我们看下面这个表格,假设有一批样本,一共有 个,其中有正样本( )负样本( ),通过二分类模型,我们也能得到预测出的正样本( )预测出的负样本( ),他们的关系如下 :预测为正样本,实际也是正样本。...
  • auc vs logloss

    千次阅读 2016-12-28 02:02:25
    auc 更多的关注的是排序的结果。...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 ,其中函数 是固定的,因此优化问题就可以写成如下形式: 其中 是参数空间, 在控制问题中叫做running cost,放在机器学习中可以理解为...
  • Dropout, 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 ...
  • 2.7 Adam Adam同时考虑了自适应学习率以及动量梯度,是RMSPropMomentum的结合,效果一般较好。参数更新公式如下: 是一阶动量的累加,保留了前一轮梯度方向信息的动量梯度,类似Momentum的做法; 是二阶动量的...
  • 0.001#误差m = len(x)count = 0loss = []for time in range(1000): count += 1 #求偏导theta0theta1的结果 temp0 = 0#J(θ)对θ0求导的结果 temp1 = 0#J(θ)对θ1求导的结果 diss = 0 for i in range(m): temp0 +=...
  • 之前各位的回答从各个角度解释了AUC的意义计算方法,但是由于本人实在愚钝,一直没能参透AUC的意义计算方法之间的联系,直到刚才突然有所顿悟,本着尽量言简意赅、浅显易懂的原则,在这里记录一下。首先,在试图...
  • 而对于LOSS中只有的y_pred这一项a相关,其余都是无关项(可以忽略),所以可以得到: Eq5: a的导数(2) 其中, Eq6: L/y_pred Eq7: y_pred/a 所以,综合 Eq 6Eq 7我们可以求到ga: Eq8: ga 同理,我们计算gb。...
  • 我就废话不多说了,大家还是直接看代码吧~ import tensorflow as tf from sklearn.metrics ...model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy', auroc]) 完整例子: def a
  • 3.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解决该问题,甚至可以直接将auc作为loss function 2.对l参数的影响主要是由正负样本数目多的一方决定,基本上参数是在拟合数目多的一方,使得数目多的一方预测准确,而忽略了对数目少的一方的拟合。 使用进阶...
  • tf2 自定义循环训练,并添加评估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:25
    xgboost如果想应用focal loss可以使用自定义损失函数来实现。 首先介绍一个比较好用的求导的python包 sympy。用这个包来求导,可以比较轻松求出一阶导二阶导。 from sympy import * import numpy as np # y指的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,534
精华内容 3,013
关键字:

auc 和loss

友情链接: booksystem.rar