DomDomm 发表于 2022-11-24 12:07

【蚂蚁风控大牛算法实战经验分享】——divergence算法(fico ...

本文转载已经征得大牛同意,微信公众号可关注: 木有粗面也木有鱼丸
简介:根据资料用python复现了基于divergence算法评分卡模型,本篇只是介绍模型的建模和算法优化过程,具体的实现代码之后不久会打包进入到我的风险建模包中。
1、divergence评分卡模型算法简介:

评分卡模型的出现据说最早是在20世纪40年代,Household Finance and Spiegel和芝加哥邮购公司第一次尝试在贷款决策过程中使用信用评分.但是这两家公司都终止了这项业务。后来,在20世纪50年代末,伊利诺伊州的美国投资公司(AIC)聘请两位数学家比尔·法尔(Bill Fair)和厄尔·艾萨克 (Earl Isaac)通过审查一个小型贷款样本(其中一些支付信用良好,其中一些较差)来确认是否可以获得可用的数据模型.
这一尝试后来取得了革命性的成果,两人在此基础上创立了fico,为美国三大征信局提供风险评分技术,同时也在全世界各地开发风险模型.可以说推动了风险模型技术的发展.但是我们通常见到的银行内的风险模型通常是基于逻辑回归开发的,我本人也在这方面有一定的经验.但是fico在美国开发的fico score是基于divergence算法开发的,所以我对此一直都十分好奇,其实现的过程和效果.基于一些网络上公开的材料,我对这个算法用python进行了复现.下图是fico的材料中对这个算法的介绍,本身就可以归结为一个非线性优化问题.具体是怎么推导和优化边界条件是其中的重点,那根据这个形式,我们可以有接下来的推导.



FICO专利的最大化分离度评分模型开发

上图中的公式是缺少计算价值的,可以转换为下图中的条件,即我们实际要优化的下面两张图里的,即实际的好客户和坏客户的divergenc,然后落实到利用样本数据去优化.



FICO变量分箱技术及区分度评分原理介绍


经过一番推导,会形成下面的可以进行非线性规划的形式,边界条件也非常清晰.


2、python实现模型效果比较:

   具体实现的层面我是利用 scipy.optimize中的函数来实现的,需要比较巧妙地把上述优化函数和边界条件写入到这个函数里边,稍后几天我会把代码封装到之前的模型包里,而且今天这版还没有写完stepwise的步骤,只是利用以及通过逻辑回归的stepwise选出的变量,直接运行了一次,看看效果.


    由于其实际的约束条件比逻辑回归少,逻辑回归本质上是线性的,这个模型有非线性的部分,系数只要满足规划条件.因此时间拟合效果逻辑上应该更好,我们观察oot的差别,实际效果提升了2.5%的ks值,效果提升了7.6%.整个模型的实现非常有意思,虽然代码逻辑不复杂,中间写错了好几次,经过仔细检查修正,最终但是效果出奇的好.


感谢诸君持续关注,加油共勉ヾ(°°)
页: [1]
查看完整版本: 【蚂蚁风控大牛算法实战经验分享】——divergence算法(fico ...