1.混淆矩阵(Confusion matrix)
混淆矩阵是理解大多数评价指标的基础,毫无疑问也是理解AUC的基础。这里用一个经典图来解释混淆矩阵是什么。
显然,混淆矩阵包含四部分的信息:
- True negative(TN),称为真阴率,表明实际是负样本预测成负样本的样本数
- False positive(FP),称为假阳率,表明实际是负样本预测成正样本的样本数
- False negative(FN),称为假阴率,表明实际是正样本预测成负样本的样本数
- True positive(TP),称为真阳率,表明实际是正样本预测成正样本的样本数
对照着混淆矩阵记忆方法:我们按照位置前后分为两部分记忆,只要预测正确(实际与预测同正或同负)就是真,预测错误(实际与预测一正一负)就是假。后面的部分代表着预测的结果,预测成正就是阳,预测成负就是阴。
我所知道的几乎所有评价指标,都是建立在混淆矩阵基础上的,包括准确率、精准率、召回率、F1-score,当然也包括AUC。
-
1. 召回率/查全率 (Recall) 实际值-->预测值
召回率是相对于样本而言的,实际为正样本的被预测为正样本的概率,这样的有TP个,所有的正样本有两个去向,一个是被判为正的,另一个是错判为负的,因此总共有TP+FN个,所以,召回率 R= TP / (TP+FN)
-
2. 查准率(Precision) 实际值<--预测值
精确率是相对于预测结果而言的,它表示的是预测为正的样本中实际为正样本的概率;那么预测为正的样本就有两种可能来源,一种是把正的预测为正的,这类有TruePositive个, 另外一种是把负的错判为正的,这类有FalsePositive个,因此精确率即:P=TP/(TP+FP)
-
3. 准确率 (Accuracy)
准确率是指有在所有的判断中有多少判断正确的,即把正的判断为正的,还有把负的判断为负的;总共有 TP + FN + FP + TN 个,所以准确率:(TP+TN) / (TP+TN+FN+FP)
-
4. F1-score 和均值
例如:如果模型预测为正样本的阈值很低时(几乎所有样本都预测为正样本):FN会很小,FP会很大,这样 pre会 很小,recall 会很大。
如果模型预测为正样本的阈值很高时(几乎所有样本都预测为负样本):TP会很小,FP约等于0,FN会很大,这样pre会很大,recall会很小。
2. ROC曲线
Ref: AUC计算方法总结_auc: 0.7308553465134306_CodingALife的博客-CSDN博客
真阳率: 实际为正样本,预测也为正样本的概率TPR=TP/(TP+FN)
假阳率: 实际为负样本,预测也为正样本的概率FPR=FP/(FP+TN)
(1)ROC曲线的横轴是FPR=FP/(FP+TN),纵轴是TPR=TP/(TP+FN),随着阈值的增大,ROC曲线由(0,0),增大到(1,1) ,
(2)ROC反应了分类器的分类能力好坏,ROC曲线在斜对角线以下,则表示该分类器效果差于随机分类器,反之,效果好于随机分类器,当然,我们希望ROC曲线尽量处于斜对角线以上,也就是向左上角(0,1)凸,其中左上角(0,1)位置最好表示,完全将正负样本分对。
(3)我们用ROC曲线下的面积AUC的值来直观的反应模型的分类能力。
记忆宝典:首先介绍AUC(2种),为什么用AUC?(2)AUC的计算(2),AUC的不足(2)
3. AUC
(1)AUC介绍
- 第一种解释:是基于ROC线下面积,结合ROC曲线说明。
- 第二种解释:反应模型将正样本排在负样本前面的概率。
例如0.7的AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。
(2)为什么选择AUC 进行模型评估:
- AUC关注排序效果,因此特别适合排序业务,而accuracy、precision、recall 则关注分类效果。
- AUC对负样本采样不敏感,可以用于采样后的模型评估。负采样会改变accuracy、precision的值
(3)AUC对负样本采样不敏感
- ①即假设采样是随机的,采样完成后,给定一条正样本,模型预测为score1,由于采样随机,则大于score1的负样本和小于score1的负样本的比例不会发生变化,FPR没有发生变化,TPR也没有发生变化。
- ②但如果采样不是均匀的,比如采用word2vec的negative sample,其负样本更偏向于从热门样本中采样,则会发现auc值发生剧烈变化。
(4)不均匀负采样对CTR(排序模型计算的score)的影响
负采样会是预测的score 大于真实的score,所以要进行修正。
负采样后的预测值
修正后的预测值
(5)AUC的计算:
- 从大到小,把每一个输出概率作为分类阈值,统计该分类阈值下的TPR和FPR,绘制ROC曲线计算面积(实际工程中)。 AUC及TensorFlow AUC计算相关_wtrnash的博客-CSDN博客
- 统计这M*N对样本里,正样本的预测概率大于负样本的预测概率的个数在总样本对M*N的占比。又可以细分为两种 AUC的计算方法_auc计算_kingsam_的博客-CSDN博客 、谈auc的计算 - 知乎 AUC的三种计算方法及代码_auc计算代码-CSDN博客全
- AUC值计算与实现 - 简书
- AUC 和 gauc ks - 知乎 有gauc的计算
(6)AUC的不足:
- 线上会出现新样本,在线下没有见过,造成AUC不足。这部分更多是采用online learning的方式去缓解,AUC本身可改进的不多。
- 线上的排序发生在一个用户的session下,而线下计算全集AUC,即把user1点击的正样本排序高于user2未点击的负样本是没有实际意义的,但线下auc计算的时候考虑了它。阿里在论文:DIN中提出了group auc来处理上述问题。gauc是先求单用户推荐列表的auc,然后再平均得到gauc,但是单用户行为没有那么多的时候,会抖动,大部分公司还是用AUC比较多
(7)线下AUC提升为什么不能带来线上效果提升? 链接
① 样本数据:线下评测基于历史出现样本,而线上测试存在新样本。因此线下AUC提升可能只是在历史出现样本上有提升,但是对于线上新样本可能并没有效果。
②特征:线上和线下特征不一致。例如包含时间相关特征,存在特征穿越。或者线上部分特征缺失等等。要严格保证线上线下的特征一致性,最根本的方法就是同一套代码和数据源抽取特征,业内目前通用的方法就是,在线实时请求打分的时候落地实时特征,训练的时候就没有特征拼接的流程,只需要关联label,生成正负样本即可。
② 特征穿越: (特征穿越本质上是,特征中包含了未来的信息) 离线训练时是否发生了特征穿越的情况 谨防样本穿越。比如样本中有时间序类的特征,但train、test的数据切分没有考虑时间因子,则容易造成穿越。
③ 评估目标:AUC计算的时候,不仅会涉及同一个用户的不同item,也会涉及不同用户的不同item,而线上排序系统每次排序只针对同一个用户的不同item进行打分。
④ 离线训练和线上预测用的数据分布不一致:离线训练用的是有偏的冰山上的数据,相当于都是在拟合老模型产生的样本,而在线上预估的时候,需要预测的是整个冰山的数据,包括大量冰面以下的数据!
Ref: 乱弹机器学习评估指标AUC - 知乎 乱弹机器学习评估指标AUC
https://www.cnblogs.com/qiulinzhang/p/9513513.html AUC及TensorFlow AUC计算相关
AUC及TensorFlow AUC计算相关_wtrnash的博客-CSDN博客
其他评估指标
比如覆盖率、多样性、新颖性、实时性(新闻)、准确率、查全率/查准率、用户满意度等。