用户行为序列的特征设计和挖掘思路分享

2021-01-05 11:46:30 浏览数 (2)

风控用户行为序列的特征设计和挖掘

本回答将分为三个部分:

  • 业务理解:风控包含哪几个阶段以及各阶段任务
  • 手动构建特征方法
  • 自动特征工程方法

业务理解

金融风控,可以是对于信贷类金融风控(银行贷款,花呗,信用卡等),也可以是现金支出(刷微信支付余额和支付宝余额)。

  • 对于现金类收入支出,主要的任务是反欺诈反盗刷。特征和信贷类的”贷中“阶段有点类似。
  • 如果涉及信贷,对于金融风控,无论是传统银行还是互联网金融,都包含三个部分:贷前(申请与审批),贷中(监控,调整额度),贷后(从放款到全部收回),催收管理(出现逾期的处理)。如果用评分卡,那每个阶段的评分卡分别是A卡,B卡,C卡。每个阶段的任务都不一样,如下图。

信用卡虽然不是贷款,但从业务上,和贷款一样,信用卡属于提前消费,也就是银行或者金融机构给你垫付。所以后面无论讲到信用卡还是贷款,都用”贷前贷中贷后“来方便叙述,希望不会给读者造成太大的概念混淆。

我经常说,领域知识(domain knowledge)是进行特征设计和挖掘的基础。无论你用最简单的逻辑回归模型还是用复杂的深度学习模型,都是一个效果:trash in trash out。所以,理解了业务就能构建有效的特征。金融风控,有“风险”,有“控制”。风险存在于每个阶段,控制也是按照每个阶段的情况来制定策略。

01

贷前阶段这个阶段。

首先给读者一分钟想想这个阶段的任务。没错,这个阶段的任务就是排除不及格的用户,不让他们拿到贷款或者额度。但是,有的看似及格甚至优良的用户,可能是假的!

在A卡阶段,我们需要预筛选和客户授信。这个阶段如何运用用户行为序列进行特征设计和挖掘呢?

所以我们需要找到一些特征,来:1.判断客户是否存在欺诈。2.对于非欺诈用户,是否有还款能力,如果有,能给用户多少额度。

02

贷中这个阶段

依然惯例,首先给读者一分钟想想这个阶段的任务。

没错,这个阶段的任务就是检测用户行为,是否存在异常,例如盗刷,是否出现逾期,是否存在消费情况不正常。如果客户表现好,是否要给客户多点额度,如果客户行为不太好,是否要降低客户的额度。

03

贷后阶段

这也是我这两年来研究最多,最熟悉的阶段。贷后是用户出现了还款逾期,银行或者金融机构进行催收/坏账准备的阶段。

可以看到贷后和贷中有一点业务重叠,就是“监控”这个任务。但贷中更侧重发生逾期前的额度调整贷后更侧重逾期发生后的催收,如果实在催收不成功,则坏账准备(例如银行通过分析发现,当客户逾期超过180天了,95%的客户会永远还不上钱,则银行认栽,把坏资产打包出售给第三方公司等等)。

手动构建特征

由于此回答主要讲用户行为序列,那么非用户行为的特征(例如征信等级,信用评分,是否在黑名单上)这里就不讨论了。

如果你熟悉客户管理/营销,那么你可以听过RFM模型。其中R(Recency)和F(Frequency)都是用户行为序列相关的。这里我们也可以借鉴这个思想。除此之外,还可以构建异常行为特征。总结下在如果需要手动构建特征,一般可以从几个方面入手:

近期类特征。例如最近一次使用信用卡的时间,上一次联系时间,上次逾期时间等。

频率类特征:普通用户为了完成某一任务,通常目的达到动作就会跟着终止,所以正常用户的动作通常是离散和稀疏的。而对于黑产用户而言,为了实现收益的最大化,高频率的动作是降低成本的核心,所以往往黑产用户的动作是连续而紧密的。基于这种理念,频率类的策略在风控中就有着非常重要的作用。考虑频率特征时,通常考虑几个因素,分别是:时间窗口资源、运算阈值

统计类(速度类或者方差类)特征:如果客户某个行为呈现加速状态或者减速状态,那么可能其风险等级也发生改变。例如过去六个月的平均消费金额为1000,但本月消费金额为15000,则显示出了十几倍的加速,这种情况可能说明客户在恶意透支信用额度,更可能是被盗刷。这个速度类特征也可以用方差类特征来代替,例如本次消费金额在过去六个月所有消费里,是否处于

之外。

地理位置的异常偏移:比如ip的归属地和设备的定位差距过大,地理位置变化的速度太快。这说明用户可能通过作弊手段修改定位,使用代理ip等等。这个特征在反盗刷和反欺诈很重要。

分解到贷前中后三个阶段,分别有(这里只讲行为类特征):

贷前可构建这些特征特征(凭着个人回忆写的,未能穷尽,欢迎补充)

如果客户在本行已有记录,则可以观测用户近期还款情况,上一次逾期时间。如果有信用卡,则观测近三个月内平均逾期天数比过去十二个月,是否变得更少。例如

如果客户在本行没有记录,则可以从征信信息观测其行为序列。例如过去几个月其贷款笔数是多了还是少了,其贷款总额的增速是多少。

如果是通过互联网银行/手机银行申请的,可以检查数据埋点的行为序列。我由于是给传统零售银行做业务的,所以我并没有使用过埋点数据。

贷中特征(凭着个人回忆写的,未能穷尽,欢迎补充)

  • 本笔信用卡消费在过去六个月所有消费里,是否处于

之外。如果是的话,有被盗刷风险

  • 分期还款笔数的增加或者减少(和用户经济负担有关,如果用户的卡里有着多个商品的分期付款,例如iphone 12的24期付款,那么再用分期付款买一个MacBook,那么经济负担就更重了,很可能还款能力就变低了)
  • 额度使用度的变化。这个特征并不是单一方向的。例如信用卡有10000块额度,比如你所说每个月额度都刷满并且按时还款,那么银行可能会认为客户信用额度不够就给你提额,但也可能认为你在套现,给你降额。至于这个特征怎么决定客户的信用度,则需要结合其他特征来观测。(如果你工资卡也是这个银行的,那么它可以看你工资卡收入是否有变多)。又如果客户有一万块额度,之前六个月平均每个月花1000,并且能按时还上,这个月花了9999,并且逾期了,则说明这个客户可能在授信时额度给多了,需要调整额度。
  • 消费习惯,负债变化。履约历史等。这里推荐

贷后特征(凭着个人回忆写的,未能穷尽,欢迎补充)

  • 客户本次逾期距离上次逾期的时间。(如果上个月逾期了这个月还是逾期,说明客户的情况并没有好转,考虑优先催收,如果距离上次逾期都一年了,说明这个客户并不是经常逾期,即使不催收也可能自己会还)
  • 最近联系记录。由于客户逾期会触发金融机构的催收部门联系客户,所以联系记录也可以作为特征。例如最近一个月被电联的次数vs过去六个月平均每个月被电联次数(说明催收难度大了,客户的经济情况也许在恶化),过去一个月电话接通率vs过去六个月电话接通率(越来越难接通有可能说明客户在恶意欠款)

自动特征工程方法

自动特征工程的方法一般你只需要定义输入哪些序列,至于每个序列分别代表什么,你不一定需要商业理解,可以交给深度学习模型来搞定。说实话,这个方法我并没有给客户做过,但我看了一些国内厂商的做法,我可以介绍一下。

例如蚂蚁金服[3],他们是这样做的。不过他们这个并非信贷模型,但其反欺诈的思路值得参考。在反欺诈方面,他们有两个场景:1. 转账到账户场景 ;2.转账到卡场景

例如对场景1,他们的序列包括:

(注:RPC为Remote Procedure Call Protocol,远程过程调用)

  • 他们采用的模型:LSTM。
  • 他们监控的序列包含:
    • 序列1:支出账户的实时事件序列
    • 序列2:支出账户的实时RPC序列
    • 序列3:收款账户的实时事件序列
    • 序列4:收款账户的实时RPC序列
    • 序列5:支出账户的历史事件序列
    • 序列6:收款账户的历史事件序列
    • 序列7:支出账户与收款账户历史序列
    • 序列8:支出账户与收款账户实时事件序列

他们分别基于8种不同序列建立LSTM模型,将序列隐藏层最后一步输出接一个全连接层最终输出风险分值,将8个序列风险分值与现有变量合并建模,输出最终欺诈风险分。可以看到,其实最后的模型也是一个GBDT模型,虽然得到这些风险分的过程难以解 释,但起码在最后一步是用可解释模型的。所以说,可解释性永远是风控逃不开的话题。

代码语言:javascript复制

0 人点赞