【摘 要】近年来,消费金融飞速发展, 然而市场中的信贷违约风险也随之增大。在这种情况下, 个人网络消费信用保险应运而生。信用保险是以信用风险为标的的保险,保险公司根据不同的信用风险水平收取高低不同的保费,是符合市场规律的做法。违约概率PD是保费厘定公式中的一个重要因子,本文介绍了用XGBoost[1]算法构建违约概率PD预测模型的过程。XGBoost算法是一种高效准确的分类算法,通过本次实践检验,XGBoost确实表现出了优越的性能。 【关键词】信用保险;保费定价;XGBoost;信用风险 引言: 作为拉动经济的三驾马车之一,消费正在成为拉动我国经济增长的火车头,消费金融凭借"先享后付"的特点,对刺激消费有很大的作用。伴随着互联网和金融科技的飞速发展,消费金融在最近几年也呈现了爆发式增长,然而,市场中的信贷违约风险也随之增大。针对承接风险的市场需求,个人网络消费信用保险应运而生。个人网络消费信用保险是指在保险期间内,通过互联网进行信用消费活动的用户未能按照网络消费合同约定的付款金额和期限完成付款义务,则由保险人按约定向被保险人支付该用户网络消费项下的应还全部欠款。投保人和被保险人是消费金融公司或者资金出借方,保险人就是保险公司。信用保险是以信用风险为标的的保险,保险公司根据不同的信用风险水平收取高低不同的保费,是符合市场规律的做法。违约概率PD是保费厘定公式中的一个重要因子,本文以某保险公司个人网络消费信用保险产品的差异化定价项目为背景,介绍了笔者应用历史数据和XGBoost算法,构建违约概率预测模型的过程。模型的应用将使每一份贷款申请都能得到自己的违约概率,从而得到自己的保费定价,最终实现保险产品的差异化定价。 eXtreme Gradient Boosting (XGBoost)是一种基于梯度Boosting 的集成学习算法,其原理是通过弱分类器的迭代计算实现准确的分类效果。梯度Boosting 因高效性和准确性被广泛应用于分类和预测问题。本文将XGBoost 引入到信用风险量化的问题中。结果表明,与传统机器学习算法相比,XGBoost具有速度快、准确度高等优势。 一、数据描述 本文所使用的数据集来源于一家消费金融平台,他们的产品是一个用户和消费信贷企业之间的撮合平台,用户在此平台上申请贷款,最后平台会根据用户的申请资料对接符合其条件的贷款机构,由贷款机构放款给用户。贷款金额分三个档次:2000元,4000元,6000元,还款期限为三个月,每月等额本息还款。 此数据集包含从2016年9月到2017年1月在此消费金融平台申请贷款的共499971名用户的多维度信用相关数据和一个完整的还款周期的表现数据。信用相关数据包括申请者的基本申请信息,历史履约记录,机构评分和行为日期等方面,这些数据在经过处理后将作为建立风控模型的自变量X。还款表现数据在根据违约定义进行处理后将作为建立风控模型的因变量Y。原始变量的具体字段汇总于表1。 二、数据预处理 数据预处理对数据挖掘是一个重要的问题,因为现实中的数据多半是不完整的、有噪声和不一致的。数据预处理包括数据清理、数据集成、数据变换和数据规约[2]。 (一)数据清理 数据清理进行了以下操作:将年龄小于零的值替换为空值;历史逾期次数和历史逾期天数补零;用众数填补离散变量,用中位数填补连续变量;将学历中的代表"未知"的值0置换为10,以使学历在数值上变为从"硕士以上"到"未知"的有序变量;将用户评级A、B、C、D用数字1、2、3、4替代,使此变量从类别变量变为有序变量。 (二)数据变换 数据变换进行了以下操作:将籍贯和居住地中的省和市分开,省和市分别成为新字段;用申请时间减去合同开始时间,衍生出时间差变量,可以反映贷款人对贷款需求的紧急程度,记为APPSubCtrctStt;将申请时间转化为上旬中旬和下旬,衍生出一个新变量;将合同开始时间转化为上旬中旬和下旬,衍生出一个新变量;用历史最大逾期天数除以借款次数,衍生出一个变量,记为hist_borrow_rate;用历史最大逾期天数除以借款次数,衍生出一个变量,如果历史借款次数是空值,给此变量付值0.05,用以区分复贷没有逾期的客户和首贷没有逾期的客户,记为hist_borrow_rate1;对类别变量: 性别,职业,收入类型,是否有社保,是否有房,是否有信用卡,申请月份上中下旬,合同开始时间上中下旬,居住城市水平(一二三四线),籍贯城市水平(一二三四线),居住省方位和籍贯省方位,进行one-hot编码;对数值型变量:年龄,学历,收入等级,社交分,基础信息分,历史行为分,通信行为分,量信分,好信分,芝麻粉,用户评级,历史借款次数,历史最大逾期天数,合同金额,月利率,月服务费,还款总额,月还款额,本息和,APPSubCtrctStt,hist_borrow_rate,hist_borrow_rate1,进行min-max标准化;构造因变量Y:在我们的业务中,如果贷款人在3期还款中,只要有1期还款未在还款日三十天内完成全额还款,即算作逾期,此类客户被定义为违约客户,也就是因变量中的类别1。 在生成因变量Y后,统计违约客户的总量,为53313个,占到总数据量的10.7%,远少于好客户的总量,所以建模数据属于类别不平衡数据,需要在建模过程中进行处理。 (三)数据规约 数据规约进行了以下操作:将居住地城市和籍贯城市根据普遍的认知划分为一二三四线;将居住地省和籍贯省根据中国地理区划划分为華东、华北、华中、华南、西北、西南、东北、未知;变量筛选:首先用树模型(Extremely randomized trees[3],极端随机树)计算变量重要性,并将变量按照重要性排序。经计算,重要性排在前十位的变量为:芝麻分,量信分,基础信息分,通信行为分,历史行为分,社交分,用户评级,合同开始日期和申请日期的相差天数,年龄,好信分, 如图1所示。可见,第三方机构评分对预测客户是否可能违约有较大贡献,同时,衍生变量合同开始日期和申请日期的相差天数也起到了较好的作用,说明违约客户更急于获得贷款。之后,计算两两变量间的Pearson相关系数,如果一对变量的相关系数大于0.9, 说明此对变量共线性严重,则删掉此对变量中重要性较低的那个变量。经计算,总还款额,本息和,hist_borrow_rate和合同金额这四个变量被删除。 三、机器学习算法建模 (一)训练集测试集划分 以上全部数据被划分为训练集和测试集两个集合,训练集占比70%,测试集占比30%。在分裂时使用分层抽样法使坏客户数在训练集和在测试集中的比例,与原数据集一致。 (二)XGBoost算法 提升Boosting方法是一种常用的统计学习方法。应用广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。 Gradient Boosting [4]是Boosting 的一个改进版本,它是为了解决对更一般的損失函数的优化问题而由Freidman提出的,它的每一次计算都是为了减少上一次的残差,在残差减小的梯度方向上建立模型,这与传统的Boosting中关注正确错误的样本加权有着很大的区别。其算法流程如下所示: XGBoost的全称是 eXtreme Gradient Boosting。它是 Gradient Boosting的一个 c++ 实现。XGBoost 最大的特点在于,它能够自动利用 CPU 的多线程进行并行,同时在算法上对Gradient Boosting加以改进,从而提高了模型的精度和泛化能力。 (三)算法调参 为了使模型得到更好的效果,本次建模过程使用了网格搜索法和5折交叉验证法对算法调参。算法参数最终确定为xgb(max_depth=6,n_estimators=280,booster="gbtree", n_jobs=4,scale_pos_weight=9,silent=0, random_state=2)。前文已经提到,建模数据中好客户的数量远远大于坏客户的数量,而分类器倾向于将测试样本判入训练样本多的类别[5]。相对于审批通过更多的好客户,我们更希望识别并拒绝更多的坏客户,选项scale_pos_weight正是为解决这一问题而设定,此值可根据大类别与小类别的比值和判错的代价而进行调节,此处被设置为9,为大类别与小类别的比值。 (四)其他分类方法 Logistic regression模型也是一种常用的解决分类问题的机器学习方法,且在风险评估领域有着30年以上[6]的应用历史和广泛的应用。Logistic regression模型在变量解释性、稳定性等方面有着较大的优势,是目前传统金融机构对客户进行信用风险分析时所采用的主要评估模型[7]。为了获取最优的分类预测模型,我们也用同样的数据建立了Logistic regression模型,并对两种模型的预测效果进行了对比。 (五)评价标准 对于违约概率的问题,我们不但关注全部样本的预测准确率(Accuracy),而且还更关注对于阳性样本,即违约客户的预测是否准确,因此采用准确率和阳性样本预测的准召回率(recall)作为模型评价指标: 其中,P为阳性样本总数,N为阴性样本总数。Tp为正确预测的阳性样本数量,Tn为正确预测的阴性样本数量。AUC和K-S统计量[8]也是分类模型评价指标,对于一个预测效果优于随机猜测的二分类模型来说,它的AUC值应该在0.5到1之间,而且越接近1效果越好。K-S统计量是衡量模型区分好坏客户能力的指标,如果数值在0.41~0.5之间,则认为模型具有中等的区分能力。 四、结果与讨论 (一)结果比较 在XGBoost的树模型和logistic regression模型建立完成后,采用测试集样本对建模结果进行预测,两种模型的结果如表2所列。结果表明,XGBoost与Logistic regression相比在四项评价指标上均有优势。 五、结语 本文采用XGBoost分类算法,基于消费金融公司的真实借贷用户数据进行了特征工程和分类建模的工作,并与传统的logistic regression方法进行了对比,得到了更加准确的预测结果。通过对变量重要性进行分析,我们识别了对模型贡献较高的变量。此项目中的机器学习算法最终能够有效地预测出每个用户的违约概率,对将先进的机器学习算法应用于保险保费定价领域有重要的现实意义。 【参考文献】 [1] Chen T,He T,Benesty M. xgboost:Extreme Gradient Boosting[J].2016, 5(9):222-208. [2] Jiawei Han, Micheline Kamber.数据挖掘概念与技术(第二版),机械工业出版社,2007年:30-65. [3] P. Geurts, D. Ernst., and L. Wehenkel, "Extremely randomized trees", Machine Learning, 63(1), 3-42, 2006. [4] Friedman J H. Greedy Function Approximation:A Gradient Boosting Machine[J]. Annals of Statistics,2000,29(5):1189-1232. [5] 王星 等.大数据分析与应用,清华大学出版社,2013年:36-40. [6] 马丰明. Logistic回归在我国个人信用评分中的应用研究[D]. 上海财经大学, 2008. [7]王梦雪. 基于机器学习技术的P2P风控模型研究[D].哈尔滨工业大学,2017. [8] 单良, 茆小林.互联网金融时代消费信贷评分建模与应用,2015年:141-144.