7.4 模型效果评价的主要指标体系

模型的评价指标和评价体系是建模过程中的一个重要环节,不同类型的项目、不同类型的模型有各自的评价指标和体系。在7.2节我们也提到,从第8章一直到第13章将针对不同类型的模型分别进行详述,包括相应的技术、思路、应用、技巧,当然也包括相应的评价体系和指标,所以本节不再重复。本节将重点介绍关于目标变量是二元变量(即是与否,1与0)的分类(预测)模型的评价体系和评价指标。之所以在这里强调目标变量是二元变量的分类(预测)模型(Binary Models),主要是因为在数据化运营实践场景中,大量的模型属于二元变量的分类(预测)模型,比如预测用户是否响应运营活动、预测用户是否会流失、预测用户是否在最近1个月内会购买某产品等;而且,这类二元变量的分类(预测)模型相比于其他类型的模型来说有更多的评价维度和评价指标,也更繁杂。

7.4.1 评价模型准确度和精度的系列指标

在介绍系列指标之前,先明确以下4个基本的定义:

❑True Positive(TP):指模型预测为正(1)的,并且实际上也的确是正(1)的观察对象的数量。

❑True Negative(TN):指模型预测为负(0)的,并且实际上也的确是负(0)的观察对象的数量。

❑False Positive(FP):指模型预测为正(1)的,但是实际上是负(0)的观察对象的数量。

❑False Negative(FN):指模型预测为负(0)的,但是实际上是正(1)的观察对象的数量。

上述4个基本定义可以用一个表格形式简单地体现,如表7-1所示。

00051.jpeg

基于上面的4个基本定义,可以延伸出下列评价指标:

❑Accuracy(正确率):模型总体的正确率,是指模型能正确预测、识别1和0的对象数量与预测对象总数的比值,公式如下:

00052.jpeg

❑Error rate(错误率):模型总体的错误率,是指模型错误预测、错误识别1和0观察对象的数量与预测对象总数的比值,也即1减去正确率的差,公式如下:

00053.jpeg

❑Sensitivity(灵敏性):又叫击中率或真正率,模型正确识别为正(1)的对象占全部观察对象中实际为正(1)的对象数量的比值,公式如下:

00054.jpeg

❑Specificity(特效性):又叫真负率,模型正确识别为负(0)的对象占全部观察对象中实际为负(0)的对象数量的比值,公式如下:

00055.jpeg

❑Precision(精度):模型的精度是指模型正确识别为正(1)的对象占模型识别为正(1)的观察对象总数的比值,公式如下:

00056.jpeg

❑False Positive Rate(错正率):又叫假正率,模型错误地识别为正(1)的对象数量占实际为负(0)的对象数量的比值,即1减去真负率Specificity,公式如下:

00057.jpeg

❑Negative Predictive Value(负元正确率):模型正确识别为负(0)的对象数量占模型识别为负(0)的观察对象总数的比值,公式如下:

00058.jpeg

❑False Discovery Rate(正元错误率):模型错误识别为正(1)的对象数量占模型识别为正(1)的观察对象总数的比值,公式如下:

00059.jpeg

可以很容易地发现,正确率是灵敏性和特效性的函数:

00060.jpeg

上述各种基本指标,从各个角度对模型的表现进行了评估,在实际业务应用场景中,可以有选择地采用其中某些指标(不一定全部采用),关键要看具体的项目背景和业务场景,针对其侧重点来选择。

另一方面,上述各种基本指标看上去很容易让人混淆,尤其是与业务方讨论这些指标时更是如此,而且这些指标虽然从各个不同角度对模型效果进行了评价,但指标之间是彼此分散的,因此使用起来需要人为地进行整合。

鉴于此,在实际业务应用中,数据分析师更多使用的是其他一些可帮助综合性判断的指标,这些就是7.4.2~7.4.4节将要介绍的ROC曲线、KS值和Lift值。

7.4.2 ROC曲线

ROC曲线是一种有效比较(或对比)两个(或两个以上)二元分类模型(Binary Models)的可视工具,ROC(Receiver Operating Characteristic,接收者运行特征)曲线来源于信号检测理论,它显示了给定模型的灵敏性(Sensitivity)真正率与假正率(False Positive Rate)之间的比较评定。给定一个二元分类问题,我们通过对测试数据集的不同部分所显示的模型可以正确识别“1”实例的比例与模型将“0”实例错误地识别为“1”的比例进行分析,来比较不同模型的准确率的比较评定。真正率的增加是以假正率的增加为代价的,ROC曲线下面的面积就是比较模型准确度的指标和依据。面积大的模型对应的模型准确度要高,也就是要择优应用的模型。面积越接近0.5,对应的模型的准确率就越低。

图7-1是两个分类模型所对应的ROC曲线图,其横轴是假正率,其纵轴是真正率,该图同时显示了一条对角线。ROC曲线离对角线越近,模型的准确率就越低。从排序后的最高“正”概率的观察值开始,随着概率从高到低逐渐下降,相应的观察群体里真正的“正”群体则会逐渐减少,而假“正”真“负”的群体则会逐渐增多,ROC曲线也从开始的陡峭变为逐渐水平了。图中最上面的曲线所代表的神经网络模型(Neural)的准确率就要高于其下面的曲线所代表的逻辑回归模型(Reg)的准确率。

要绘制ROC曲线,首先要对模型所做的判断即对应的数据做排序,把经过模型判断后的观察值预测为正(1)的概率从高到低进行排序(最前面的应该是模型判断最可能为“正”的观察值),ROC曲线的纵轴(垂直轴)表示真正率(模型正确判断为正的数量占实际为正的数量的比值),ROC曲线的横轴(水平轴)表示假正率(模型错误判断为正的数量占实际为负的数量的比值)。具体绘制时,要从左下角开始,在此真正率和假正率都为0,按照刚才概率从高到低的顺序,依次针对每个观察值实际的“正”或“负”进行ROC图形的绘制,如果它是真正的“正”,则在ROC曲线上向上移动并绘制一个点;如果它是真正的“负”,则在ROC曲线上向右移动并绘制一个点。对于每个观察值都重复这个过程(按照预测为“正”的概率从高到低的顺序来绘制),每次对实际上为“正”的在ROC曲线上向上移动一个点,对实际为“负”的在ROC曲线向右移动一个点[1]。当然了,很多数据挖掘软件包已经可以自动实现对ROC曲线的展示了,所以更多的时候只是需要知道其中的原理,并且知道如何评价具体模型的ROC曲线就可以了。

00061.jpeg

图 7-1 两个分类模型的ROC曲线

[1]JiaweiHan,MichelineKamber.数据挖掘概念与技术[M].2版.范明,孟小峰,译.北京:机械工业出版社,2006.

7.4.3 KS值

KS值也是比较常用的一种判断二元分类(预测)模型准确度的方法,该方法来源于统计学中的Kolmogorov-Smirnov Test。KS值在评价二元分类模型的预测能力时,主要体现在:如果KS值越大,表示模型能够将正(1)、负(0)客户区分开来的程度越大,模型预测的准确性也就越高。通常来讲,KS大于0.2就表示模型有比较好的预测准确性了。

如何绘制KS曲线呢?其操作步骤如下:

1)将测试集里所有的观察对象经过模型打分预测出各自为正(1)的概率,然后将这个概率的值按照从高到低的顺序排序(排在最前面的当然是模型预测其为正(1)的概率最大的观察对象),如图7-2所示。

00062.jpeg

图 7-2 KS曲线绘制步骤1)示意图

2)分别计算(从高到低)每个概率数值分数所对应的实际上为正(1)、负(0)的观察对象的累计值,以及它们分别占全体总数,实际正(1)或负(0)的总数量的百分比,如图7-3所示。

00063.jpeg

图 7-3 KS曲线绘制步骤2)示意图

3)将这两种累计的百分比与评分分数绘制在同一张图上,得到KS曲线,如图7-4所示。

00064.jpeg

图 7-4 KS曲线绘制步骤3)示意图

4)各分数对应下累计的、真正的正(1)观察对象的百分比与累计的、真正的负(0)观察对象的百分比之差的最大值就是KS值。在本示范中,KS值为46.7%,如图7-5所示。

00065.jpeg

图 7-5 KS曲线绘制步骤4)示意图

7.4.4 Lift值

虽然前几节分享了不同的评价指标和方法,但是在数据挖掘建模的业务实践中,用得最多的评价模型方法其实是Lift值,它直观、通俗易懂,容易为业务方理解,更重要的是这种方法可以根据业务需要的不同,直接显示对应不同目标群体规模(不同数量规模)的模型效果,方便业务应用时挑选最恰当的受众群体规模。比如,挑选打分人群里预测分数最高的10%的人群,还是20%的人群,或者是40%的人群等。

Lift值是如何计算的呢?我们知道,二元分类(预测)模型在具体的业务场景中,都有一个Random Rate,所谓Random Rate,是指在不使用模型的时候,基于已有业务效果的正比例,也就是不使用模型之前“正”的实际观察对象在总体观察对象中的占比,这个占比也称作“正”事件的随机响应概率。如果经过建模,有了一个不错的预测模型,那么这个模型就可以比较有效锁定(正确地分类出、预测出大多数的“正”的观察对象)群体了,所谓“有效”是指在预测概率的数值从高到低的排序中,排名靠前的观察值中,真正的“正”观察值在累计的总观察值里的占比应该是高于Random Rate的。

举例来说,某二元分类(预测)模型针对10 000名潜在用户打分(预测其购买某产品的可能性),Random Rate为9%,即其中有900人会实际购买该产品,将这10 000名用户经过模型打分后所得的(购买某产品可能性)概率分数从高到低进行排序,如果排名前10%的用户,即1000名概率最高的用户里实际购买产品的用户数量为600人,那么与Random Rate相比较,可得出排名前10%的用户其实际购买率的Lift值为6.67。

00066.jpeg

00067.jpeg

上述两种算法,得到的结果都是6.67,两种算法的思路有什么区别?为什么它们可以殊途同归?感兴趣的读者可以自己进行揣摩和思考。

上述两种算法,引出了跟Lift相关且在模型评估中也常常用到的两个评价指标,分别是响应率(%Response)和捕获率(%Captured Response),这两个指标反映的是与Lift基本相同的意思,都是评估模型的效果和效率,但是它们比Lift更加直观,更加容易理解,因此在实践中,尤其是在与业务方交流、沟通模型效果评价时)经常采用。

对%Response和%Captured Response的应用,也如Lift的应用一样,首先要把经过模型预测后的观察对象按照预测概率的分数从高到低进行排序,然后对这些排序后的观察对象按照均等的数量划分成10个区间,或者20个区间,每个区间里观察对象的数量一致(概率分数的顺序不变),这样各个区间可以被命名为排序最高的前10%的对象、排序最高的前20%的对象等。

响应率是指上述经过概率分数排序后的某区间段或累计区间观察对象中,属于正(1)的观察对象占该区间或该累计区间总体观察对象数量的百分比。很明显,响应率越大,说明在该区间或该累计区间模型的预测准确度越高,如图7-6所示。

00068.jpeg

图 7-6 模型响应率曲线

从图7-6可以发现,最上面的一条线是神经网络模型的响应率曲线,在概率得分从高到低排序的前10%的观察对象中,有70%是实际上属于正(1)的;前20%的观察对象中,有将近63%是实际上属于正(1)的,在后面的观察对象也可以依次找出对应的响应率。

捕获率是指上述经过概率分数排序后的某区间段或累计区间的观察对象中,属于正(1)的观察对象占全体观察对象中属于正(1)的总数的百分比。捕获率顾名思义就是某区间或累计区间模型可以抓住的正(1)的观察对象占总体,正(1)的观察对象的比例,如图7-7所示。

从图7-7可以看出,最上面的一条线是神经网络模型的捕获率曲线,在概率得分从高到低排序的前10%的观察对象中,实际是正(1)的观察对象占全部正(1)总体数量的近25%;前20%的观察对象中,实际是正(1)的观察对象占全部正(1)总体数量的近44%。

00069.jpeg

图 7-7 模型捕获率曲线

7.4.5 模型稳定性的评估

到目前为止,本章对于模型评估的内容都是侧重于模型本身的精度、准确度、效果、效率等的总结和分享。其实,对于模型的评估主要是从两个方面来进行考虑的,一方面就是模型的精度、准确度、效果、效率等,如前面所介绍的内容,另一方面就是对模型稳定性的评估。一个模型无论多么准确,多么有效,如果其表现不稳定,也是无法投入业务落地应用的。

一个模型搭建完成后,即使它在训练集和验证集里表现都令人满意,也并不能说现在这个模型就可以投入业务应用了,我们仍然有相当的理由怀疑模型在面对新的数据时是否也能有稳定的表现。这个怀疑的理由是充分的,也是必要的,因为不能排除模型过拟合的情况产生,也不能排除不同时间窗口的业务背景会产生重大变化,包括模型此刻的表现还有一点偶然的成分等因素,都有理由要我们对模型的稳定性进行进一步评估。

考察稳定性最好的办法就是抽取另外一个时间段(时间窗口)的数据,最好是最新时间的数据,通过模型对这些新数据、新对象进行预测(打分),然后与实际情况进行比较(参考本章前面所介绍的关于模型准确度、效果、效率的评估指标和方法),并且跟模型在测试集和验证集里的表现相比较,看模型是否稳定,其效果衰减的幅度是否可以接受,如果条件许可,最好用几个不同时间窗口的数据分别进行观察比较,多比较、多测试才有说服力。