随着互联网渗透到生活中的各个角落,金融行业也似乎找到了与互联网的完美结合。互联网金融作为一个新的行业如今正在上升的势头上,因而也涌现了越来越多的P2P公司。但是作为一个互金公司来讲,风险永远是一个最重要的话题。那么如何利用机器学习以及大数据技术来降低风险呢?如何建立信用评分的模型呢?
本文将针对这些问题简单介绍互金行业中授信产品的风控建模过程,内容主要如下:
- 信用风险定义
- 信用风险评分卡类型
- 信用评分模型建立的基本流程
1信用风险定义
风险管理的概念
风险管理最早起源于美国。1930年由美国管理协会保险部最先倡导风险管理,后面在全球流行开来,随着互联网的迅猛发展,大数据、数据挖掘和机器学习等新兴技术开始出现,让风险管理更为精准。
他们通过收集银行系统本身的征信数据以及用户在互联网上的的各种数据,包括人际关系、历史消费行为、身份特征等,通过大数据“画像”技术,对用户进行全面的定位,由此来预测用户的履约能力、降低信贷风险。
什么是信用风险?
信用风险又称违约风险,是指借款人、证券发行人或交易对方因种种原因,不愿或无力履行合同条件而构成违约,致使银行、投资者或交易对方遭受损失的可能性。
万事都有风险,但对于金融行业来讲,风险控制尤为重要。如何能够在控制风险的情况下持续盈利才是最终的赢家,如果没有风险控制,那么后果将会不堪设想。近几年来消费金融一直在迅速增长,P2P公司层出不穷,比如汽车贷款,住房贷款,信用卡贷款,小额贷款等,增长趋势迅猛。当然,增长迅猛的同时也出现了很多P2P暴雷跑路的公司。
究其原因有很多,其中一个就是风险控制。对于海量的用户数据处理,传统的人工授信方式显然是很乏力的,因此现在大多互联网金融P2P公司都采用机器学习、大数据等技术对风险进行自动化评估,来最大程度的降低风险。
当然,这些技术的应用并不能百分百的保证零风险,因为有很多人为因素是不可控的,但是信用风控技术在很大程度上帮助金融企业进行了很好的风险管控,通过降低风险减少损失来间接增加利润。
2 信用风险评分卡类型
信用评级
用过信用卡的朋友都知道,开卡需要申请(筛选好坏用户),消费了就需要定期进行债务偿还,如果不偿还就有人发短信催你。因此,信用评级可根据用户的整个使用周期分为以下四种类型:
- 申请者评级(Application):个人客户申请相应金融产品,对用户进行筛选分类,判断时好时坏,是否通过申请(A卡)
- 行为评级(Behavier):个人客户通过申请后在使用期间的历史行为数据进行评级,对客户可能出现的逾期、延期等行为进行预测(B卡)
- 催收评级(Collection):对业务中存量客户是否需要催收的预测(C卡)
- 欺诈评级(Fraud):业务中新客户可能存在的欺诈行为的预测(F卡)
每个评级阶段的模型都是不一样的,因为每个阶段的用户显现的特征都不一样,因此需要针对各个阶段进行单独的模型开发。
信用评分卡
尽管有了评级分类,但是信用对于我们来说仍然是一个比较抽象的概念,因此可以通过量化的方式来更直观的使用信用,而分数是一种不错的量化方式,通过分数的高低来衡量风险概率,分数越高代表信用越好。信用评分卡就是通过大数据的统计分析,根据用户的各种资料信息,对用户信用进行评估(打分)。
根据以上信用评级,相应的可以分为四种评分卡:
- 申请评分卡(A卡)
- 行为评分卡(B卡)
- 催收评分卡(C卡)
- 欺诈评分卡(F卡)
3 信用评分建模的基本流程
在开发信用风险模型之前,首先要明确我们需要解决的问题,确定评分卡模型的类别。下面将对申请评分卡建模(主要目的是区分好坏客户)流程进行简单的介绍。
(1)数据获取
除了企业内部自有的数据外,还有第三方机构数据支持,比如芝麻信用,征信局等。通过大数据分析用户的各种数据来达到最终目的,数据维度很广,可以包括:用户基础属性,用户行为,用户网购,用户APP行为等。在数据质量不差的情况下,数量越多越好,能留的一个不落下,后续再进行甄别筛选。
这部分的技术栈主要有:Mysql,Hive,Hbase,Spark,Python等。
(2)EDA数据探索
数据探索也是很重要的一步,主要考察数据的质量,包括:数据缺失值,数据异常值,数据一致性,数据分布特征,以及数据之间的关联性等。通常可以使用描述性统计指标,如均值,中位数,众数,方差/标准差等进行宏观上的度量,也可以使用可视化方法辅助进行数据分布,以及关联性等的初步分析工作。
- 缺失值处理
根据缺失情况(是否随机,以及缺失量等)可选择使用均值,众数,中位数等填充,也可以用机器学习模型来填充缺失值(常见算法有随机森林,决策树,kNN等)。
具体使用方法可参考:【Python数据分析基础】: 数据缺失值处理
- 异常值处理
可根据异常的情况考虑使用3∂原则,箱线图,散点图,基于距离,基于密度,基于聚类等一系列的方法进行离群点检测。对于异常值的处理可以采用移除,平均值修正,视为缺失值,或者不处理等。
具体使用方法可参考:【Python数据分析基础】: 异常值检测和处理
- 数据分布以及关联性
可以考虑结合可视化的方法进一步的观察:数据分布是否均衡,数据特征之间的联系,以及数据特征与目标变量之间的联系等进行了解,比如下面的探索性分析:
(3)数据预处理
数据预处理主要包括特征转换,特征编码,特征选择,特征共线性处理,以及创建衍生变量等一系列的处理方法。
- 特征转换和编码
在信用评分模型的变量选择中,如果使用逻辑回归模型,那么就需对所有特征进行分箱离散化(一般是先细分再粗分),这样可以增加模型对非线性的表达,让模型更稳定。然后再进行woe编码,因为woe的转换公式与逻辑回归模型上非常相似,便于生成评分系统。
- 特征选择
特征选择,在数据中是非常中重要,目的在于帮助我们挑选出最有意义的特征。选择特征最终目的是挑选能区分好用户或坏用户的强相关特征。
根据所使用的模型可以通过基尼系数或信息价值IV找到显著特征项,也可以通过LASSO、LR、RF模型等对特征做重要性的筛选。当然,还有很多其它的方法,这里仅介绍这几种。
- IV:基于woe编码,可以衡量特征信息重要程序;
- LASSO:主要适合基于L1的正则惩罚过滤对区分好坏用户不重要的特征;
- LR:通过拟合的参数排序得到特征的重要性程度;
- RF:集成学习(bagging),依据算法的附加功能进行特征的重要性排序;
最后要说的是,特征选择要结合业务,根据业务的理解挑选解释型强且权重较大的特征变量。
(4)模型建立
模型建立会根据实际情况进行选择,比如是否要使用单模型,或者在单模型中各种模型好坏的比较而最终确认。
在信用评分卡建模中,用到最常用的方法就是逻辑回归(LR)。虽然是传统的模型,但是由于其自身特点,加上自变量进行了证据权重转换(WOE),Logistic回归的结果可以直接转换为一个汇总表,即所谓的标准评分卡格式,这对于区分好坏用户以及评分卡的建立非常适用。目前对于它的使用和部署上线等已经非常成熟,是很多企业的不二选择。
除了LR外,神经网络,Xgboost等高级模型也会被使用,不过综合考虑LR目前能够满足大部分的需求且部署上线容易。
(5)模型评估
针对信用评分卡应用的评估模型有很多,包括:ROC/AUC,KS,PSI,LIFT等一些评估方法,下面着重介绍两个ROC和KS值。
- ROC/AUC
ROC基于混淆矩阵,对于数据类别不均衡有很好的效果。ROC值一般在0.5-1.0之间。值越大表示模型判断准确性越高(曲线越偏左上越好),即越接近1越好。ROC=0.5表示模型的预测能力与随机结果没有差别,AUC系数代表曲线下的面积,不依赖于阈值,AUC值越高,模型的风险区分能力越强。
- KS值
KS值表示了模型正负区分开来的能力。值越大,模型的预测准确性越好。一般,KS>0.4即可认为模型有比较好的预测准确性,KS值只能反映出哪个分段是区分最大的,而不能总体反映出所有分段的效果。
下面是一个真实的在线授信产品的风控建模的流程图,可参考进行理解:
以上是对信用评分分类以及风控建模基本流程的介绍,欢迎大家指正。对于文中提及的一些细节部分以及Python编程实现,后续会与大家慢慢分享。
参考:
https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test