二分类模型性能评价 2.0(ROC曲线,lift曲线,lorenz曲线)



参加工作后,对分类模型性能评价有了进一步的认识,所以我来试着更新一下理解。

http://chen.yi.bo.blog.163.com/blog/static/150621109201042641952619/

这是之前的1.0版本,里面有一些基本概念。

首先,ROC曲线是tpr与fpr的相关关系可视化,这种衡量所考虑的目的是在尽量少的误诊(假阳性率)基础上,尽可能多地检验出阳性个体。因此,我在网络上看到讨论ROC的大多都是医药工作者或者做信用评分的工程师。而ROC曲线在我们项目中则是比较不常用的一个指标。因为在市场营销方面,客户往往并不那么关心“误诊”(这或许也是一定程度的短视),他们更在乎的是产出以及投入产出比。因此,lift曲线和lorenz曲线是相对而言更常用的可视化指标。

其次,lift曲线也并不是那么常用。lift曲线很容易解释,就是“用模型以后使得我们投放广告的客户群的响应率有所提升”,而其表现形式则是不同挖掘深度所对应的不同提升度。相对于lorenz曲线来说,lift曲线跟ROC曲线有一个明显的特点:衡量模型在不同阈值下的表现。也就是说,这两种曲线描述的其实都是一堆模型的性能。(事实上lorenz曲线也是这样,但解释起来会更为隐蔽。)客户往往很困惑,他们想要明白的只是我们提供的这个模型的性能,而不是我们所采用的这种建模方法的性能。所以,很多时候lift不需要画曲线,单个或几个lift的数值本身就很有说服力并且很直观了。

最后,lorenz曲线是我们比较常用的表现手段。(至少我的领导是这样。)在分类模型的性能评价中,lorenz曲线是对投入产出的一种衡量,它的形状跟ROC很像。曲线的横轴是logit模型预测值(p)排序后的一系列分位点,纵轴是截止到相应分位点所对应的样本中"1"的量占全体"1"的比例。这么说可能很不清楚,先来贴个图。

可以认为,lorenz曲线的横轴就是lift曲线中涉及到的深度depth,也就是:将样本的预测为1的概率从大到小排序后,取前百分之几。通常会简化成十分位点,0%,10%,20%,...,90%,100%。而曲线的纵轴其实就是相对应的TPR。形象地说,就是我们面对着一堆人(1000个),这堆人里面有20个坏人,我们的目标就是抓坏人。通过模型计算,我们把这堆人按照可能是坏人的概率从大到小地排了队,然后我们抓取前一百名,在这前一百名里面,可能就有13个坏人了(因为这一百个人的是坏人的概率比较高嘛),也就是说我们只抓取10%的样本,但是抓到了65%的目标。从lift的角度也可以很好地理解这种提升效果,而lorenz则更形象地展示了这种投入产出比的含义。
从某种角度看,这里的lorenz曲线与洛伦兹曲线的原始意义是很相似的。洛伦兹曲线的本意是描述社会财富的不平均分配。 百度的解释:洛伦兹曲线(Lorenz curve),就是在一个总体(国家、地区)内,以最贫穷的人口计算起一直到最富有人口的人口百分比对应各个人口百分比的收入百分比的点组成的曲线。(我们这里可能是要反着排序。无伤大雅。)换一种更通俗的说法,这就是20/80原则——20%的人占据了80%的财富。lorenze曲线体现了这一点,通常是很早(20%)就达到比较高的水平(80%),然后再缓慢上升。
如果社会财富是平均分配的,那么lorenz曲线将会是一条对角线。(这条对角线跟ROC里面一样,是我们的对照组。)与之类似地,当没有模型的时候,坏人在人群中是平均分布的,这时的lorenz曲线也是一条对角线(也就是我们随机抓50%的人,这里面会抓到坏人的50%)。因此,lorenz曲线本质上是衡量了我们的模型对概率大小的排序的准确性——排序越准确,lorenz曲线就越远离对角线并凸向左上角。(这也跟ROC有点像。)
以上就是截至目前我对分类模型性能评价(主要是lorenz曲线)的一些理解,必然还需要进一步学习。
但是至少显然地,用lorenz曲线进行展示的时候可以加入很直观的解释,客户往往能够比较轻松地理解。所以领导让我写logit回归的时候,一并把lorenz曲线也画了出来。
 
 
早起上班。索性修改了之前画ROC的代码(那是仿照 《应用商务统计分析》里的例子写的),以便跟lorenz融合起来。
 
 
可以发现,ROC曲线跟lorenz曲线在形状上是很接近的。
我对此的理解是:在某种情况下,depth跟fpr是很接近的数字。这仍然可以从混淆矩阵看出来。
 
fpr = (b) / (a+b)
depth = (b+d) / (a+b+c+d) 
而某些情况下(例如我例子中使用的一个信用数据),实际值取1的样本是比较少的,
也就是说c和d都很小,结果就导致fpr跟depth在数字上很接近,从而使得ROC与lorenz曲线在形状上很相似。
最后照例是贴个代码。
 

你可能感兴趣的:(DM)