开启生长之旅!这是我参与「日新计划 12 月更文挑战」的第3天,点击检查活动概况
分类问题就像披着羊皮的狼,看起来天真无害用起来天雷滚滚。比方在建模前你思考过下面的问题么?
- 你的分类模型输出的概率只是用来做样本间的相对排序,还是概率自身?
- 你的练习数据自身散布怎么是否存在Imbalanced Sample?
要是您都想到了拜拜。要是有一个您感爱好的问题,那就接着往下看吧。本来是想先回想一下各个分类问题中或许用到的metric,可是又觉得读的人或许觉得无聊,就分红了两章。要是有的方针断片了就来这儿回想一下: 回想篇
问题1 Rank or Probability?
分类问题能够依据对输出方式的要求分红两类
- 一种咱们只关怀排序。比方电商场景下,用户是否会回购某产品,咱们更关怀用户回购产品A的概率是否高于用户回购产品B的概率,然后把回购概率更高的产品放在引荐列表前面。这时分类问题其实是用来排序的。–样本间的相对排序比较比绝对概率更重要
- 另一种咱们关怀概率。比方现在咱们都在谈增长,咱们想知道一个用户明天在app活跃的概率,只知道用户A比用户B活跃的概率高并不行,咱们需求明确知道用户A活跃的概率,终究是90%还是50%,这样才干对高/低于特定概率的用户进行必定(促活/唤醒)操作。这时分类问题是对实在概率的估量 –样本的绝对概率需求接近实在概率,而且天极安稳
有人会问,上述两种需求终究对处理一个二分类问题有什么影响? 答案是丢失函数/点评方针
让咱们来看一个直观的比如,下图咱们尝试用LightGBM处理一个二分类问题,咱们挑选的拟合方针是最大化AUC。
X轴是猜测概率,Y轴是实在概率,蓝线是LGB的猜测成果,绿线对应实在概率=猜测概率。为什么模型的AUC高达98.93%(这儿还有ImbalancedSample的影响,让咱们先忽略这一点),可是猜测概率和实在概率却差到了姥姥家。
让咱们对猜测概率再做一层处理,黄线能够简略理解为咱们对LGB的猜测成果做了一层映射 p→f(p)\hat{p} \to f(\hat{p}),这时校准后的猜测概率和实在概率根本共同了。可是有趣的是校准后的猜测概率AUC = 98.94%和原始猜测根本没差别?!
**Duang Duang Duang!敲黑板!AUC是对相对概率排序的查验!**其实只需用心(我学AUC的时分必定没用心>_<)看一下AUC的核算方式就会发现,AUC只关怀给定各个阈值,把样本依照猜测概率分红0/1,并核算正负样本猜测的准确率。
举个最夏天的比如,两个瓜一个甜一个不甜,咱们练习一个西瓜模型来猜测它们甜(1)/不甜(0)。 模型1: 甜的瓜猜测概率是0.8,不甜的瓜猜测概率是0.1, 模型2: 甜的瓜猜测概率是0.51,不甜的瓜猜测概率是0.49 两个模型的AUC是相同的,由于它们都完美对两个瓜进行了分类。
所以当使用最大化AUC作为丢失函数时,当正负样本的猜测准确率不再进步,模型就会停止学习。这时模型的猜测概率并不是对实在概率的拟合。那怎么才干得到对实在概率的猜测? 答案是logloss/cros-entropy
咱们能够从两个视点来理解为什么logloss是对实在概率的估量
- 从极大似然估量的视点 logloss能够由极大似然函数取对数得到,最小化logloss对应的最大化似然函数。pip_i是对p(yi=1)p(y_i=1)的估量
- 从信息论的视点 不熟悉信息论的同学看这儿 Intro to Information Theory logloss也叫cross-entropy(穿插熵),用来衡量两个散布的相似程度。 穿插熵自身能够分解为P自身的信息熵+散布P和散布q之间的间隔。这儿P是样本的实在散布信息,信息熵必定。所以最小化穿插熵就变成了最小化散布p和q之间的间隔,也便是样本散布和模型估量间的间隔,如下
乍一看会觉得穿插熵和logloss长的不像一家人。由于在练习模型时散布p是从练习样本的散布中抽象得到的。二分类问题中C=2, 让咱们把上述穿插熵再推一步
所以下次处理分类问题,如果你的方针是核算对实在概率的估量的话,别选错方针哟�
爱好卡片- 猜测概率校准 其实黄线用了Isotonic Regression来校准猜测概率。是一种过后将猜测概率依据实在概率进行校准的办法。感爱好的能够看一下Reference里边的资料1,2。原理并不复杂,但在剖析特定算法,尤其是boosting,bagging类的调集算法为什么使用loggloss对概率估量仍旧会有偏的部分蛮有趣的
问题2 Imbalanced Sample ?
正负样本散布不均大概是分类问题中最常遇到的问题。正确处理Imbalane问题需求留意的并不只是点评方针,往往还要留意采样和练习集测试集的区分。但这儿咱们只讨论在处理样本散布不均的问题时,咱们应该挑选什么方针来点评模型体现。让咱们挨个来剔除不好用的方针。
举个极端的比如,100个样本里只有1个正样本
Accuracy
这种情况下即使咱们悉数猜测为负,咱们的准确率仍旧高达99%。所以Accuracy只适用于正负样本均匀散布的情况,由于它把正负样本的猜测准确率柔软在一起看了。
AUC
AUC是fpr和tpr(recall)组成的ROC的曲线下面积。还记得咱们在【回想篇】里边说过fpr,tpr是分别衡量在正负样本上的准确率的。
而fpr和tpr之间的trade-off,在正样本占比很小的情况下,这种trad-off会被样本量更大的一方主导。所以当正样本占比很小的时分,AUC往往会看起来过于优秀。
但就像硬币的正反面相同,从另一个视点看这也是AUC的长处,便是AUC自身不会很大的受到样本实践散布的影响,相同的模型相同的样本,你把正样本downsample /upsample 1倍,AUC不会有很大的改变。
下图来自An introduction to ROC analysis, 上面的AUC和PR是正负样本1:1的猜测体现,下面是1:10的体现。咱们会发现AUC根本没有改变,可是precision-recall发生了剧烈改变。
AP/AUCPR
AP是recall和precision组成的PR的曲线下面积。这儿recall和precision分别从实在散布和猜测散布两个视点衡量了对正样本的猜测准确率。说到这儿现已有人反应过来了。是的这一对trade-off方针都是针对正样本的,在核算中没有用到True negative.所以当你的数据集存在Imbalance的时分,AP一般会是更好的挑选。
你还遇到过啥问题嘞?欢迎留言
Reference
- www.kaggle.com/residentmai…
- Pedro G. Fonseca and Hugo D. Lopes. Calibration of Machine Learning Classifiers for Probability of Default Modelling
- en.wikipedia.org/wiki/Confus…
- Tom Fawcett,An introduction to ROC analysis