易明建模实践 - 用历史数据预测异常罕见现象
在很多商业场景中,存在一种数据不平衡的现象。比如银行贷款违约,违约的人只是很小一部分人;保险欺诈,欺诈者也是个别现象;还有产品质量中不良品的比例、工业生产中非计划停车现象等等……。这些罕见现象的发生比率很低,但一旦发生就会产生较大的损失。我们来看如何使用易明建模来预测这些罕见发生的现象。
1. 准备历史数据
历史数据中发生过罕见现象的记录称为阳性样本,其余为阴性样本。数据不平衡是指阳性样本过于稀少。比如在几万的数据量中只有十几条是阳性样本。这时,虽然总数据量不少但是也很难建出有效模型。因此,在准备数据时要尽量多的提取阳性样本,具体多少并没有固定要求。一般来讲,问题越复杂,需要的数量就越多,不过即使很简单的问题通常至少也需要几百条阳性样本才能建出可用模型。反之,也不能只取阳性样本。例如,要建模预测贷款用户的违约情况,要保证违约客户的数据达到一定数量,但也不能全部都是违约客户的数据,正常客户的数据也要采集。
2. 建立模型
准备好的数据,导入软件,自动建模即可。对于不平衡的数据集,易明建模会自动进行抽样来使阳性样本和阴性样本的比例达到平衡,使用者不用自己操作。但是我们可以自己修改和设置需要的配平比例,如图。对于初学者通常建议采取默认的比例就好。
3. 预测
模型建好后执行预测,得到预测结果。同样按照预测的概率从高到低排序,找前面概率较高的客户或样本来重点排查就可以了。排在前面的样本发生罕见现象的可能性更大。
4. 查全率.
在数据分布不平衡的场景中,只看准确率是没有意义的,对我们更有意义的是 Recall 查全率。
查全率表示在所有的阳性样本中,有多少被正确的预测了。
举个夸张点的例子,机场识别恐怖分子,显然恐怖分子是极少数人,属于罕见现象。假如 100 万人里面有 5 个是恐怖分子。如果使用准确率来评估模型的话,那么只要把所有人都识别成正常人,模型的准确率就能高达 99.999%,比如模型 A。但显然这种模型并没有什么意义,它没有识别出任何恐怖分子。而在模型 B 中,虽然准确率有些低,但是,查全率很高,它可以将全部的恐怖分子都识别出来。尽管可能会冤枉几个好人,但是总比被恐怖分子钻空子要好得多。这样的模型是有意义的。
在易明建模中可以用 Recall 曲线来判断查全率,如下图,横坐标表示将发生罕见现象的预测概率按照从高到低排列,10,20……分别表示概率排名前 10%,20%……的样本。纵坐标表示在各排名阶段对应的查全率值。例如,图中横坐标 10 对应的查全率约为 0.75,表示在预测概率排名前 10% 的数据中,能捕获 75% 的罕见现象,也就是说相比于全部排查,用 10% 的工作量就能找到 75% 的罕见(异常)情况。Recall 曲线越靠近左上角表示模型的捕获罕见现象,比如违约、欺诈、不良品、设备异常等的能力越强。
英文版