首页 > > > R语言信用评分卡:拒绝推断(8) 动态建模A
作者:黄天元,复旦大学博士在读,热爱数据科学与R,热衷推广R在工业界与学术界的应用。知乎专栏:R语言数据挖掘 邮箱:huang.tian-yuan@qq.com.欢迎合作交流。
相关连接:
HopeR:R语言信用评分卡:拒绝推断(7) 最小样本量确定
提要:
Hope现在作为金融风控分析师就职于A金融公司,之前的风控模型在1月份违约率为6.5%,2月份调整之后达到了4.7%,可喜可贺。但是公司领导Kate居安思危,认为目前市场的波动很大,用户的心理和行为的变化很敏感,因此要再次更新模型。Kate让Hope就1、2月份的所有数据(包括放款的数据和未放款的数据),对放款规则进行更新,来获得更加好的效果。就在2月末3月初,Hope开始做这个模型,尝试保持甚至提高3月份的业绩,并对4、5月份的决策做出指导。
拒绝推断要解决的问题,是因为用户违约特征及其重要性变化了,导致模型失效。能不能建立一个动态模型,像预测股市一样预测用户的违约行为呢?尽管要做这个尝试,但是我们还是不得不对数据的情境加深理解。我们知道这些款项是什么时候借出去的(loan_dt),但是我们得知这个用户有没有违约的时候,究竟是什么时候呢?这取决于这个用户接借出金额的应还日期。如果是每月返还,我们能够最短在一个月内就得到用户是否还款的信息,从而判断是违约还是没有违约。如果借款时间长达半年到一年,那么这个数据我们得到的时候,已经是一年半载以后了。模型是有一定时效性的,我们筛选出来的特征,如果是能够反映根本问题的稳健特征,那么可以用很久。但是注意,这些特征的相对重要性也是在改变的。就比如二十年前博士学位能够给个人带来好的薪酬,二十年后的今天也可以,但是我们明显发现二十年前的博士要值钱。反映在模型中,相对的回归系数就会变化。我们金融信贷模型也是一样的,随着时间变化,回归系数肯定在变化。如果随着时间的变化,变化比较多的话,那么模型很快就会失效。
由此看来,如果每次建模的时候,都只能用半年前的数据,但是半年后用户的整个行为特征都变化了,那么就永远踩不到点上。这种模型,不擅长捕捉用户的短期行为变化,尤其不能用所谓“准确率”比较高的模型,因为它的一呼一吸就是长时间尺度的,应该找长期的特征,并在一定的时长之后进行更新模型。这个一定时长,就是我们想要探讨的时间窗口长度。
在我们这个实际案例中,我们其实不知道每个款项借出了多久,也不知道每笔借了多少金额,这其实非常不利于建模。还有一个关键信息就是,我们不知道这个得知违约的具体时机是什么时候!不过我们可以大致猜测,早借出的交易能够早知道结果,按照这个时间顺序来计算,也能够大致模拟实际情况。不过我们现在的建模背景要改为如下:
现在每个用户都有其违约信息,而且每天我们都能够得知新的用户是否违约的信息(不管他们是什么时候借出款项的)。有这个动态变化的信息,我们希望能够通过定期更新模型,从而对后续用户违约行为进行更加精准的预测。究竟如何涉及算法来部署这个模型,是我们所感兴趣的话题。
其实用户借款到还款的时间,是比较重要的一个信息,但是我们没有。因为我们预测的时间窗口,必须要短于还款时间。如果等还款了才有足够的样本和特征建模,那也是枉然,我们的模型一定要保证一样的时效性才能够做到“有用”。目前,我们只能不断缩短这个时间,得到最短时间窗口。我们可以预料到,时间窗口越长,肯定能够积累的样本量越多,对于预测长期的违约行为就具有鲁棒性;时间窗口越短,能够捕捉的短期特征就越多,但是要在很短的时间范围内多次更新模型,带来了额外的成本。而且多次更新模型,出错的概率也很高,万一学习了错误的模型,下一期的预测就会出问题,敏捷模型究竟好不好,还是要事实来说话。所幸这份数据还有时间信息,我们可以按照时间序列的方法,来做滑动窗口的模型预测,相信这是一个非常有价值的测试。在开始玩耍这个模型之前,让我们重温一次数据的模样:

与此同时,我们前面的分析也不会白费,我们会沿用在1月份选取的特征,先默认这些特征具有一定的稳健性,不会随着时间发展而发生重大改变。后面这个假设也许会变更,到时候再建立新的算法模型。目前先设计到这里,下一步计划:确定动态模型的时间窗口长度。
原文作者:;如有侵权,请联系管理员删除。