风控评分模型的开发流程已经标准化,本文先通过速览形式,带读者朋友们了解一下评分模型搭建流程
样本准备
在正式开始建模前,首先需要搞清楚一点:产品的目标客群是怎样的?建成的评分卡是要用在哪些人身上的?有哪些样本是不适合拿来建模的?举个例子,如果准入规则直接拒绝了25岁以下的客户,那么对应建模时也应该筛选掉这部分样本(非准入客群)。又或者,有一些客户虽然申请了额度,但是并未真正申请放款,那么这些无行为表现客户也不应该包含在建模样本之内。
好坏定义
相信很多没做过建模的读者朋友也听说过好客户、坏客户的说法,但其实在这其中,怎样的客户算好,怎样的客户算坏都是很有讲究的。这个好坏定义首先和评分卡真正关心的客户类型有关,比如说一个反欺诈评分卡的坏客户定义可能是首逾30天以上(FPD30+),而审批评分卡的定义可能是M3+。而具体逾期多少天算坏,就要进行Roll Rate分析了。
观察期和表现期
观察期是指用于生成客户特征的时间区间,用于收集信用历史和行为特征等信息,以提炼能预测未来信用表现的预测变量。
观察期过长可能导致大量客户无法获取相应时间长度的数据,大批样本不能进入模型;观察期过短会导致样本无法生成足够多有效的时间切片变量。表现期是对观察点上客户表现进行监控的时间周期。这些帐户根据截止到表现点的表现被分类成好、坏。表现期需要有足够的长度,从而保证样本群体分类的稳定性,使客户的逾期行为充分表现出来。但也不能够过于长,即使可获得很长时间的历史数据,还需要在完整性(有多少个坏样本需要捕捉)和数据质量之间保持平衡。
细分分析
有的时候,如果面对各种各样的客户通通使用同一张评分卡,可能效果并不是那么的好;但是如果对不同类型(某种维度意义上)客户都使用不同的评分卡,过多的评分卡不好管理,不同评分卡之间得出的结果有时也不具备可比性。
因此,需要找出最佳的群体分组,使得以此为基础建立的一组评分模型可使整个评分系统的预测能力最大化。当然,如果是在样本量比较少的情况下,这一步就可以跳过了。
数据准备
数据准备的过程包括数据清洗、缺失值处理、离群值处理等等,目的是让数据足够干净,而不会因为其中的一些乱码或格式问题影响后续建模。在逻辑回归模型中,合理的缺失值和离群值都是可以不做处理的,因为在进行分箱和WOE转换时可以解决掉这些问题。
其中合理指的是数据本身就是缺失的,比如在填写某些非必填信息的时候客户没有填写导致的缺失,而不是像第三方数据覆盖率不足等原因导致的缺失,类似这种本不应该缺失只是因为各种原因没有获取到数据而导致的缺失,是应该进行缺失值处理的。在这一步,可以筛选掉一部分缺失率过高的变量。
变量衍生
变量衍生是整个建模过程中最重要的一个环节,往往在同样的数据和维度条件下,谁的评分卡模型效果更好,看的就是这一步。变量衍生有各种各样的方法,比的就是谁的脑洞更大。可以简单粗暴的根据业务理解进行变量的组合,生成交叉变量,比如说,不同年龄段的客户的婚姻状况可以给予不同的打分标准。又或者,可以利用一些机器学习算法,比如xgboost,从数据的角度来进行变量衍生。
训练集和验证集
在真正进入建模过程前,还需要预留出一部分样本用作模型的验证,这是为了防止模型的不稳定:在训练集上表现良好、在验证集中却无法很好的预测。然而只要手气足够好,随机抽取验证样本时足够随机,训练集和验证集各指标的分布足够近似,验证集的表现一般不会和训练集有太大的差距,但这并不一定代表模型就是稳定的了。
因此,最好的做法是再预留出一部分时间外测试集,选取与建模样本不同时间段的样本再对模型表现进行验证。比如,如果选取的审批时间在1-3月的客户作为建模样本,那么可以将4月的客户作为测试样本测试模型的效果。
分箱和WOE转换
在进行变量衍生后,我们可能会产生好几百上千个变量,有连续性变量也有分类型(字符型)变量。然而,字符型变量是没有办法直接作为入参参与逻辑回归拟合的,而为了使自变量和目标变量呈正相关的关系往往会对数值型变量也进行分箱和WOE转换。毕竟如果按照原数据入模,会导致评分卡非常不稳定,同时变量的取值和得分的关系也会变得非常的杂乱无章,失去业务上的可解释性。另外,在这一步,根据每个变量的IV值,也可以筛选掉一部分区分能力较弱的变量。
共线性检验
共线性检验也是筛选变量过程中非常重要的一步。共线性指的是模型的变量之间存在较高的相关性,某一个变量可以被其他一部分变量所解释。共线性高会导致回归拟合出来的系数发生严重的偏离。常用的指标为相关系数和VIF。
逐步回归
这是一个基本上完全交给程序的过程,通过不断增加、删减变量,从数据层面挑选使模型的预测能力达到最大的变量组合。然而,虽然已经进入变量筛选阶段的尾声,逐步回归跑出来的变量也不一定就符合要求了,还会有可能出现逻辑回归的系数正负符号不一致的情况。这种时候,就需要结合前面的共线性检验,不断的调整进入逐步回归的变量,以得到合理的最终入模变量。
模型表现
模型表现的评估常见的也就是大家耳熟能详的那几个指标:KS值、Gini、AUC、Lift等等。需要注意的是,模型不能一味的追求高KS,所有变量在建模过程中都针对显着性、相关性、冗余及多重共线性进行测试。如果变量在各维度上不能符合标准,即使会牺牲KS,也将被从模型中剔除。
拒绝推断
拒绝推断是给被拒绝的申请人赋予一个理论上的表现的过程。等价于说:如果申请人被接受了,他们的表现会是什么?由于审批时有一定的拒绝条件,所以被批准的客户群体并不是申请群体的无偏差代表,相反由于审批的选择性导致了被批准客户群体的信用质量高于申请人群体的总体信用质量。如果最终的评分卡只是基于被接受的群体创建,可能会造成一定程度的偏差。
拒绝推断的流程为:先建立一个已有客户模型,使用已有客户模型给拒绝客户打分,再基于已有客户和拒绝客户的群体集合建立新的评估分数。如果之前的审批策略效果不佳,已有客群和拒绝客群差别很小,是可以跳过拒绝推断这一步的。
标准评分卡
在评分卡模型建立的最后,需要将模型转化成一个更加直观、更容易部署的形式,也就是标准评分卡。标准评分卡可以一眼看出每一个入模变量落在哪个区间可以得到多少分。简单来说,就是需要将每个变量每个分箱的系数*WOE变成一个分数,这个过程会使用到三个参数:标准分、标准好坏比、PDO,最终计算出好坏比和分数的一一对应关系。
04细说评分模型搭建全流程1A、B、C广义三种评分模型首先,我先来聊聊评分模型里的A、B、C卡到底是什么。
评分卡模型是什么?
一个公式!
假定一个客户好为0,坏为1,预测这个客户是好or坏的概率p属于[0,1]
评分卡按照使用阶段分为申请卡、行为卡、催收卡
- A卡(Application scorecard)申请评分卡:在客户申请处理期,预测客户开户后一定时期内违约拖欠的风险概率,有效排除了信用不良客户和非目标客户的申请
- B卡(Behavior score card)行为评分卡:在帐户管理期,根据账户历史上所表现出来的各种行为特征来预测该账户未来的信贷表现
- C卡(Collection scorecard)催收评分卡:在帐户管理期,对逾期帐户预测催收策略反应的概率,从而采取相应的催收措施
三张卡的区别
- 使用的时间不同。分别侧重贷前、贷中、贷后;
- 数据要求不同。申请评分卡一般可做贷款0-1年的信用分析,行为评分卡则是在申请人有了一定行为后,有了较大数据进行的分析,一般为3-5年,催收评分卡则对数据要求更大,需加入催收后客户反应等属性数据。
- 使用模型不同。在申请评分卡中常用的有逻辑回归,AHP等,而在行为和催收两种评分卡中,常使用多因素逻辑回归,精度等方面更好。
- 变量不同。申请评分卡用到的大部分是申请者的背景变量,比如客户填写的基础信息+第三方外部数据源查询信息,而且这个模型一般也会比较谨慎。行为评分卡利用了很多基于交易的变量,可以预测一个客户未来的违约概率。
申请评分卡的评分结果将决定:
- 估计的信用状况,即正常还是违约,并据此决定批准还是拒绝该笔贷款申请;
- 为了获得审批通过需要的抵押物;
- 贷款额(信用额度);
- 贷款定价(利率水平)
行为评分卡的评分结果将决定:
- 审查信用重建;
- 审查信用额度、额度管理调整;
- 制定清收策略(若违约或逾期);
- 审查贷款定价和贷款条件
催收评分卡的评分结果将决定:
- Pre催收,降低违约风险提升还款率
- M1阶段精细化催收策略,如IVR、预测式外呼、预览式外呼
- 失联信息修复和提前委外催收
2数据业务理解在开发信用评分模型之前,最基本面的工作就是梳理和理解数据。
不要自认为知道这些字段的中文意思、来自哪张数据表就可以了,还要尽可能的去了解这些数据是从生产库怎么生成的,也就是说这些可能用到的变量数据还原到业务中是怎样的衍生过程,当然如果你们是直接从生产库里挑选数据提炼到建模表上,那么恭喜你,可以花更多的时间去梳理整理数据了,建好的模型也会更稳定准确。
现在很多科技数据公司一味的去强调算法、大维度变量,但却忽略了业务数据的理解,做出来的模型自然也就与实际业务偏差很大,就算是ks为05以上也是很难实际落地。
变量业务理解梳理,尽管很繁琐,却尤为重要。
对于现在很流行的cash loan业务,客户申请收集基本三要素:姓名,身份证、手机号,通过用户授信、SDK抓取,以及三方数据调用,可以获得多维度的用户数据。
对于一个客户填写了这三要素之后,业务生产库里就会存在name、card、phonenumber三个字段去存储每一个申请客户的数据。如果对于建模的你来说,没有权限看到生产库的数据,只有数据仓库给你使用,你从数仓里看到了sex、province、city、sex、Val_period_of__card等等。这些字段都是从生产库里衍生出来的,有些是业务逻辑需要,有些是报表需求。
就以身份证card为例,一个申请客户提供了card:440306199005113437,申请时点为20171028,18位身份证号码个位含义
- 1-2位省、自治区、直辖市代码;
- 3-4位地级市、盟、自治州代码;
- 5-6位县、县级市、区代码;
- 7-14位出生年月日,比如19670401代表1967年4月1日;
- 15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;
根据身份证编码含义,我们就可以在在数仓里衍生出如下字段
对于Val_period_of__card这个变量的衍生,大家首先要知道身份证号的含义,还要去测算申请客户目前是第几代身份证,然后去了解关于身份证法对于身份证有效期的划分标准,最后根据客户申请时点去测算他目前的身份证还有多长的有效期。
Val_period_of__card这个衍生变量可以在策略规则和建模中使用,比如身份证有效期较短的客群通过历史数据分析发现在公司cash loan中大占比为骗贷客户,策略引擎里已经设置了强拒绝规则,那么我们在建模的时候,就要把身份证有效期超出相应规则界限的客群剔除掉,直接排除这部分数据进入评分卡模型的训练样本,可以很好的排除这部分客群对模型的干扰,提升模型的区分好坏能力。
假如现阶段公司cash loan业务限定只给予年龄在20-35岁,非广东区域的客户进行放款,产品业务已经明确了各个维度的限制,那么我们在数据导入前,在了解了衍生变量的业务逻辑之后,很明确的知道这个申请客户是不可能进行贷款的,不满足业务要求的客群也是应该通过相关变量进行排除的,这就是我想跟大家聊的理解数据业务意义的重要性。
理清数据的来源,也才能更高效的让我们脑洞大开地去创造有效变量。
3数据探索分析当我们带着好奇的心态沉浸在生产库或者数仓的数据海洋里,不要忘记我们是身负重任的,我们要从以产品为中心生成的大维度数据变量里进行一遍变量维度的初步筛选,筛选出有可能进入建模表里的所有变量字段,然后去观察这些数据具备什么形态。
在SAS BASE里有几个函数可以用来进行数据探索分析
1Proc Means
直接运行 proc means过程时,会对所有数值型变量进行操作,得到各变量的非缺失观测数N,均值MEAN,标准差STD DEV,最大值Max和最小值Min,我们还可以增加range(极差) sum(和) var(方差)nmiss(缺失值个数)median(中值)等选项得到其统计量。
2Proc Freq
直接运行 proc freq过程时,会对所有变量(一般针对离散型变量,如果是连续型变量,通过Format进行离散化处理)进行操作,得到各变量的频数、百分比、累积频数、累积百分比,我们还可以增加多变量的交叉表频数统计。
3Proc Univariate
探索性数据分析最常用的过程步之一就是proc univariate,直接运行 proc univariate过程时,会对所有变量进行操作,得到矩、位置和可变形的基本测度、位置检验、分位数、极值观测。
若加了一个HISTOGRAM则增加了一个直方图;加一个NORMAL选项则在直方图上面加了一根拟合后的正态分布图,并且还增加了拟合正态分布的参数估计、拟合优度、分位数;加一个KERNEL则在直方图中加了一根实际数据核分布的密度曲线;加一个plot选项,在结果中增加了分析变量数据的分布图、箱型图、以及概率图,等等。
我们重点要从下面几个维度去进行关联性探索分析:
1产品基本情况- 各表现指标随时间的分布变化
- 不同业务线各产品随时间变化的申请量、通过率以及各逾期指标分布
2产品逾期情况- 各逾期指标随时间的分布
- 各逾期指标流转(FPD30-60;FPD60-90)
- Vintage:Ever 30+/M1+; Ever 90+ M3+
- 所有产品、各产品30天逾期指标分布
3参考已上线评分卡监控报表,参照模型变量及分组表现4定义目标变量1目标变量是什么目标变量就是假定申请客户的好坏,逻辑回归公式里的Y,先来看下逻辑回归公式
其中,
称为sigmo函数,
我们可以看到,通过sigmo函数输出的y介于(0,1)之间,这样就表明了数据属于某一类别的概率,例如:
假定Y定义为申请客户为好客户还是坏客户,也就是历史数据非0(好客户)即1(坏客户),通过测算业务放款收益损失我们找到了一个公司可接受的逾期率P
- yp,则说明预测客户有更大的概率属于好客户;
- yp,则说明预测客户有更大的概率属于坏客户;
当然实际情况好坏客户的划分并没有这么简单,单单是收益损失测算就需要考虑综合费率、资金成本等较多维度。
2目标变量的界定对于评分卡目标变量Y的界定,我们主要从Roll Rate和Vintage来观察分析,重点需要考虑三个方面
▼
逾期流转比例
观察期和表现期
样本容量
▲
先分析Roll rate
Roll Rate的定义为在当前催收水平下不同逾期天数转化为坏账的概率。从Roll Rate我们看到2017年开始放款,M0 to M1的流转率约为78,M3 to M4的流转率为100,也就是说,处于M3逾期阶段内的客户基本很难催收,逾期天数大于60天的客户基本为坏客户了。
再分析Vintage
Vintage可以关注下面3个方面:
- 观察每月审批通过客户后第N个月的逾期比率,对比每月波动,通常波动与审批策略调整有关,此波动在数据准备阶段的样本抽样过程需要关注;
- 逾期分布,集中在通过后的前三个月说明审批的策略有待改进,超过三个月之后才慢慢增加,说明贷中的管理有待提高;
- 确定逾期率在经历第N期趋于稳定;
从上图Vintage分析,每月放款逾期M2+以上的剩余本金逾期率基本在MOB=8期时趋于稳定,如果我们的放款时间累积比较长,样本表现期可以覆盖到8期,那么就可以界定样本目标变量为在8期内(对于银行往往表现期8;消费金融8)逾期天数大于60天的客户为坏客户,也就是Y=1;如果样本的表现期不够8期,那我们就要再综合考虑流转率和帐龄,重新定义满足样本表现期的逾期天数。
5样本设计及抽取策略在开发评分模型前,如果可以在样本设计阶段尽可能的涵盖到体现客户风险的所有特征维度,那么对于之后模型开发工作,将会起到事半功倍的效果。
究竟应该如何设计样本。接下来我将为读者朋友们深入浅出的分析讲解。对于没有接触或者未从事模型设计开发工作的读者朋友们,不妨也了解下设计思路,便于提升风控策略等其他工作的风险管理效能,毕竟,风控评分模型、策略规则甚至产品设计,彼此不分家!
1
样本特征集的设对于不同形态的金融产品,样本特征集的设计框架彼此不同,但设计出发点都是为了体现用户的全部潜在风险。
以个人信贷为例,样本特征集应该至少包括客户基础信息、申请行为信息、历史借贷信息、社交属性信息、征信查询信息、个人及家庭资产信息、历史交易类信息、地理信息。其中,征信查询信息包括第三方数据供应商提供的信息。
以征信查询信息为例,征信机构(包括第三方数据提供商)从会员单位(银行、小贷公司、零售商、信用卡机构、公用事业公司等)和公共渠道(法院、政府部分等)收集信息,并用手机号、身份证号匹配整合到一起。
一般征信机构提供的征信数据分为几类:公共信息(如法院判决)、查询检索(如历史查询记录)、共享信息(如不同贷款机构的整合数据)、聚合信息、欺诈预警(如无效的地址或身份证号)、附加价值(征信机构通用分)。
这些数据差异化程度非常大,从数据目的来讲,可以包括信贷、反欺诈和验证;从数据来源来看,包括公共数据、用户数据和衍生数据;从风险管理周期定义,包括获客、风险管理、回收和欺诈;从机构职能来划分,包括数据采集、数据聚合和增值服务。
对于小微金融信贷的特征集设计,除了个人信息之外,还会加入税务、上下游供应商、发票、公司社保缴纳、水电费、公司财务等体现企业经营稳定性和发展力的特征数据,综合评估小微企业的还款能力和小微企业主的还款意愿。
所以,在设计样本特征集时,需要将以上风险特征变量尽可能的收集聚合在样本特征集中。
2
总样本拆分策略在构建出样本特征集之后,需要按照模型开发、模型验证、模型测试三个环节,将总样本拆分成训练样本、验证样本、测试样本和近期样本。
训练样本和验证样来自于总样本并在同一时间区间内,可以按照一定比例进行样本抽取(一般训练样本:验证样本=73)或者N折交叉抽取。
测试样本来自相邻未来时间区间,用以测试模型的预测能力、区分能力、排序能力、稳定性等指标,确保模型在不同时间段上仍有一定活性。
近期样本是在开发前仅三个月左右的样本,没有表现结果。近期样本主要用来确保评分卡特征变量的稳定。
3
建模样本抽取策略一般对于建模样本,常遇到两类问题:建模样本总量少和样本不均衡。
对于建模样本总量少的情况,需要按照最大、最小样本设计策略重新进行观察期和表现期以及观察点的选择,同时结合计算能力以及外部数据征信成本进行综合考量,在这里不进行过多赘述。
对于样本不均衡问题,一般有三种处理方法:欠采样、过采样和样本分类阈值移动。欠采样是减少数量较多那一类样本(一般是好样本)的数量,使得正负样本比例均衡;过采样是增加数量较少那一类样本(一般是坏样本)的数量,使得正负样本比例均衡。
样本分类阈值移动的设计方法是,在分类学习中面对样本不均衡时,我们可以采用原有不均衡的样本进行学习,然后通过改变决策规则来做分类,比如在样本均衡时我们05作为分类阈值,而在样本不均衡的情况下我们可以规定预测概率需要达到08才能被预测为多数类。
至此,在经过确定最大、最小样本、剔除灰样本、处理样本不均衡和分层后,样本设计基本完成,但有一点需要提醒各位读者,需要独立关注因数据缺失等原因剔除的样本,虽然他们可能成为样本的噪音数据,但他们也通常有很高或很低的违约率特性,对于一些特定场景模型如反欺诈模型,往往对于此类特征的关注度更高。
4
小结没有完全意义的样本设计和最优抽取策略,在一些情况下有用的策略可能在其他情景下就失去效力,最根本的问题是样本是否能代表所有群体的特征。我们需要在提取数据前审视样本设计和抽样策略,尤其是从外部来源提取的数据。
6数据清洗数据清洗这四个字对于常常做数据分析建模的同学们一定不陌生,不管在实际工作中有没有真正做清洗,我们都会先把这个口号喊出来,数据清洗这块其实我也一直不太愿意说,因为这种活实在太结合业务理解了,而且还见仁见智,并不是简简单单的三步缺失值填补、异常值删除、错误值处理。但是做数据建模,也不能跳过这步,那我就从操作手法和操作目的两个方面来聊聊我认为怎么做数据清洗。
1
缺失值数据缺失引起的原因多种多样,大致可以概括为IT系统原因、前端录入原因和接入征信公司原因。
- 对于IT系统缺陷导致的数据缺失,在你无能为力的时候请尽快联系IT人员。
- 对于前端录入数据的缺失,通过逻辑匹配方式可以选择不同手段去填补。
- 对于接入征信公司原因导致某些第三方数据字段有缺失,那我们要理解这个缺失值的内在含义,有些情况的缺失我们是不能去填补的,就作为missing存在。
在做缺失值填补前,同学们应该先看看有哪些字段是缺失的,缺失比例如何,是否对我们业务和模型有作用。如果这些缺失字段是不必要的,那我们没有必要花功夫去填补它们。
2
具体操作手法21 筛选出缺失的数据
google或者bau上能找到很多关于查找缺失值的小代码,大部分筛选逻辑按照数据类型做分类筛选,运用数组和do循环,具体代码我就不展示在文章里了。黑猫白猫能抓住老鼠的就是好猫。
22 查看缺失比例,判断是否必要
对筛选出缺失数据字段的missing数据集,通过观察缺失比例和建模产品的逾期率去判断是否有必要做缺失值填补。
比如,建模产品的逾期率比较高,也就是建模样本里的坏样本比较多,变量分箱的目的是更希望将坏样本分到一个组里,这个时候一个分箱变量的缺失率很高,不论是做特征值替换、线性插值、逻辑匹配填补或者作为MISSING处理,都容易造成分箱组里sample的极端分布不均,这个时候如果你做并组,会造成分箱区分度下降,如果你不做并组,这个分箱变量会有不稳定的潜在隐患。
所以,对于逾期率高的产品建模,缺失比例高的话就不建议进入模型,同比,对于逾期率低的建模产品,缺失率的容忍度就好了很多,具体这个balance的线在哪里,我提供一个经验建议:
- 如果逾期率大约40以上,可接受的缺失比例在15以下;
- 如果逾期率大约8以下,可接受的缺失比例在70以下;
更严谨的做法是每次建模时候根据我上面的逻辑去校验样本可接受缺失比例的balance point,然后判断哪些字段是需要继续操作,哪些字段可以直接舍弃。
23 缺失值填补or not
通过第二步我们已经知道哪些字段是可以继续操作下去的,这个时候我们就要选择用什么方法去对缺失数据处理。
统计学上的缺失值处理常用手法有特征值(mean\median…)替换、线性插值等,但实际建模中更常用的是结合业务逻辑匹配,或者作为MISSING不做处理。
举个例子,如果我们分析产品的业务线前端采集到了用户的身份证照片,这个照片不仅仅可以用来ORC活体检测,身份证里的信息数据可以进行逻辑匹配填补诸如常住地、性别、年龄等这些因为前段录入操作原因造成的数据缺失。
比如我们的age这个字段有数据缺失,但是缺失比例是我们可接受范围内,此时我们就可以通过身份证号的编码规则来推断匹配这个申请客户的年龄,通过这种匹配方法填补的缺失值往往更加能反应客户的真实信息。
对于接入不同征信公司造成的某些关键字段的数据缺失,同样缺失比例是我们可接受范围内,这个时候就需要参考这个字段的衍生逻辑来选择用什么方法来填补,更多的做法是不做缺失值填补,作为MISSING单独一组。
7特征衍生造衍生变量是整个开发评分卡模型过程中最重要、最艰辛也最有趣的一个节点。
最重要是因为衍生变量的好坏往往会影响评分卡模型的各种测评指标,决定策略的反欺诈能力;
最艰辛是因为造衍生变量除了要基于业务变量理解之外还要开发人员大开脑洞组合基础变量,有很多时候花了一天时间造好一两个衍生变量但最后都进不了模型,这个时候就又要重新去开脑洞进行变量的组合。
当然现在也可以结合一些算法比如DT、Random Forrest进行特征工程造衍生变量,但是造好的变量是否可以进入评分卡模型以及是否容易在策略引擎上部署等问题又要反复校验(如果你公司是基于Python或则R自主开发的strategy system,那衍生变量的部署就变的比较方便);
最有趣是因为造变量过程虽然艰辛,但造好变量进入模型上线部署的成就感是很强烈的。
那么大家可能会问,到底如何造衍生变量呢?
这里没有绝对方法,也需要你沉下心研究。
既然我说了造衍生变量是一个开脑洞的活儿,每个人的脑洞又不一样,当然没有一个绝对的逻辑或者公式去套用了。以下是我分享一些造变量的个人小技巧,希望可以帮助读者朋友们打开思想枷锁,造出变量IV较高的好变量。
- 善用产品准入规则变量,弱弱联合会变强;
- 多参考Strategy变量,往往有意想不到的效果;
- 风控核心防欺诈,设身处境去思考;
- 风控基本出发点是评估个人还款能力和还款意愿;
- 合理利用一些算法,省时省力又高效;
8特征变量筛选在建模的过程中,通过变量交叉或者GBDT等算法可能衍生出成百上千个指标,然而最终入模的往往只有十几个。那么这十几个变量是如何经过层层筛选出人头地的呢?在这其中往往有很多层考量。
1
缺失率一个变量,如果缺失率过高,他所包含的信息往往也比较少,做缺失值填补也会比较困难。同时该变量如果在建模样本中大量缺失,很可能投入生产后也是差不多的情况,那进入模型也就没有太大的意义了。
2
区分能力一般情况下,如果模型中加入过多的指标往往会比较冗余,因此在有限个指标中要使模型的效果更佳,自然需要挑选对坏样本识别能力较强的变量。通常的做法是计算每个变量的IV值,或者单变量KSAR值,并从大到小进行排序,挑选排名前多少的变量,或者大于一定阈值的变量。对于IV值较低的变量,他们本身能提供给模型的贡献也比较少,剔除掉也不足为惜了。3
稳定性一个优秀的模型,除了能够很好的区分好坏样本以外,还需要足够的稳定,防止随着时间的推移过快衰退的现象出现。因此模型中的每一个变量也需要足够的稳定。要进行判断,可以计算不同时间切片之间该指标的PSI。比如说如果使用了2018年全年的样本作为建模样本的话,可以将样本切分为上半年和下半年两部分,并计算每个指标在这两个部分间的PSI。如果变量的PSI02,说明随着时间推移该变量的分布发生了很大的改变,那么如果它成为了入模变量,往往会导致模型整体变得不稳定。
4
相关性共线性一个指标光是自己表现的足够好也是没有用的,还要考虑它和所有其他自变量之间的团队协作能力。一个优秀的团队,往往需要队员之间取长补短,各自分工,而不是大家擅长的事物都一样,而短板却无人弥补。放在模型上面也是一样的道理。如果模型中的自变量之间具有完全多重共线性,那么训练出来的系数便会失去统计学意义。即使是不完全共线性,也会导致系数失真,从而导致模型的效果无法达到预期。
这个时候,如果单纯计算变量的VIF,虽然能检验共线性问题是否存在,但是却无法判断应该保留哪些变量、剔除哪些变量。因此可以综合考虑单变量或多变量的AR值。
举个例子,如果变量A同时和变量B、变量C存在较强相关性,而变量B和变量C相关性较低,那么究竟应该保留A还是同时保留B和C呢?有一个比较简单的思路,可以计算变量A的单变量AR值,同时用变量B和变量C训练一个简易的逻辑回归模型,并计算这个模型的AR值,通过比较这两个单变量和模型的AR值来判断到底应该保留A还是B+C。如果变量A的AR值比模型的AR值还高,就说明变量A的表现会优于B和C的综合表现,可以名正言顺的剔除掉B和C了。
5
业务逻辑除了上面几点可以通过各种指标量化的筛选条件以外,业务逻辑也往往是一个不可忽视的门槛。
比如说学历这个指标,从直观上来看往往学历越高,信用风险就越低。因此在分箱的过程中,各箱的坏样本率也需要符合这一趋势。否则最后转换为标准评分卡后,低学历客户的单项得分比高学历客户的还高,这显然是不合常理的。对于趋势与业务逻辑不一致的指标,往往也会予以剔除,来满足评分模型的可解释性。这就是为什么常说,做模型一定要将数据与业务相结合,光靠数据跑出来而没有业务做支撑的模型,往往也是不可靠的。
6
逐步回归逐步回归是一个不断往模型中增加或删除变量,直到找到最优的变量组合、新增变量不再产生具有统计显着意义的增量效应为止。一般来说,这就是指标筛选的最后一步了,如果使用SAS进行逐步回归往往也能控制住入模变量的显着性,因此此时最需要注意的是模型拟合出来的系数方向是否一致,如果出现不一致的情况,可以考虑在变量清单中剔除掉这部分指标,重新进行逐步回归分析,直到系数方向一致为止。
经过了这么多步骤的严格筛选,最终留下的入模指标都是整个指标池中的佼佼者,肩负着判断客户信用风险的伟大使命。它们个人能力强,团队协作也足够优秀,同时还非常稳定,才能让各路违约风险无处遁形。
9模型变量分箱在搭建逻辑回归评分卡模型的时候,大多数步骤都可以用打包好的函数或代码快速实现,而最需要人工干预的步骤就是分箱。毕竟程序再厉害,也不可能懂你的业务逻辑,不会知道怎样的趋势才是符合实际的。因此,建模er经常会花费大量的时间在调整每个变量的分箱上。有的时候调整的方向正确的话,最终模型的K-S值甚至可能有从035到04的变化。
在R语言中,想要知道决策树的最优分箱切点,只需要一个函数:
library (smbinning)
smbinning (df, FLAG, Variable, p = 005)
其中,df是指标所在的数据集,FLAG是二分类的目标变量,Variable是需要进行分箱的指标名字,p是指每一箱里至少有多少比例的样本,取值范围为0~05。
然而光是知道了决策树的最优分箱切点,每一箱的好坏比趋势却不一定符合业务逻辑,这个时候可能就需要根据经验人为的去调整分箱切点。同时,如果好坏样本本身并不均衡,坏样本占比过少,还可能会报No significant splits的错误。既然程序没办法给你答案,就只能自己寻找答案了。
除了最优分箱,smbinning包中还可以自己输入分箱切点来查看每一箱的好坏样本分布情况:
smbinningcustom (df, FLAG, Variable, cuts)
除了最后的cuts参数,其他的都和smbinning是一致的。那么显而易见,cuts就是我们分箱的切点了,用向量c()的形式表达即可。
在人工调整分箱的时候,需要注意的地方有:
- 每个分箱之间的好坏比要有一定差异;
- 每一箱中的样本数量不能过少;
- 分箱的好坏比趋势要与业务常识保持一致;
- 分箱切点的取值要符合业务常识。
具体人工分箱的切点如何选取,这个就比较因人而异了。可以在最优分箱的基础上进行调整,也可以等频或等距分箱后参考好坏比趋势进行合并和调整。
10模型拟合逻辑回归拟合模型,我主要聊逻辑回归的变量选择方法
模型建立的主要工作就是变量选择,一般统计分析软件(比如SAS、Python等)的logistic回归程序都提供自动变量选择的功能,包括了前向逐步(Forard Stepise)回归、后向逐步(Backard Stepise)回归和混合逐步(Combined Stepise)回归。
他们三者有什么差别,我该如何选择变量选择方法呢?
1
前向逐步(Forard Stepise)回归顾名思义,FS(Forard Stepise)回归是让所有建模指标变量一个一个地进入回归方程,按照预先设定的显着性检验标准,最显着的指标变量最先进入,然后其次就是次显着的指标变量进入,依次类推。
2
后向逐步(Back Stepise)回归明白了FS回归,BS回归就很容易理解。它的逻辑是首先让全部指标变量都进入回归方程,按照预先设定的显着性检验标准,把不显着的变量逐一剔除。
3
混合逐步(Combined Stepise)回归CS回归是融合FS和BS回归的优缺点,提出的一种变量选择方法,它的原理如下:按照预先设定的显着性检验标准,逐步加入或者剔除指标变量,可以由前向逐步回归开始,也可以由后向逐步回归开始,例如由前向逐步回归开始,当新指标变量进入时,如果老指标变量不满足预先设定的标准可以后向剔除,而对比前向逐步回归,变量一旦进入,就不再退出。
说白了,CS回归就是指标变量有进有出,不停迭代对比指标变量对预测结果的有效显着性。
我们在评分模型变量选择方法上,经验建议优先选择Combined Stepise,其次是Forard Stepise。
11模型评估常用指标对于训练出来的Score Model,需要一系列指标对Model进行关于稳定性、区分能力等效用来度量。
1
KSKS曲线是一种表示评分卡有效性的可视化工具,基于经验累积分布函数(ECDF)画出好客户和坏客户在分数区间上的累积分布。