金融风控——Python建模

金融风控基础篇

  • 风控的基本概念
    • 0 基于AI的风控应用
    • 1 什么是信用风险?
    • 2 信用模型和欺诈模型的区别
    • 3 小额现金贷 vs 大额信贷
    • 4 信用评分建模的基本流程
    • 5 和风控建模相关的问题有:
  • 数据清洗的全过程
    • 什么是 ETL
    • 交叉验证的优势及实现方法
  • 建立模型
  • 模型的评估方法

风控的基本概念

如果说金融产品的核心是风控,那么风控的核心是:信用评估+模型规则。
互联网金融特性与产品
传统金融机构+非金融机构

传统金融机构: 传统金融业务的互联网创新以及电商化创新、APP软件等

非金融机构:利用互联网技术进行金融运作的电商企业
(P2P)模式的网络借贷平台
众筹模式的网络投资平台
挖财类(模式)的手机理财APP(理财宝类)
第三方支付平台等。

0 基于AI的风控应用

一个典型的风控体系,包含了贷前、贷中和贷后三个阶段,每个阶段都有相应的研究问题。

贷前主要解决用户准入和风险定价问题,即面对一个新申请的进件用户,判断用户是否符合产品的放款条件及相应的放款额度、价格、期限等问题。主要包括三类问题:

1)反欺诈识别:根据用户提交的材料进行身份核实,确保用户不存在欺诈行为;

2)信用评级:与传统银行的信用评分卡原理一致,综合用户的社交数据、行为数据、收入数据等,判定用户的信用风险等级,评估用户的履约能力;

3)风险定价:根据用户的负债能力和收入稳定性,判断用户可承担的月供金额,确定用户的放款额度、偿还期限等,并根据用户风险等级确定用户的费率。这三个问题往往是互相影响、互为前提的。比如,对一个月收入3000的用户来说,月供在1000左右,用户可能履约良好,信用等级良好;但如果月供提高到4000,严重超出了其收入水平,即便不是有意欺诈,也可能出现断供的情况,从而得到比较差的信用等级。

贷中一般是针对已放款用户展开。主要研究问题包括:

1)还款风险监控:比如用户会否因失业、过度举债、家庭突发状况等一些突发原因导致还款能力降低,出现逾期风险;

2)贷中风险的政策制定:当用户出现逾期风险时,如何根据用户风险原因制定相应的策略,减少机构损失。如为经济暂时困难的用户主动延长还款期限、减少月供,甚至提供延期还款服务;

3)用户复贷:对履约良好,且收入水平明显改善的用户,提供增信服务,以满足其更高水平的消费信贷需求;或在其授信额度范围内,提供循环信贷服务。

贷后一般是针对逾期用户展开。由于用户已经出现逾期,贷后风控的目标是如何刺激用户还款减少损失。主要研究问题包括:

1)催收评分卡:将用户按照催收难度划分等级,并制定相应的催收策略。如对偶然逾期、出现暂时性困难的用户,主动沟通帮助其度过眼前困难,一方面减少了机构损失,另一方面也有助于与用户建立长远的信任关系;而对严重逾期的用户,可能需要让更有催收经验的人员介入沟通,甚至采取必要的法律途径;

2)催收策略制定:由于互联网金融主要进行电话催收,而用户提供的通话记录或联系人往往内容复杂且包含大量噪音,如何从中准确找出联系紧密的电话,提升催收效率;

3)失联修复:对已经失联用户,如何触达,进行用户找回;

其中,贷前反欺诈评分卡一般称为F卡;信用评分卡一般称为A卡;贷中评分卡称为B卡;贷后催收评分卡称为C卡。

下面重点介绍A卡的建模过程:
金融风控——Python建模_第1张图片
以A卡建模为例,建模目的包括如下几方面:

1)确保政策的一致性,尽量减少人工干预,并利用机器学习的优势提升决策效率;

2)准确反映并量化用户的风险级别,政策人员可以控制和减少风险损失,因此对评分卡等级的排序能力、稳定性要求会比较高。

信贷类问题一大特点是时效低,反馈周期长。
在纯互联网领域,如广告CTR预估、推荐算法等,算法的反馈周期往往是秒级。在广告CTR预估问题中,用户对所展示的广告如果感兴趣,几秒之内便会决定是否要点击。同时,借助互联网巨大的流量优势,一天时间便能收集到千万甚至亿级的样本,从而满足算法快速迭代的需求。CTR预估问题中,对算法时效性要求往往更高。一些时效类特征即便在几天内对广告投放有指导意义,只要模型能够及时捕捉到这些特征的变化,也可以放心的将这类特征加入模型中。

但在金融场景下,用户从拿到借款到有还款表现,周期往往是以月计。有些场景下要等半年甚至一年以上的表现周期,才可以充分观察到信贷人群的实际表现。从而一个模型或策略至少要等几个月甚至一年以上才能评估其实际效果。因此,在金融场景下,对算法的稳定性要求更高,模型分析人员更倾向于捕捉长期稳定有效的特征,一些实时热点类的话题反而不适合放到模型中。

好坏用户定义:对样本标签的定义,需要与实际业务场景、政策目标相一致,并综合考虑样本量、业务历史等的需要。如在现金分期场景中,如果画一下用户回款率和逾期天数趋势分布曲线,用户逾期30天以后回款率便已经趋于稳定,因此可以30天以上逾期为筛选坏样本的依据。在某些场景下,如曾经的Payday Loan,由于整个业务周期只有半月或1个月,为加快模型迭代速度,有时甚至会定义7+甚至1+逾期用户为坏客户。在一些银行场景中,出于坏账计提考虑,可能定义90天以上逾期为坏客户。

获取样本

在实际项目中,综合考虑业务发展历史和建模目标,选取合适的建模样本集,是影响模型效果的关键因素之一。建模人员有必要提前了解、沟通样本时段中的关键政策变化,市场环境波动及产品结构调整等因素,并充分考虑到这些因素对样本结构的影响。

如对现金贷场景,去年12月份的监管政策直接导致各小贷机构产品逾期率异常飙升,本来不会逾期的用户大范围产生了逾期,而在正常市场环境下选取建模样本时,有必要排除这段时间的样本。

对金融场景来说,观察周期越长,样本表现越充分。但同时也说明样本产生时间距离现在越久远,从而一些近期发生的市场变动便不能被捕捉到。如何选取样本时间周期是样本选择中需要考虑的。

数据采集及治理,数据仓库建设

数据仓库建设是建模准备工作中最基础,也是最耗时的步骤之一。数据质量好坏直接决定了抽取特征的有效性,是模型成功的关键因素。

在互金场景下,系统可利用的数据源通常包括用户自述基本资料、APP本地信息、授权抓取数据及第三方采购数据几大类。数据来源复杂且数据量大,有必要根据业务需求、数据性质及内在逻辑对数据进行归并、清洗,建立规范化的数据仓库。

其中,用户自述数据,除性别、年龄等少数信息外,诸如用户职业、收入水平等信息在申请过程中往往很难进行核验。一般不推荐在正式模型中使用这类无法核验真伪、且用户可随意修改的特征,以防止模型被有组织的hack而失效。第三方采购数据通常是结构化数据,可根据性价比及是否可回溯酌情采纳。

用户授权抓取数据通常是积累数据源中处理最耗时的数据来源。常用数据抓取项包括运营商、电商数据(包括支付宝、淘宝、京东等)、信用卡账单、社保公积金等。这些数据的爬虫来源复杂多样,以运营商为例,不仅三大运营商的服务官网结构差异很大,甚至不同省份的运营商服务网站也各不相同。运营商数据的采集首先要进行不同来源数据的对齐,其次要根据对运营商业务的理解,对数据进行基本的清洗。 如对手机号中的+86、86-、(86)等格式进行统一;同样是主叫、被叫,在不同省份/通信服务商的名称可能是主叫/被叫、呼入/呼出、本市主叫、异地被叫等。需要进行归一化处理。

在实际项目中,数据仓库的建设虽然有专门的BI或数据团队支持,但具体数据清洗的逻辑、策略,建模工程师需要深度参与并提出建设性的意见。

特征工程

实际工作中,对具体算法的改进、优化通常比较少,更多是直接使用线程的工具包,如R、Python的Sklearn、XGBoost等。算法工程师之间使用的具体算法上往往差异不大。此时,对特征工程的建设则更能体现出差异。特征工程一般包括特征提取、特征加工变换和特征选择几个步骤。

特征提取

特征提取就是从规范化的数据源中挖掘有效特征集合。可采取工程化的方法,从数据源中批量挖掘尽可能丰富的备选特征,然后从中选择有效特征。具体提取的特征集,依赖于算法人员对具体数据源的理解。

下文以运营商类数据为例,详细列举特征提取的几个参考思路。

首先,数据源中通常可以直接解析出一些基本信息及统计类特征。如运营商中,在网时长、运营商账户星级、用户使用的套餐类型、套餐额度、月均消费金额、主/被叫次数、通话时长等特征。

其次,从标签分类角度。分析运营商类数据的结构,可发现其核心是详细的通话记录及短信发送记录。两类记录的结构类似,以通话记录为例,一个典型的通话记录包含如下信息:
在这里插入图片描述
其中每个字段都可以从某个角度为特征工程提供依据。根据通话日期,可将通话记录划分为近7天、半月、近1月、近3月、近6月等时间窗口,也可按照具体日期划分为工作日、节假日等日期类别;根据通话时间,可将一天24小时划分为不同的时间片段,如凌晨(0-6点)、上午(7-12)、下午、晚上等;通话时长为连续类特征,可用来汇总通话时间。

通话对象的电话号码集合一般非常庞大,可对其进行归并处理。一种思路是按号码归属地划分,可区分出全国各省市的电话。 另一种思路是对号码打标签,根据标签对号码进行聚类。如根据电话邦、百度手机卫士或搜狗号码通的标记,区分出骚扰电话、生活服务类电话、快递外卖类、金融机构电话等,甚至根据业务积累区分号码是否为黑名单用户、申请用户或申请被拒用户。用户与不同号码标签的通话情况,可以从侧面反映用户的通话习惯和生活特点。对号码进行标签管理的前提,是需要维护一个足够全面、准确的黄页标签库。

由此,从黄页标签的思路,结合通话记录结构,我们可以设计一套黄页标签类特征衍生逻辑,总结如下:
金融风控——Python建模_第2张图片
以工程化方式,对上述不同维度之间做交叉,能够从通话数据中衍生出几千甚至上万维的黄页类特征,为后续建模提供丰富的备选特征集。

用户的通话记录也是用户社交关系的反映,可以从社交图谱的角度对运营商通话数据进行重构,得到一个庞大的通话社交关系网,如下图所示:

从而可利用Graph Mining相关技术,从通话图中挖掘特征。

1)利用社区聚类算法,从通话网络中挖掘中介团伙;

2)借鉴信息检索的链接分析,使用PageRank、HITS等算法,计算每个节点的社交权重;

3)标签传播: 通话网络中一些节点在业务中已存在一些状态,如申请被拒、正常还款、逾期等。可利用Label Propagation算法,将节点状态在网络中进行传播。
以上,从不同角度审视运营商通话数据,可引申出不同种类的特征工程策略。从单一数据源中可挖掘出成千上万维特征。这些特征可能存在大量稀疏特征,且很多特征的稳定性或相关性并不能满足建模需求。但通过特征工程的挖掘,至少为后续建模提供了丰富的可选特征集。“巧妇难为无米之炊”,足够多样化的特征挖掘是模型优化的必备条件之一。

特征预处理

抽取的特征在放入模型之前,通常需要进行一些必要的预处理过程。此处仅简单介绍几个基本的预处理技术。

1)缺失值处理

对特征的缺失值,常用的几种处理策略是:特征分bin时将缺失值作为NA或单独一类;将缺失值取特征的中值、均值或众数填充;缺失值直接填充为0或-1;缺失值根据实际风险表现,填充为风险表现最接近的一类;

2)离散特征聚类

离散类,如省份区域等,直接使用类别取值会过于繁杂。可以考虑根据特征在不同取值处的风险表现,将风险表现接近的值聚为一类;

3)连续特征分bin

对连续特征分箱是在LR模型中常用的处理技巧。最容易想到的分箱策略是等频或等宽分箱,但在实际建模中通常比较少采用。可以考虑借鉴决策树的思路,每次选取使信息熵或信息增益最大的点,作为连续特征的分裂节点。另一种常用策略是,将连续特征空间细分为N个bin,合并相邻且坏账率接近的bin,直到整体分bin区间单调。

其他特征预处理技术,如WOE计算、特征归一化等在此不再赘述。

特征筛选

正式建模之前,一般会对特征工程挖掘到的特征集进行筛选,以选择相关性高、稳定性强的特征,作为入模变量。

常用特征筛选一般会考虑如下几方面:

1)特征覆盖率(cover rate),选取覆盖率达到一定阈值的特征;

2)特征相关性:如根据特征本身的KS值、IV或卡方值,选择与建模label相关性高的特征;

3)特征稳定性:比如通过衡量特征的PSI,选择随时间波动性尽可能小的特征。

此外,还可以通过VIF、相关性系数等指标,排除特征之间的共线性。

评分卡建模

特征和样本标签准备好后,评分卡建模的过程则比较自然。虽然深度学习等技术在互联网领域已大行其道,在信用评分卡建模中,逻辑回归或GBDT等仍然是目前主流的建模算法。一方面是金融领域对特征的可解释性要求会更高,通过LR或GBDT建模,比较容易直观得到每个特征在模型结果中的权重,并根据业务经验解释权重系数的合理性。另一方面,实际评分卡建模中,一般入模特征维度并不高。在低维度建模中,LR和GBDT已经可以取得比较可观的效果。

模型评估

模型建立后,需要对模型的预测能力、稳定性进行评估。信用评分模型常用的评估指标为KS、AUC等。 考虑到金融业务反馈周期长的特点,除了划分训练集、测试集外,通常会预留一段训练样本时间段之外的数据集,作为OOT(跨时间)集合,以测量模型在时间上的稳定性。

1 什么是信用风险?

信用风险又称违约风险,是指借款人、证券发行人或交易对方因种种原因,不愿或无力履行合同条件而构成违约,致使银行、投资者或交易对方遭受损失的可能性。
信用评级:用过信用卡的朋友都知道,开卡需要申请(筛选好坏用户),消费了就需要定期进行债务偿还,如果不偿还就有人发短信催你。因此,信用评级可根据用户的整个使用周期分为以下四种类型

1. 申请者评级(Application):
个人客户申请相应金融产品,对用户进行筛选分类,判断时好时坏,是否通过申请(A卡)
2. 行为评级(Behavier):
个人客户通过申请后在使用期间的历史行为数据进行评级,对客户可能出现的逾期、延期等行为进行预测(B卡)
3. 催收评级(Collection):
对业务中存量客户是否需要催收的预测(C卡)
4. 欺诈评级(Fraud):
业务中新客户可能存在的欺诈行为的预测(F卡)

每个评级阶段的模型都是不一样的,因为每个阶段的用户显现的特征都不一样,因此需要针对各个阶段进行单独的模型开发。
信用评分卡

尽管有了评级分类,但是信用对于我们来说仍然是一个比较抽象的概念,因此可以通过量化的方式来更直观的使用信用,而分数是一种不错的量化方式,通过分数的高低来衡量风险概率,分数越高代表信用越好。信用评分卡就是通过大数据的统计分析,根据用户的各种资料信息,对用户信用进行评估(打分)。

根据以上信用评级,相应的可以分为四种评分卡:

申请评分卡(A卡)
行为评分卡(B卡)
催收评分卡(C卡)
欺诈评分卡(F卡)

打分卡使用场合很多,包括营销评分、申请评分、行为评分、回款催收评分等等,按照具体的产品还可以分为信用卡、车贷、房贷、经营性贷款评分等等,还有按照不同地域的评分等等。根据不同的业务战略,打分卡的各项参数要做设定。

打分卡开发方法,包括逻辑回归、神经网络、决策树、马尔科夫链、生存分析等等,用的最多的,还是传统的逻辑回归,采用逻辑回归的打分卡开发基本流程大致为选取样本、定义好坏标准、寻找可用变量、选择变量、评分模型开发、设置取舍点(cutoff)六个过程,其主要工作量在前面几部。打分卡模型一般包含15个左右变量,这是由于变量之间一般都会有耦合,比如职务和职称,职务高的人一般职称也高,但不应该重复计算。如果变量太多,去掉变量间耦合会比较困难,也会使模型不稳定,某个变量的小小变化可能导致分值变化很大。

打分卡技术相对于其他技术,可以有效的减少人工干预,甚至做到自动放款,因此也是互联网金融中使用的比较多的方法。

大数据在贷中和贷后主要是侧重于动态的进行授信再评估,对已经放款的贷款进行监控,当发现对贷款偿还产生影响时可以及时进行预警。对于银行而言,将贷款的还款能力分为五个等级,分别为正常、关注、次级、可疑、损失:

正常:正常是指借款人申请了贷款后,一直能够正常的还本付息,银行对借款人可以按期偿还贷款有充分的把握,贷款的损失率为零;

关注:关注类是指借款人目前有能力偿还本息,但有一些因素可能会干扰偿还贷款,银行判别贷款的损失率为百分之五;

次级:次级表示借款人的还款能力出现了明显的问题,依靠其目前的收入情况无法正行还款,需要通过抵押或者融资的方式才能还清贷款。贷款损失率在百分之三十到百分之五十之间;

可疑:可疑表示借款人已无法偿还贷款,就算是通过抵押或者担保的方式还款也会造成一定的损失。贷款的损失率在百分之五十到百分之七十五之间;

损失:损失是指借款人无论采取何种方式都无法偿还贷款。贷款损失率达到了百分之七十五到百分之一百之间。

(3)机器学习的方法
常用的分类算法都可以应用在此类场景中,比如:神经网络、贝叶斯方法、决策树、支持向量机等。不同于一般分类问题的是:“欺诈”这种异常模式(类别)的占比可能非常小(不超过5%,一般低于1%),为保证训练和测试样本中包含一定数量的此异常模式记录,在准备数据时可能需要分层抽样。
不同于信用评分模型(使用logistic回归较多),在反欺诈领域,普遍使用神经网络模型技术,该技术模拟人脑功能的基本特征,适合处理需同时考虑许多因素和条件的非线性问题。神经网络模型具有识别率高、稳定性强且易于系统落地实施等优点。

2 信用模型和欺诈模型的区别

信用模型计算各项总分,看整体结果,但欺诈模型却紧盯短板。

如果你是一个学历比较低的人,那么学历这一项的信用分就会比较低,但是模型的综合输出可以通过其他特征进行补偿。比如你是已婚,是女性,或者从事的工作是公务员之类相对有保障的职业,那么这些方面的分数会比较高。最后累加各项得分得出信用分。即使一个人某一项分比较低,也可以通过其他项来得到综合高分。因此信用模型会有补偿。

欺诈模型中不管各项指标有多么得好,只要有一项出现欺诈风险,就是欺诈。

3 小额现金贷 vs 大额信贷

市面上面能看到的关于风控模型的书基本都是针对大额信贷的。大额信贷跟普通银行贷款、信用卡借款、房贷、银行信用贷款有很大相似。

而小额现金贷,则是和额度比较低的消费分期,例如手机分期类似。小额现金贷刚出来的时候,鼓吹用机器学习整合弱相关变量训练模型。后来实践证明弱相关变量要跟强相关变量结合使用才可以。开始的时候,大家都还不能确定小额现金贷的强相关变量,所以很难做。经过一年多的积累,慢慢摸索出来一些强相关、预测力准的变量。这个强相关变量摸索过程是各家机构、各个公司都必然经历的。我个人感觉,这个过程就是靠想象、靠灵感。
比如我刚进公司的时候做的一个社交关系网的模型——拿到的数据是所有客户的通讯录,要求我根据通讯录做一个社交关系网的模型出来。整个建模的摸索过程非常痛苦,用了很长时间。最后摸索出来了:将联系人分为一阶联系人和二阶联系人,比如a打电话给b,b又打电话给c,那么b就是a的一阶联系人,c就是a的二阶联系人。

4 信用评分建模的基本流程

在开发信用风险模型之前,首先要明确我们需要解决的问题,确定评分卡模型的类别。下面将对申请评分卡建模(主要目的是区分好坏客户)流程进行简单的介绍。
(1)数据获取
除了企业内部自有的数据外,还有第三方机构数据支持,比如芝麻信用,征信局等。通过大数据分析用户的各种数据来达到最终目的,数据维度很广,可以包括:用户基础属性,用户行为,用户网购,用户APP行为等。在数据质量不差的情况下,数量越多越好,能留的一个不落下,后续再进行甄别筛选。

这部分的技术栈主要有:Mysql,Hive,Hbase,Spark,Python等。

(2)EDA数据探索

数据探索也是很重要的一步,主要考察数据的质量,包括:数据缺失值,数据异常值,数据一致性,数据分布特征,以及数据之间的关联性等。通常可以使用描述性统计指标,如均值,中位数,众数,方差/标准差等进行宏观上的度量,也可以使用可视化方法辅助进行数据分布,以及关联性等的初步分析工作。

  • 缺失值处理
    根据缺失情况(是否随机,以及缺失量等)可选择使用均值,众数,中位数等填充,也可以用机器学习模型来填充缺失值(常见算法有随机森林,决策树,kNN等)。
  • 异常值处理
    可根据异常的情况考虑使用3∂原则,箱线图,散点图,基于距离,基于密度,基于聚类等一系列的方法进行离群点检测。对于异常值的处理可以采用移除,平均值修正,视为缺失值,或者不处理等。
  • 数据分布以及关联性
    可以考虑结合可视化的方法进一步的观察:数据分布是否均衡,数据特征之间的联系,以及数据特征与目标变量之间的联系等进行了解,比如下面的探索性分析:

(3)数据预处理

数据预处理主要包括:特征转换,特征编码,特征选择,特征共线性处理,以及创建衍生变量等一系列的处理方法。

  • 特征转换和编码
    在信用评分模型的变量选择中,如果使用逻辑回归模型,那么就需对所有特征进行分箱离散化(一般是先细分再粗分),这样可以增加模型对非线性的表达,让模型更稳定。然后再进行woe编码,因为woe的转换公式与逻辑回归模型上非常相似,便于生成评分系统。
  • 特征选择
    特征选择,在数据中是非常中重要,目的在于帮助我们挑选出最有意义的特征。选择特征最终目的是挑选能区分好用户或坏用户的强相关特征。

根据所使用的模型可以通过基尼系数或信息价值IV找到显著特征项,也可以通过LASSO、LR、RF模型等对特征做重要性的筛选。当然,还有很多其它的方法,这里仅介绍这几种。
IV:基于woe编码,可以衡量特征信息重要程序;
LASSO:主要适合基于L1的正则惩罚过滤对区分好坏用户不重要的特征;
LR:通过拟合的参数排序得到特征的重要性程度;
RF:集成学习(bagging),依据算法的附加功能进行特征的重要性排序;
最后要说的是,特征选择要结合业务,根据业务的理解挑选解释型强且权重较大的特征变量。
(4)模型建立

模型建立会根据实际情况进行选择,比如是否要使用单模型,或者在单模型中各种模型好坏的比较而最终确认。我们常用的模型有:逻辑回归、Lasso、随机森林、决策树等。

在信用评分卡建模中,用到最常用的方法就是逻辑回归(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建模_第3张图片
特征工程若要能够实现自动化和标准化,其数据在结构上必须要具有一定的相似性和共通性。根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有三个神奇的要素,这三个要素构成了数据分析最好的指标:

① 最近一次消费(Recency);

② 消费频率(Frequency);

③ 消费金额(Monetary)。

在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。RFM模型是衡量客户价值和客户创利能力的重要工具和手段。该模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱三项指标来描述该客户的价值状况。
参考链接:https://cloud.tencent.com/developer/article/1480297

5 和风控建模相关的问题有:

模型评价指标上的问题——KS它是什么含义,它是怎样算出来的?ROC是什么含义,是如何算出来的?
MIS的问题,例如:怎样根据现有的数据预测未来公司的坏账率。
Q2:坏账率大概在多少合适?

A2:这个没有一个严格的标准。

一般头部平台的信贷,坏账率很低,甚至能做到接近银行的水平。但是,小额现金贷的坏账率就往往很高。做得比较差的平台/产品,比如车抵贷、3C产品卖手机的,坏账都非常高。根据我有限的经验,越是下沉的坏账率越高,从几个点到几十个点都有的。
Q4:评分卡模型常用到的算法是什么?

A4:评分卡信用模型,目前市场上通用的是逻辑回归。

但是在做逻辑回归之前,做特征处理的时候会用到一些别的算法,比如Lasso、随机森林、决策树等。会做一些mini model,再把这些mini model处理过的数据输入到逻辑回归里面去。
在探索建模的时候,可能会将各种各样的模型都试上一遍。但实际上最后上线的,据我所知,大部分都是逻辑回归。

数据清洗的全过程

什么是 ETL

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
ETL 是对数据的加工过程,它包括了数据抽取、数据清洗、数据入库等一系列操作,大部分和数据处理清洗相关的操作都可以算是 ETL

  1. 数值化:
  2. 统计量概括:
  3. 稀疏性去除:
  4. 共线性去除:

特征工程——特征共线性
1、特征间共线性:两个或多个特征包含了相似的信息,期间存在强烈的相关关系
2、常用判断标准:两个或两个以上的特征间的相关性系数高于0.8
3、共线性的影响:
1)降低运算效率
2)降低一些模型的稳定性
3)弱化一些模型的预测能力
4、查看共线性的方式:建立共线性表格或热力图
5、处理方式:删除或变换
#建立共线性表格correlation_table = pd.DataFrame(train_data.corr)
#print(correlation_table)
#热力图sns.heatmap(correlation_table)
#若看到各个变量间的相关性都不大,则无需剔除变量,否则进行删除或变换。

  1. 分步标准化:

交叉验证的优势及实现方法

相较于用单训练预测集建模,交叉验证的优势主要有:

  1. 更准确地的估计模型的预测精度、均值;
  2. 预估模型预测效果的范围:标准差(置信区间)、箱线图;
  3. 减少过拟合的风险;

10-folds交叉验证的实现方法:

  1. 把样本行的index随机拆成10份保存起来;
  2. 每次取一份作验证集index,其余9份粘起来作训练集,以取数据训练模型,把模型保存起来;
  3. 依次取10份不同的index,得到一组10个模型;
  4. 预测时用10个模型的预测结果取平均;
    初步训练好模型后,我们就可以根据模型对变量进行评估。

金融风控——Python建模_第4张图片

金融风控——Python建模_第5张图片

建立模型

证据权重(Weight of Evidence,WOE)转换可以将Logistic回归模型转变为标准评分卡格式。引入WOE转换的目的并不是为了提高模型质量,只是一些变量不应该被纳入模型,这或者是因为它们不能增加模型值,或者是因为与其模型相关系数有关的误差较大,其实建立标准信用评分卡也可以不采用WOE转换。这种情况下,Logistic回归模型需要处理更大数量的自变量。尽管这样会增加建模程序的复杂性,但最终得到的评分卡都是一样的。

模型的评估方法

ROC

ROC即Receiver Operating Characteristics, 中文一般翻译成“受试者工作特性曲线”。

这是一种度量二分类性能的指标。直观来讲,ROC曲线表示的是模型在准确识别正例和不把负例错误的识别成正例这两种能力之间相互制约的关系(当我们需要“宁可错杀一千,也不放过一个”的时候,ROC能告诉你到底要错杀多少才能一个坏人都不放过)。

在详细解释ROC之前需要先解释两个前置概念,即TPR(True Positive Rate)和FPR(False Positive Rate)。

TPR 真正率(召回率):找出的正例占所有的正例的比率。比如有10人换糖尿病,通过模型确诊了其中的8个,则 TPR=0.8

FPR 假正率: 即所有的负例中分类错误的比例。比如有十个人没有患糖尿病(这里把患病作为正例),但是模型错误的将其中一个人误诊为患病,则FPR=0.1

ROC即为以FPR为横轴,以TPR为纵轴的一条曲线(如下图),有了这条曲线你就能清楚的回答下面这些问题

知道在可以放过1%坏人的情况下要错杀多少好人?
在最多能错杀1%好人的情况下会放掉多少坏人?
当糖尿病的误诊率不能高于5%时,会有多少有病的患者被错误判断成无病?
金融风控——Python建模_第6张图片

ROC曲线很直观,也方便使用。但他有个致命的弱点,就是无法对比多个模型的性能。AUC就是为了解决这个问题而出现的。

AUC

AUC,即 Area Under Curve(曲线下面积)。严格上讲,“AUC”并没有意义,因为它可以是你随手绘制的一条曲线的曲线下面积,不过在机器学习领域一般默认AUC就是指AUC-ROC(AUROC也是同样的意思)。 AUC-ROC代表一个模型对正负例的区分能力(既不放过一个,也不错杀一个),他的值在0和1之间,越大代表模型性能越好。

你可能感兴趣的:(金融风控,金融风控)