0. 前言
模型的评价指标和评价体系是建模过程中的一个重要环节,针对不同类型的项目和模型,要合理选择不同的评价指标和体系。下面先给出二分类模型中预测值和实际值的混淆矩阵(confusion matrix)和定义,然后介绍几种评价指标。
二分类模型的预测值与实际值的结果
TP(True Positive):模型预测为正例(1),实际为正例(1)的观察对象的数量。 TN(True Negative):模型预测为负例(0),实际为负例(0)的观察对象的数量。 FP(False Positive):模型预测为正例(1),实际为负例(0)的观察对象的数量。 FN(False Negative):模型预测为负例(0),实际为正例(1)的观察对象的数量。
1. 正确率(Accuracy)
$$ accuracy = \frac{TP + TN}{TP + FN + TN + FP} $$
正确率和错误率是相对的两个概念,通常我们把分类错误的样本数占样本总数的比例称为错误率(error rate)。
2. 敏感度(Sensitivity)和 特异度(Specificity)
$$ Sensitivity = \frac{TP}{TP + FN} $$
$$ Specificity = \frac{TN}{TN + FP} $$
3. 查全率(Recall)、查准率(Precision)与F1-Score
$$ R = Recall = \frac{TP}{TP + FN} $$
$$ P = Precision = \frac{TP}{TP + FP} $$
$$ F_1 = \frac{2 * P * R}{P + R} $$
查全率和查准率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。 在一些应用中,对查准率和查全率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少的漏掉逃犯,此时查全率更重要。
查全率和查准率是两个度量,如果同时有 A 和 B 两个学习器,如何去判断哪个模型更好呢?$F_1$ 度量是查全率和查准率的调和平均(如下),可以用这个指标对两个学习器作比较。
$$ \frac{1}{F_1} = \frac{1}{2} * (\frac{1}{P} + \frac{1}{R}) $$
$F_1$度量的一般形式——$F_\beta$ ,能让我们表达出对查准率/查全率的不同偏好,它定义为
$$ F_\beta = \frac{(1 + \beta^2) * P * R}{(\beta^2 * P) + R} $$
其中 $\beta > 0$ 度量了查全率对查准率的相对重要。 $\beta = 1$ 退化为标准的 $F_1$ ;$\beta > 1$ 时查全率有更大影响;$\beta < 1$ 时查准率有更大影响。
4. ROC (Receiver Operating Characteristic)和 AUC (Area Under ROC Curve)
ROC 全称是“受试者工作特征”曲线,它源于“二战”中用于敌机检测的雷达信号分析技术。 ROC曲线的纵轴是“真正例率”(True Positive Rate,简称 TPR),横轴是“假正例率”(False Positive Rate,简称 FPR),两者的定义为:
$$ TPR = \frac{TP}{TP + FN} $$
$$ FPR = \frac{FP}{TN + FP} $$
图(a)给出了一个示意图,显然,对角线对应于“随机猜测”模型,而点 (0, 1) 则对应于将所有正例排在所有反例之前的“理想模型”。
显示任务中通常是利用有限个测试样例来绘制ROC图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生图(a)中的光滑 ROC 曲线,只能绘制出如图(b)所示的近似 ROC 曲线。绘图过程很简单:给定 $m^+$ 个正例和 $m^-$ 个反例,根据学习器预测概率对样例进行排序,然后把分类阈值设为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0, 0)处标记一个点。然后,将阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点左边为 $(x, y)$ ,当前若为真正例,则对应标记点的坐标为$(x, y + \frac{1}{m^+})$;当前若为假正例,则对应标记点的坐标为$(x + \frac{1}{m^-}, y)$,然后用线段连接相邻点即得。
若一个学习器的 ROC 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的 ROC 曲线发生交叉,则难以一般性的断言两者孰优孰劣。此时如果一定要进行比较,则教为合理的判断依据是比较 ROC 曲线下的面积,即 AUC。
<img src="https://images2018.cnblogs.com/blog/840488/201805/840488-20180518210548447-823428591.png" width = "800" height = "450" alt="图片名称" align=center />
5. KS值(Kolmogorov-Smirnov)
KS值是比较常用的一种判断二分类(预测)模型准确度的方法,该方法来源于统计学中的 Kolmogorov-Smirnov Test。 KS值越大,表示模型对正、负样本的区分度越高。通常来讲,KS值(在测试集上)大于0.2表示模型有比较好的预测准确度。
KS值计算方法:
- 将测试集里所有的样本根据模型预测概率值由大到小顺序排序;
- 分别计算每个概率值(从高到低)所对应的实际上为正、负样本的累计值,以及他们占全体测试样本实际为正(TP + FN)、负(TN + FP)的总数量的百分比;
- 将这两种累计百分比绘制在同一张图上,得到KS曲线;
- KS值 = max{实际为正的累计比例 - 实际为负的累计比例}。
以上步骤对应:
- 按照概率值大小排序;
- 计算 TPR 和 FPR;
- 绘制 TPR 和 FPR 曲线;
- $ KS = \max(TPR - FPR) $ 。
<img src="https://images2018.cnblogs.com/blog/840488/201805/840488-20180517173730456-15920411.png" width = "800" height = "600" alt="图片名称" align=center />
6. Gini系数或Gini统计量(Gini Coefficient)
Gini系数是20世纪初意大利学者科拉多·基尼根据劳伦茨曲线所定义的判断年收入分配公平程度的指标。是比例数值,在0和1之间。在民众收入中,如基尼系数最大为“1”,最小为“0”。前者表示居民之间的年收入分配绝对不平均(即该年所有收入都集中在一个人手里,其余的国民没有收入),而后者则表示居民之间的该年收入分配绝对平均,即人与人之间收入绝对平等,这基尼系数的实际数值只能介于这两种极端情况,即0~1之间。基尼系数越小,年收入分配越平均,基尼系数越大,年收入分配越不平均。
设下图中的实际收入分配曲线(红线)和收入分配绝对平等线(绿线)之间的面积为A,和收入分配绝对不平等线(蓝线)之间的面积为B,则表示收入与人口之间的比例的基尼系数为$\frac {A}{A+B}$。
在模型评价中,将模型预测违约概率由低到高排列,计算(累计违约用户数量/总体违约用户数量)*100%,按以上方法计算Gini系数。
<img src="https://images2018.cnblogs.com/blog/840488/201805/840488-20180531232415152-1245985486.png" width = "800" height = "450" alt="图片名称" align=center />
7. Lift值、响应率(%Response)和捕获率(%Captured Response)
Lift值
二分类(预测)模型在具体的业务场景中,都有一个Random Rate(基于已有业务的真实的正比例,也称为“正”时间的随机响应概率)。如果通过建模得到一个不错的预测模型,那么将预测概率值从高到低排序中,排名靠前的样本中,真正的“正”样本在累计的总观察值里的占比应该是高于 Random Rate 的。
举例来说,某二院分类(预测)模型针对10000名潜在用户打分(预测其购买某产品的可能性),Random Rate 为 9%,即其中有900人会实际购买该产品,将这10000名用户经过模型打分后所得的概率分数从高到低进行排序,如果排名前 10% 的用户,即1000名概率最高的用户里实际购买产品的用户数量为600人,那么与Random Rate相比较,可得出排名前10%的用户其实际购买率的Lift值为6.67。
$$ \frac{600 ÷ 1000}{9 ÷ 100} = 6.67 $$
响应率
响应率是指上述经过概率分数排序后的某区间或累计区间观察对象中,属于正的观察对象占该区间或该累计区间总体观察对象数量的百分比。所以,响应率越大,说明在该区间或累计区间模型的预测准确度越高。
捕获率
响应率是指上述经过概率分数排序后的某区间或累计区间观察对象中,属于正的观察对象占全体观察对象中属于正的总数的百分比。
8. 模型稳定性评估
模型的好坏,不仅要考察其在训练集和验证集的表现,还要对模型的稳定性进行评估。 考察稳定性最好的办法就是抽取另一个时间窗口的数据(最好是最新时间的数据),通过模型在这些新数据上的表现来与之前在训练集和测试集上的表现进行比较,看模型的稳定性,其效果衰减幅度是否可以接受,如果条件许可,最好用几个不同时间窗口的数据分别进行观察比较。
参考资料:
《数据挖掘与数据化运营实战》 卢辉 《机器学习》 周志华 Wikipedia 基尼系数
来源:oschina
链接:https://my.oschina.net/u/4370390/blog/3970627