导图社区 智能风控
智能风控实践指南的总要内容总结,以及常用方法的拓展,通过应用各种机器学习算法,能够对金融机构的数据进行分类和预测,从而帮助机构更好地控制风险。
编辑于2024-03-21 14:52:36风控
评分卡
参考: 1、《智能风控实践指南:从模型、特征到决策》- 2.3 模型开发方法论——构建好模型 -2.4 常用风控建模智能算法
标签定义
1、观察窗口 2、表现窗口
观察窗口:训练集 与 验证集(模型调优) 表现窗口:测试集 在数据较少时候,只保留 训练集 和 测试集,建模时,训练样本上采用交叉验证的方式进行模型参数选择
确定好坏
滚动率分析 (roll rate analysis)
滚动率是指客户从某个观测点之前的一段时间的逾期状态向观测点之后的一段时间的逾期状态转化的比例
以2020年7月1日为观测点,选取1万名客户,统计这部分客户在上个月的逾期状态,对比他们在当月的逾期状态的转化比例 [以客户为计算逻辑 而非金额] (1)上个月逾期状态为M0的客户,当月有其中97%的客户会继续保持正常状态,保持率为97%,其他3%的客户会恶化为M1,恶化率为3%。 (2)上个月逾期状态为M1的客户,当月有其中82%的客户会回到M0状态,即好转率为82%,保持率为12%,恶化率为6%。 (3)上个月逾期状态为M2的客户,好转率为75%,恶化率为10%。 (4)上个月逾期状态为M3的客户,好转率仅为24%,恶化率为65%。 (5)上个月逾期状态为M4的客户,好转率仅为19%,恶化率为72%。 上个月逾期状态为M3及M3+的客户,好转率已经比较低了,因此,我们可以认为逾期状态为M2+的客户已经足够“坏”,用M2+(逾期天数大于60)来定义“坏”客户较为合适。
确定表现窗口
账龄分析 (vintage analysis)
例如,对于一个分为12期还款的信贷产品,理论上,只有客户经历12期还款后,我们才能准确定义客户的“好坏”; 否则,我们只能判断目前为止客户是“好”还是“坏”,并不能知道未来几期客户会不会逾期。 因此,对于该产品,完整的表现期是12个月。12个月的表现期是否合适?能否根据客户6个月时的表现来定义其“好坏”呢?其实, 表现期越长,信用风险的暴露越彻底,但这意味着观测点距离当前时间越远,满足条件的样本数量越少,数据越陈旧,建模样本和未来样本的差异越大。 若表现期较短,则风险还未完全暴露,但好处是能用到离现在更近的样本。因此,我们需要进行权衡,选择一个合适的表现期
逾期率有金额逾期率和账单逾期率两种口径 常用 账单逾期率 进行 确定表现窗口
(1)在相同MOB的情况下,每个放款月份对应的逾期率逐渐降低,说明客群质量提升,可能是因为金融机构收紧了风险敞口,或者使用了效果更好的预测模型或反欺诈规则 (2)不同月份放款的逾期率在经过MOB6后,上升趋势开始平缓。我们以2019年1月为例,设定表现期为6个月,即可覆盖90%的“坏”客户 【即 2.7% 的坏客户 除以 3%的稳定坏客户 2.7%/3% 】 (3)扩展:理论上,只有客户经历完整的期数还款后,我们才能准确定义客户的“好坏,那么在计算 vintage分析时,是否可以直接讲长短期数的客户一起计算,这样越短期数的账单,是否逾期的代表越准确
滚动率分析用于定义客户的“好坏”程度, 账龄分析用于确定合适的表现期,二者结合, 可以尽可能多地覆盖“坏”客户
在上面的示例中,样本标签可以定义如下。 ● 客户经过6期及6期以下,历史逾期状态为M2+(逾期超过60天),定义为“坏”客户,此时,标签Y的值设为1。 ● 客户经过6期,历史未逾期,此时,标签Y的值设为0。 ● 客户经过6期,历史逾期未达到M2+状态(逾期不超过60天),此样本属于灰度样本(经过表现期后,已逾期但逾期程度未达到“坏”标准的样本)。 ● 客户未达到6期且未逾期,则无法定义好坏,属于不定样本,一般不应该将其纳入建模样本中。 对于灰度样本,通常有两种处理方法: 第一种方法是直接摒弃灰度样本,建模中不予考虑; 第二种方法是将其加入“好”客户样本中,这样可以增加样本量。在灰度样本较少时,我们一般采用第一种方法。如果灰度样本较多,那么可尝试上述两种方法,以最终模型预测效果作为选择依据。 在确定样本标签时,严格按照6个月表现期取样本属于“硬表现窗口”取样。在实际业务中,有些客户已经有超过6个月的表现期,而逾期发生在6个月表现期之后,我们也可以将这种样本加入建模样本中,这属于“软表现窗口”取样。此时的预测结果的含义有所不同,我们已经不能再将其严格理解为“预测客户未来6个月内的风险”,但实践中,我们更关心模型的预测排序能力,如果这样能够补充更多坏样本并使模型效果提升,那么也无妨。 需要注意的是,有些业务历史较短,“坏”客户样本量较少,可能需要缩短表现期,这有利于提高样本的充分性。一种有用的尝试是通过在建模样本中选择不同的逾期状态【也就是讲M2+为坏人,改为M1+为坏人,逾期天数 减少,那么坏客户的样本就越多】,尽可能多地覆盖“坏”客户,这样可以兼容样本总量和“坏”客户样本量,特别适用于业务开展早期样本少的情况。
细分客群
条件
细分客群之间的风险水平差异较大
细分客群可以获得的特征维度不同
每个细分客群的样本足够多
案列
不同产品
不同渠道
不同区域
借款金额、期数
.....
样本
选择
代表性
客群的代表性
充分性
样本的充分性,样本不能太少,至少上千
时效性
近期样本,对未来场景具有代表
排除性
因政策调整、不可控因素导致的客群质量异常样本。例如,某工厂在3月因某种原因停产,导致这段时间在某信贷产品上的逾期率显著升高,到了4月,该工厂恢复生产,逾期率也恢复到了正常水平
原理上最优 并不代表实际上最优 对不同的样本组合进行尝试,进行实验
划分
图形比例
子主题
情况
在样本较少的情况下, 为了让更多的样本参与模型训练,可以将验证样本取消,保留训练样本和OOT样本, 建模时,训练样本上采用交叉验证的方式进行模型参数选择。在样本更少的极端情况下,先用上述方法获得初代模型,再用相同的模型参数在合并的训练样本和OOT样本上重新训练最终模型,当然,这种方法已经较难准确评估模型效果了。但是,这是在特殊情况下获得一个更好的模型的备选方法,至少可以作为“陪跑”(不参与决策)模型上线试一试。
训练集
训练模型
验证集
模型调参
测试集
OOT样本(Out of Time sample,时间外样本)
验证模型最终表现
模型架构
奉行奥卡姆剃刀原则——“如无必要,勿增实体”,即采用简单的方案
单一模型架构
多子模型融合架构
架构图
模型架构除可以从数据源维度进行划分以外,还可以: (1)从目标逾期标签定义或表现期长短的角度,分别建立DPD10逾期模型、DPD60逾期模型、长表现期子模型和短表现期子模型等; (2)结合客群细分,建立基于不同细分客群的子模型,再进行二次融合; (3)采用不同算法建立不同子模型,再进行二次融合。
不区分数据源,将所有数据源特征放在一起进行建模 多子模型融合架构是指将不同维度的数据源划分为若干集合
数据预处理
异常值处理
在检测出异常值后,一般处理方式有以下两种。 (1)直接删除包含异常特征值的样本。 (2)结合特征含义选择置空异常值,或者填充为其他值。 如:年龄200岁,明显不可能,可以处理为其它值替换 或者 为空
缺失值处理
特征无量纲化
max-min标准化
max-min标准化,也称为“归一化”,是通过对原始特征进行变换,把特征值映射到[0,1]
z-score标准化
特征分布变换到均值为0,标准差为1, 变换公式如式(2-2)所示,其中, μ 为特征均值, σ 为特征标准差。
连续特征离散化
等频分箱
等频分箱是指分箱后,每个箱内的样本量相等
等距分箱
等距分箱是指按照相同宽度将特征值分为若干等份,各箱的特征值跨度相同
卡方分箱
依赖于卡方检验的分箱方法,其基本思想是判断相邻的两个区间是否有分布差异, 基于卡方统计量的结果进行自下而上的合并,直到满足分箱的终止条件为止。终止条件包括分箱个数和卡方阈值
决策树分箱
类别特征数值化
有序类别编码
序数编码(ordinal encoding)是一种简单的编码方式,直接对特征中的每个类别设置一个标号,将非数值特征转化为数值特征 一种是没有任何先后顺序或等级关系的标称类别型变量(nominal category variable),如性别、省份等; 另一种是有先后顺序或等级关系的有序类别型变量(ordinal category variable)如学历、满意程度等
无序类别编码
一种是没有任何先后顺序或等级关系的标称类别型变量(nominal category variable),如性别、省份等;
one-hot编码
也称“独热”编码,是指对每一种分类单独创建一个列,用0或1填充
WOE编码
WOE(Weight of Evidence,证据权重) 评分卡常用 以年龄为例,通常情况下,年龄和逾期率存在非线性关系。 为了解决这个非线性问题,我们用WOE代替年龄段。 根据WOE的计算过程,我们可以知道,WOE值越高的分类,违约率越高,这样就可以把非线性关系映射为线性关系。
Bad i 为类别【分组】 i 中标签为1的样本数,Good i 为类别【分组】 i 中标签为0的样本数,Bad T 为所有样本中标签为1的样本数,Good T 为所有样本中标签为0的样本数。 由式(2-5)可知,WOE表示“当前类别中坏样本占所有坏样本的比例”和“当前类别中好样本占所有好样本的比例”的差异。
WOE编码需要每个特征类别中同时拥有标签为1和标签为0的样本,否则会计算得到无穷大或无穷小。 如果某种类别【分组】缺少标签为1或标签为0的样本,那么计算WOE时需要做修正处理,即在分子部分加上一个固定值,如0.01
目标编码
暂不考虑 目标编码(target encoding),也称均值编码
特征交叉组合
离散特征分类组合
例如,对于以下两个特征:“country”和“language”,国家取值类别为[USA,France, Canada],语言取值类别为[English,Spanish] 我们通过笛卡儿积的方式进行特征组合,可以重新得到下列6个组合特征。 ● 组合特征1:country= USA,language = English ● 组合特征2:country= USA,language = Spanish ● 组合特征3:country= France,language = English ● 组合特征4:country= France,language = Spanish ● 组合特征5:country= Canada,language = English ● 组合特征6:country= Canada,language = Spanish
连续特征分类组合
将年龄划分为年龄段,将收入划分为“高收入”“中收入”和“低收入”,然后通过组合得到反映“不同年龄段的收入水平”的特征 数据可能会很稀松
连续特征交叉衍生
方法有多种,常用的方法包括:利用数值型特征之间的加、减、乘、除操作得到新特征; 对已选定特征进行奇异值分解(SVD),将奇异值作为新特征; 根据已选特征进行聚类,将所在类别的平均目标值或出现最多的值作为新特征,或者将所在类别与其他类别的距离作为新特征等
特征交叉组合会导致特征维度激增,组合后的特征有可能很稀疏。 因此,在实践中,我们通常需要结合特征含义,组合出有业务含义的特征
特征选择
图形介绍
基于特征属性选择
缺失率选择法
变异系数选择法
变异系数(coefficient of variation),又称“离散系数”,是概率分布离散程度的一个归一化量度,其定义为标准差与均值之比 变异系数反映了特征分布的离散程度。相比方差,变异系数是一个无量纲量,因此,在比较两组量纲不同或均值不同的数据时,应该用变异系数而不是标准差。如果某个特征的变异系数很小,就表示样本在这个特征上基本没有差异,可能特征中的大多数值都一样,甚至整个特征的取值都相同。特征选择过程中会首先过滤变异系数为0的特征 利用SciPy库中的variation()方法计算变异系数,通过参数nan_policy指定缺失值处理方法,该参数设为“omit”时,忽略缺失值,设为“raise”时,抛出异常,设为“propagate”时,返回NaN 1. from scipy.stats import variation 2. train_x_var = variation(train_x, nan_policy=’omit’)
相关性选择法
1. # 利用pandas库计算相关系数 2. pearson_corr = X_train.corr(method=’pearson’) # Pearson相关系数 3. spearman_corr = X_train.corr(method=’spearman’) # Spearman相关系数 4. kendall_corr = X_train.corr(method=’kendall’) # Kendall相关系数
Pearson相关系数
SciPy库中的pearsonr()方法能够同时计算相关系数和p值,p值能够反映两个特征的显著水平。如果不显著,那么相关系数再高,也无参考价值,可能是由偶然因素引起的。通常情况下,当p值小于0.05时,我们就认为统计量是显著的 1. # 利用SciPy库计算相关系数 2. from scipy.stats import pearsonr 3. r, p_value = pearsonr(x1, x2)
Spearman相关系数
Kendall相关系数
取值范围为[-1,1],大于0表示两个特征正相关,小于0表示两个特征负相关
多重共线性选择法
多重共线性描述的是一个自变量与其他自变量(可以是多个)之间的完全线性关系。 在使用逻辑斯谛回归算法时,我们要避免特征之间存在较强的共线性
方差膨胀系数 (Variance Inflation Factor, VIF)
是一种衡量共线性程度的常用指标, 它表示回归系数估计量的方差与假设特征间不线性相关时的方差的比值 R 2 是某个特征对其余特征做回归分析的复相关系数。 VIF越大,该特征与其他特征的关系越复杂,多重共线性越严重。我们通常将10作为判断边界, VIF<10,则认为不存在多重共线性;若 10≤VIF<100,则认为存在较强的多重共线性; VIF≥100,则认为存在严重的多重共线性 1. import numpy as np 2. from statsmodels.stats.outliers_influence import variance_inflation_factor 3. vif = [variance_inflation_factor(x_train.values, ix) for ix in range 4. (x_train.shape[1])]
基于特征效果选择
IV
IV(Information Value,信息价值)是衡量特征预测能力的关键指标 WOE分析了特征各个分箱对于目标变量的预测能力,IV用来反映特征的总体预测能力
卡方检验
推断两个类别变量是否相关或相互独立。其原假设为:观察频数与期望频数没有差别 1. # 卡方检验 2. from utils import data_utils 3. from sklearn.feature_selection import SelectKBest 4. from sklearn.feature_selection import chi2 5. 6. # 导入数值型样例数据 7. all_x_y = data_utils.get_all_x_y() 8. y = all_x_y.pop(data_utils.label) 9. # 选择k个较好的特征,并返回选择特征后的数据 10. fs_chi = SelectKBest(chi2, k=5) 11. fs_chi.fit(all_x_y, y) 12. x_new = fs_chi.transform(all_x_y) 13. 14. selected_cols = all_x_y.columns[fs_chi.get_support()].tolist() 15. print(f”selected {len(selected_cols)} columns:”)
包裹法 (wrapper)
从初始特征集合中不断选择特征子集,训练学习器,根据学习器的性能对子集进行评价,直到选出 最佳子集
逐步回归
一种筛选并剔除引起多重共线性变量的方法,在逻辑斯谛回归模型中应用广泛。 它的基本思想是将解释变量逐个引入模型,每引入一个解释变量,都进行统计性假设检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除,以确保每次引入新变量之前,回归方程中只包含显著性变量 这是一个反复的过程,直到既没有显著的解释变量选入回归方程,又没有不显著的解释变量从回归方程中剔除为止。 逐步回归共有3种方式: 前向逐步回归、后向逐步回归和双向逐步回归。 前向逐步回归是将特征逐步加入; 后向逐步回归是从所有特征集中将特征逐步剔除; 双向逐步回归是指前向加入与后向剔除同时进行,即在每次加入新特征的同时,将显著性水平低于阈值的特征剔除。 在一般情况下,双向逐步回归的效果比前向逐步回归和后向逐步回归好。 1. # 利用toad库中的stepwise()方法进行逐步回归特征选择 2. import toad 3. from utils import data_utils 4. 5. # 导入数值型样例数据 6. all_x_y = data_utils.get_all_x_y() 7. 8. final_data = toad.selection.stepwise(all_x_y, 9. target=data_utils.label, 10. estimator=’lr’, 11. direction=’both’, 12. criterion=’aic’, 13. return_drop=False) 14. 15. selected_cols = final_data.columns 16. print(f”selected {len(selected_cols)} columns:”) 利用toad库中的stepwise()方法进行逐步回归特征选择,参数target用于指定标签列;参数estimator用于指定模型;参数direction用于指定方向,可选值为“both”“forward”和“backward”;参数criterion用于指定评判标准;参数return_drop用于指定是否返回被剔除列的列名
递归特征消除
递归特征消除 (Recursive Feature Elimination,RFE)也是常用的包裹式特征选择方法,其基本思想是使用一个基模型进行多轮训练,每轮训练后,消除若干重要性低的特征(线性模型特征归一化后使用特征系数衡量其重要性),再基于新特征集进行下一轮训练。 # 根据RFE进行特征选择 2. from sklearn.feature_selection import RFE 3. from sklearn.linear_model import LogisticRegression 4. from utils import data_utils 5. 6. # 导入数值型样例数据 7. all_x_y = data_utils.get_all_x_y() 8. y = all_x_y.pop(data_utils.label) 9. x = all_x_y 10. # 使用递归特征消除方法,返回特征选择后的数据 11. # 参数estimator可设置基模型 12. # 参数n_features_to_select可设置选择的特征个数 13. rfe = RFE(estimator=LogisticRegression(), n_features_to_select=10) 14. x_new = rfe.fit_transform(x, y) 15. 16. selected_cols = x.columns[rfe.get_support()].tolist() 17. print(f”selected {len(selected_cols)} columns:”) 上述代码利用sklearn库中的RFE类进行特征递归消除,参数estimator用于指定模型类型,本例中使用逻辑斯谛回归;参数n_features_to_select用于指定选择的特征个数,本例选择排在前10位的特征系数对应的特征
嵌入法 (embedded)
先使用某些机器学习算法和模型进行训练,得到特征系数或特征重要度,再根据特征重要度选择特征。 嵌入法类似于过滤法,但嵌入法是通过模型训练确定特征优劣的。利用树模型筛选特征是常见的基于嵌入法的特征选择方式。
基于L1范数的特征选择
线性模型可以被看作多项式模型,其中每一项的系数可以表征这一维特征的重要程度,越重要的特征在模型中对应的系数越大,而与输出变量相关性越小的特征,对应的系数越接近于0。L1正则化将系数的L1范数作为“惩罚”项加到损失函数中,由于正则项非零,“迫使”那些不重要的特征系数变为0,因此,使用L1正则化的模型往往稀疏,这使得L1正则化成为很好的特征选择方法。 1. # 基于L1范数的特征选择 2. from sklearn.feature_selection import SelectFromModel 3. from sklearn.linear_model import LogisticRegression 4. from utils import data_utils 5. 6. # 导入数值型样例数据 7. all_x_y = data_utils.get_all_x_y() 8. y = all_x_y.pop(data_utils.label) 9. x = all_x_y 10. # 带L1惩罚项的逻辑斯谛回归作为基模型的特征选择 11. LR = LogisticRegression(penalty=’l1’, C=0.1, solver=’liblinear’) 12. sf = SelectFromModel(LR) 13. x_new = sf.fit_transform(x, y) 14. 15. selected_cols = x.columns[sf.get_support()].tolist() 16. print(f”selected {len(selected_cols)} columns:”) 17. print(selected_cols) 特征中存在严重的多重共线性时,线性模型中的特征系数可能不准确。因此,在使用线性模型进行L1正则化特征选择时,应先消除多重共线性
基于树模型的特征选择
树模型的建立就是一个特征选择的过程。基于树模型的特征选择会根据信息增益或基尼不纯度的准则来选择特征进行建模,输出各个特征的重要度,依此进行特征筛选。 1. # 基于树模型的特征选择 2. from sklearn.feature_selection import SelectFromModel 3. from sklearn.ensemble import GradientBoostingClassifier 4. from utils import data_utils 5. 6. # 导入数值型样例数据 7. all_x_y = data_utils.get_all_x_y() 8. y = all_x_y.pop(data_utils.label) 9. x = all_x_y 10. # GBDT作为基模型的特征选择 11. sf = SelectFromModel(GradientBoostingClassifier()) 12. x_new = sf.fit_transform(x, y) 13. 14. selected_cols = x.columns[sf.get_support()].tolist() 15. print(f”selected {len(selected_cols)} columns:”) 16. print(selected_cols) 上述代码使用GBDT(梯度提升树)作为基模型训练,最终选择特征重要度大于0的特征。 除使用单一模型的特征重要度进行选择以外,作者常用的方法是依据多个模型的特征重要度综合排序进行特征选择,如先分别采用随机森林和XGBoost训练模型,再根据两个模型的特征重要度加权得到综合排序,最终依据综合排序选择特征
基于特征稳定性选择
PSI
稳定性是有参照的,因此需要有两个分布——预期分布(expected distribution)和实际分布(actual distribution) 在建模时,我们通常将训练样本的分布作为预期分布,将OOT样本【测试集 或 表现窗口】的分布作为实际分布 PSI反映了同一特征在所有分箱上不同样本集间(或时间段)的分布差异,
在计算PSI时,我们需要先将特征值分箱 其中, Actual i 为第 i 个分箱实际样本个数, Expected i 为第 i 个分箱期望样本个数, Actual T 为实际样本总数, Expected T 为期望样本总数。
逾期率变化选择
有些特征的不稳定表现在对逾期率排序的衰减上,随着时间变化,特征对预测变量的排序发生颠倒,我们称之为“倒箱” “倒箱”体现了特征对预测变量区分能力的不稳定性
批量计算特征每个分箱的逾期率随时间变化的波动值,以此来选择特征,波动值越小,说明特征对逾期率的排序性越稳定。 具体地,通过特征每个分箱的逾期率在各月排名的方差的平均值来衡量波动性,设定阈值以选择波动值较小的特征。
特征提取
特征提取(feature extraction)是指从原有较多的特征中计算出较少的新特征,用新特征替换原有特征,达到降维的目的 特征提取采用的主要方法是通过属性间的关系,如组合不同属性,得到新属性,这样就改变了原来的特征空间。 特征选择采用的方法是从原始特征数据集中选出子集,这是一种包含关系,没有更改原始特征空间
线性特征提取方法
主成分分析法 PCA
主成分分析法(Principal Component Analysis, PCA) PCA是为了让映射后的样本具有更大的发散性
线性判别分析法 LDA
线性判别分析法(Linear Discriminant Analysis, LDA) LDA是为了让映射后的样本有较好的分类性能
非线性特征提取
局部线性嵌入 LLE
局部线性嵌入(Locally Linear Embedding, LLE) LLE是为了保持邻域内样本之间的线性关系
多维尺度变换 MDS
多维尺度变换(Multiple Dimensional Scaling, MDS) MDS是为了保持降维后的样本间距离不变
模型
参数调优
参数:通过模型训练可以得到 超参数:超参数是用来定义模型结构或优化策略的,通常需要在模型训练前根据经验给定,如正则化系数
网格搜索
网格搜索(grid search):给定所有超参数的枚举值,网格搜索会穷举所有超参数组合。然后,我们利用每种超参数组合训练模型,并评估模型效果,最终选出模型效果最好的超参数组合
随机搜索
随机搜索(random search):给定所有超参数的枚举值,随机搜索会随机在参数空间中采样。实验表明,随机搜索的结果比网格搜索稍好
贝叶斯优化
贝叶斯优化(bayesian optimization):给定所有超参数的搜索范围,贝叶斯优化算法可以采用比较少的观测结果得到一系列比较好的超参数组合,其搜索速度快,效果良好,在业界被广泛应用
交叉验证
留 p 法交叉验证
留 p 法交叉验证(Leave P Out Cross Validation,LPOCV)。留 p 法交叉验证是指每次从样本集中选择 p 个样本作为验证集,其他作为训练集
留一法交叉验证
在留 p 法交叉验证中,令 p =1,即每次只选择一个样本作为验证集,其他样本作为训练集,这种情况就是留一法交叉验证
K 折交叉验证
K 折交叉验证( K -fold Cross Validation)。在 K 折交叉验证中,原始样本被随机划分为 k 个大小相等的子样本集
概率转化
风控模型,如XGBoost模型、LightGBM模型或LR(逻辑斯谛回归)模型,直接输出的是客户逾期概率。 在风控信贷场景中,我们需要将概率转化为评分,通过分数量化客户的风险等级,设 p 为客户逾期概率,
import numpy as np 2. import pandas as pd 3. 4. def p_to_score(p, pdo, base, odds): 5. “”” 6. 客户逾期概率转化为评分 7. :param p: 逾期概率 8. :param pdo: points double odds. default = 60 9. :param base: base points. default = 600 10. :param odds: odds. default = 1.0/15.0 11. :returns: 模型分数 12. “”” 13. B = pdo / np.log(2) 14. A = base + B * np.log(odds) 15. score = A - B * np.log(p / (1 - p)) 16. return round(score, 0) 17. 18. 19. pros = pd.Series(np.random.rand(100)) 20. p_to_score(pros, pdo=60.0, base=600, odds=1.0 / 15.0)
模型效果评估
混淆矩阵
准确率
准确率(accuracy)是指正确预测的正负例样本数和总样本数的比值
精确率
精确率(precision)又称查准率,是指预测为正例的样本中真正是正例的样本比例
召回率
召回率(recall)又称查全率,是指实际正例样本中模型预测为正例的样本比例
精确率和召回率是一对矛盾的度量指标, 当精确率高时,召回率往往偏低; 当召回率高时,精确率往往偏低
F 1值
F 1值是精确率和召回率的调和值,更接近于两个数中较小的那个,因此,精确率和召回率接近时, F 1值较大。很多推荐系统使用的评价指标就是 F 1值
AUC
AUC(Area Under Curve)为ROC曲线下的面积 横坐标为FPR(假正率),FPR=FP/(FP+TN),即被预测为正例的负样本数与真实负样本数的比值; 纵坐标为TPR(真正率),TPR=TP/(TP+FN),即被预测为正例的正样本数与实际正样本数的比值。 AUC的取值范围是0~1。如果AUC接近0.5,那么模型几乎等同于随机分类。 AUC越高,我们认为模型的效果越好, 当然,在绝大多数预测场合,不存在AUC等于1的“完美”分类器
KS
KS(Kolmogorov-Smirnov)指标主要用来验证模型对客户“好坏”的区分能力,用以检验两个经验分布是否不同,或者一个经验分布与一个理想分布是否不同 对分数进行分箱,然后分别统计每箱累计“好”客户和累计“坏”客户与“好”客户和“坏”客户总体的比值,累计“坏”客户比例与累计“好”客户比例的差值即为每箱对应的KS值。模型KS定义为各分箱KS值的最大值
KS值越高,模型越好。但过高的KS值可能意味着过度拟合,其中第3箱的KS值最大,即模型在424分时对客户“好坏”的区分水平达到最高,模型的KS为0.52。 KS,它是以某个点上的区分度来表示模型的区分度, AUC是以曲线下面积的大小来表示模型的区分度。 AUC更加稳健。 而相比准确率、召回率和 F 1值等指标,AUC的优势在于不需要设定分类阈值,只需要关注预测概率的排序。 主要将AUC作为模型效果的评价指标
模型的泛化能力
模型部署
pickle格式
PMML格式
上线验证
分数的PSI
各个特征的PSI
模型迭代优化
模型融合
建模时效
拒绝推断
风控常用算法
模型函数
损失函数(loss function)
定义在单个样本上,是指一个样本的误差
代价函数(cost function)
定义在整个训练集上,是指所有样本误差的平均,也就是所有损失函数值的平均
目标函数(object function)
是指最终需要优化的函数,一般来说,在代价函数的基础上,增加了正则项。
决策树
因为C4.5和CART既可以处理离散值,又可以处理连续值
集成学习
Bagging
Bagging是在多轮采样获取的数据子集上训练多个个体学习器,然后通过投票法或平均法对个体学习器进行集成的方法,Bagging的训练过程: 首先从原始样本集中有放回地(Bootstraping方式)抽取 m 个训练样本,共进行 k 轮抽取,得到 k 个训练集,并将每轮未抽取的样本作为测试集; k 个训练集即得到 k 个模型;最后,对于分类问题, k 个模型采用投票的方式得到分类结果,对于回归问题,计算 k 个模型的均值并作为回归结果。 每次可以选取全部的特征训练,也可以随机选取部分特征训练,如随机森林就是每次随机选取部分特征训练。
Boosting
Boosting是一种在训练过程中,不断对训练样本分布进行调整,基于调整后的样本分布训练下一轮个体学习器的集成学习方法 例如,AdaBoost算法增加个体学习器预测错误样本的权重,使其在下一轮训练中受到更多“关注” 而GBDT算法将前一轮个体学习器预测值的残差作为下一轮训练的目标,以此调整训练样本分布 经过 k 轮迭代,得到 k 个个体学习器,最终将这 k 个个体学习器进行加权求和并作为最终模型
Stacking
Stacking是一种将多种个体学习器整合在一起来取得更好表现的集成学习方法 1、对训练集进行 K 折交叉验证,得到 k个预测值,那么作为 新嘚特征1【训练集】,k个预测值求平均 为【测试集】 2、对不同的模型(或同意模型 不同参数)进行 K 折交叉验证,得到 k个预测值,那么作为 新嘚特征2【训练集】,k个预测值求平均 为【测试集】 3、重复1,2步骤,直到n个新特征(代表n个不同的模型), 4、以最新的特征 进行模型学习 注意: 此处为向量
Blending
Blending与Stacking类似,区别体现在: 第一步,在原训练集上,Blending不是通过 K 折交叉验证策略得到预测值,而是采用Hold-Out策略,即保留固定比例的样本并将其作为验证集,在其余样本上训练出多个模型,分别在验证集和测试集上进行预测,将预测值作为新特征; 第二步,基于验证集和测试集的新特征,训练得到最终模型
拒绝推断
参考:《智能风控实践指南:从模型、特征到决策[精品]》- 2.5 模型迭代优化
样本偏差
模型开发通常基于放款样本,但是贷前风险预测模型使用场景是所有授信申请客户,包含被拒绝样本 偏差,导致模型效果衰减明显, 加入被拒绝的样本,那么模型的效果可以得到保障。问题在于,被拒绝的样本没有标签,而推测被拒绝样本的标签就是“拒绝推断” 当风控通过率很高时,如通过率超过80%,授信通过样本和授信申请样本的分布差异不大,这种情况下使用拒绝推断的必要性不大。但是,当风控通过率很低时,如通过率只有20%~30%,就有必要使用拒绝推断修正样本偏差
拒绝推断场景常见模型
AR(Accept Reject)模型
AR(Accept Reject)模型:以是否放贷为标签,是在全量样本上构建的模型
KGB(Known Good Bad)模型
KGB(Known Good Bad)模型:以逾期表现为标签,是在已知好坏标签的样本上构建的模型
AGB(All Good Bad)模型
AGB(All Good Bad)模型:以逾期表现为标签,是在全部授信申请样本上构建的模型。建模样本包含已知好坏标签(真实标签)的样本和推断出“伪标签”的样本
拒绝推断常用方法
同生表现法
指通过客户在其他产品或机构的贷后表现,推断在本产品上的伪标签 如果内部有多个产品,那么可以尝试获取客户在其他产品的表现,并将其作为本产品拒绝客户的伪标签。另外,可以通过外部机构数据查询客户的近期表现 ①不同产品的期限、利率和策略等不同,造成逾期的原因可能差别较大; ②不同产品的标签定义可能不同,需要额外处理,统一口径; ③需要考虑查询外部机构数据的成本; ④客户在其他产品相近时间段的表现更有代表性,因此需要考虑时效性; ⑤对于查询不到相关表现的“灰度样本”,建模时应剔除; ⑥外部机构数据查询结果中的“好”,可能是未查到相关逾期记录,因此不能直接将样本伪标签设定为“好”
硬截断法
硬截断(hard cutoff)法,也称简单展开(simple augmentation)法,是指根据通过样本构建KGB模型,利用KGB模型对拒绝样本预测打分,设置截断阈值,高于该阈值的样本认定为正样本,低于该阈值的样本认定为负样本,最终将有真实标签的通过样本和推测得到伪标签的拒绝样本合并,构建最终模型 建最终模型时,可以只选取推测得到的不良客户(小于截断阈值的样本)加入建模样本中,用来修正样本偏差
......
风控模型体系搭建
详细内容细节 见 《智能风控实践指南:从模型、特征到决策[精品]》- 2.6 风控模型体系搭建
营销阶段
贷前
多种风控规则和模型来识别风险,风控规则可以识别小部分高风险客户,大部分仍然需要模型预测
反欺诈模型
信用风险模型【A卡】
1)标签 信用风险模型的标签是客户在未来是否会严重逾期。信用风险模型关注客户的信用资质,相比反欺诈模型,它应采用更长表现期下的逾期水平来定义客户的“好坏”,如将在6个月表现期下逾期超过60天的客户定义为不良客户。由于不同机构产品期限的差异较大,因此我们可以根据滚动率和账龄分析具体确定“好坏”的定义。 2)样本和特征 信用风险模型建模样本来源于历史申请成功且有表现的客户。信用风险模型建模特征和反欺诈模型可用特征相似。需要强调的是,信用风险模型特征维度应包含更多体现客户还款能力的特征,如学历、职业、资产、收入/负债情况和信贷历史等
贷中
通过贷中行为模型预测客户的风险情况,制订账户管理等策略,同时,利用交易风险模型对客户贷中的提现、消费等交易行为进行风险判断
贷中行为模型【B卡】
1)标签 贷中行为模型的标签是客户在未来是否会严重逾期,和贷前信用风险模型的标签类似。逾期定义可以根据产品形态、滚动率和账龄分析确定。例如,对于期限为6期的产品,可以将3期表现期内逾期超过30天定义为“坏”;对于期限为12期的产品,可以将6期表现期内逾期超过60天定义为“坏”。通常,B卡针对客户粒度建模,同一客户可能有多期账单,因此可以取逾期最长、最严重的一个账单作为对客户的“好坏”定义。 2)样本和特征 贷中行为模型建模样本通常是借款成功且有2~3个月还款行为的客户,另外,需要排除观察时间点已经逾期的客户。B卡通常每隔一段时间运行一次,对所有满足条件的在贷客户进行评分。由于同一个客户在不同时间点的风险不同,因此B卡得分会有差异。在建模样本的准备上,可以模拟实际情况,对同一个客户取不同时间点的样本并分别作为独立样本进行建模。如果客户数量足够大,那么,我们可以对一个客户只取一个时间点的样本,因为样本大,所以也能够覆盖不同在贷时长的客群。 如果我们将同一个客户多个时间点的样本作为独立样本进行建模,那么需要在测试样本上排除已经纳入训练样本的客户,以避免高估模型效果。这样做的原因是同一客户不同时期的特征相似性比较高。 贷中行为模型建模时可用特征维度:贷前建模特征,即客户的申请信息、行为信息、多头信息和外部数据源;客户贷中行为特征,如客户每期的还款情况、使用App登录行为、支用额度的比例和频次等。
交易风险模型
交易风险模型是在已经获得授信的客户发生支用或消费交易等行为时进行风险预估的模型。该模型用于拦截高风险交易,及时止损。交易风险模型与信用风险模型类似,只是交易风险模型在获得的特征维度上会包含更多贷中的行为数据
贷后
定义: 指的是 催收评分卡、催收电话、短信,坏账处理等 模型预测客户的还款可能性,制订合理的催收策略,提升还款率; 利用失联预估模型预测客户的失联概率,优化催收策略
催收评分卡【C卡】
还款预估模型,即催收评分卡,也称C卡(Collection scorecard),是预测已逾期的客户在未来一段时间的还款概率的模型。通常,逾期客户在早期还款的可能性较大,越往后,越难还款,因此,我们可以利用还款预估模型制订差异化的催收策略,提高还款率 1)标签 还款预估模型的标签是客户在观察时间点之后一段时间是否还款,可以根据业务形态进行差异化设定。例如,早期逾期阶段可以为逾期1~10天,第1天是逾期状态且第11天依然是逾期状态的客户可定义为“坏”,否则为好,以此类推,中期逾期阶段可以为11~30天,晚期逾期阶段可以为31~90天。 2)样本和特征 还款预估模型建模样本是已经逾期的客户,我们需要排除预测时间点前已还款或不满足表现期定义的样本。建模特征包含贷前和贷中的特征,此外,可以从催收提醒和早期的催收记录中进一步提取特征,如通话频次、平均时长和是否承诺还款等关键词。
失联预估模型
失联预估模型预测已逾期的借款人在未来一段时间是否会失联 1)标签 失联预估模型的标签是客户在未来一段时间是否失联,1表示“会失联”,0表示“不会失联”。例如,我们可以将逾期10天的客户在之后30天内是否会失联作为标签。 2)样本和特征 失联预估模型建模样本通常是已经逾期且符合标签定义的客户。失联预估模型建模特征与还款预估模型类似,我们应重点关注关系网络特征和联系人相关特征,如一度联系人个数、紧急联系人个数、联系人类型和联系人是否有过借款等。
特征挖掘【策略】
《智能风控实践指南:从模型、特征到决策[精品]》- 3.3 特征挖掘智能算法
基于业务逻辑生成特征
业务指标与风险的关系
基于业务指标与风险的关系生成特征 根据对业务的理解,抽取一些典型指标并作为特征。 1、多头共贷严重的客户通常风险较高,基于这个业务逻辑,可以生成“客户多头共贷数目”特征; 2、使用多个非法投资类软件的客户的风险可能更高,可以生成“客户安装非法投资类软件个数”特征; 3、同一设备短时间内频繁下单的客户的欺诈风险更高,可以生成“某设备ID近1天关联订单数”特征; 4、绑定虚拟银行卡的客户的风险更高,可以生成“客户绑定的银行卡是否是虚拟卡”特征
不同数据交叉验证生成特征
不同数据交叉验证包括 1、客户自填基本信息与身份证OCR识别信息是否一致, 2、客户自填地址与GPS定位城市是否一致, 3、客户手机号归属地与工作地或居住地是否一致等
同类数据在不同场景或阶段的变化生成特征
根据客户的行为埋点数据在贷前和贷中业务场景下的变化情况,可以生成“客户贷前与贷中每天平均登录次数的差值”的特征并在贷中场景下使用
弊端
从业务含义出发人工设计特征,比较烦琐且容易出错,产出特征质量取决于开发人员的领域知识,并且特征是针对特定业务和场景的,跨场景复用比较难
基于RFM思路生成特征
半自动的特征开发 RFM是衡量客户价值和潜在价值的分析方法,主要由客户最近一次交易时间间隔(recency)、最近一段时间内的交易次数(frequency)和最近一段时间内交易金额(monetary)3个维度组成 将这个思路用于特征挖掘:先划分不同的时间窗口,再区分不同的类别维度,计算各种统计指标,交叉组合之后即可批量生成特征。
维度数据和度量数据
维度数据
● 时间维度:15天、1月、3月、6月、12月、24月等。 ● 机构类型维度:银行、P2P、小贷、其他。 ● 消费类型维度:餐饮、娱乐、健身等。 理论上,任何类别型数据都可以作为维度划分的依据,连续变量也可以切分后作为维度划分的依据(如消费金额切分成1000及以下、1001~2000、2001~5000、5000以上,它们可作为统计维度)。在实际操作中,我们需要考虑业务意义,排除一些不必要的维度
度量数据
可以用于计算的数据。 连续型 数据 和 类别型 数据 都可以作为度量数据使用
RFM特征生成方法
经过 维度数据的切分 和 度量数据的计算,我们就完成了数据到特征的初步变换
两两组合
特征评估
特征覆盖率【非空值比例】
特征离散度
特征离散度时通常使用变异系数。与极差、方差和标准差相比,变异系数不受数据量纲的影响,但只在平均值不为0时有定义。变异系数可以使用SciPy库的variation()方法计算,方法如下。 1. from scipy.stats import variation
特征时间相关性
例如,某产品1~3月的客群发生了比较大的变化,客户逾期率从1%逐渐上升到10%,4月的客群不一定持续这种变化,那么,“客户申请时间距当前的天数”这类特征可能在1~3月的样本上因为与时间强相关而区分度明显,但在4月的客群上,就不再有区分度了 直接用时间列,与特征值 进行相关系数检查, Pearson相关系数大于0.8,表明特征与时间存在强相关性,应谨慎使用
特征稳定性【PSI】
特征效果【IV】
IV值过大的特征需要仔细确认,分析是否存在数据“穿越”问题
可解性最高
特征挖掘智能算法
《智能风控实践指南:从模型、特征到决策[精品]》- 3.3 特征挖掘智能算法
树模型算法
GBDT模型
其中,第一棵树有3个叶子节点,第二棵树有两个叶子节点。对于一个输入样本点 x ,如果它在第一棵树中最后落在第二个叶子节点,在第二棵树中最后落在第一个叶子节点,那么通过GBDT产生的新特征向量为[0,1,0,1,0],该新特征向量中的前3位对应第一棵树的3个叶子节点,后两位对应第二棵树的两个叶子节点
风控特征画像体系的搭建
营销特征画像
1、对于历史存量客户,包括客户基本信息、历史申请记录信息和多头借贷信息等; 2、对于全新客户,数据积累较少,可能有浏览行为数据、客户的部分基本信息和第三方数据
数据维度
以对历史存量客户做客户召回场景为例
特征画像
1、客户在历史申请时自填的信息,通常包含客户本人的学历、年龄、性别、从事行业和居住地等; 2、对于多头借贷信息,我们通常从第三方数据服务提供商有偿获取,这类信息通常包含客户在多个机构的申请、放款和逾期情况; 3、历史申请记录是指客户在本机构的历史申请情况。基于上述信息,我们可以描绘出某一类客户的营销特征画像
贷前特征画像
客户基本信息、客户授权数据、客户行为数据、ID关联数据和历史订单数据是贷前特征画像依赖的主要数据。另外,从外部获取的多头数据、征信数据也可以用来丰富贷前特征画像
数据维度
客户基本信息
客户授权数据
客户授权数据是指客户填写、上传或授权抓取的数据。客户授权数据体现了客户的行为习惯、社会关系,这些数据有助于对客户进行风险评估。例如,客户使用的手机的品牌、手机价格是客户消费习惯的一种体现,结合客户的职业、收入情况等,我们可以评估客户的风险,如收入偏低但短期内用多个高端手机申请借款的客户,其违约的概率会偏高。客户授权数据通常包含设备指纹信息、联系人信息、手机应用列表和GPS位置信息等。需要注意的是,客户授权数据是在客户授权的情况下获得的,一些数据可能因客户未授权而缺失
客户行为数据
客户行为数据包括App(前端)埋点数据、服务端埋点数据、消费行为数据和网页浏览数据。这些数据可以描述客户在操作行为上的偏好
ID关联数据
ID关联数据是指多个标识客户唯一身份类ID的数据。 例如,我们可以将某客户的身份证号码作为索引,在数据库中,查询与此身份证号码关联的订单,以获取此客户利用其他手机号申请的订单,从而丰富客户画像
历史订单数据
交叉验证数据
除单一数据源维度以外,我们还可以通过跨数据源交叉验证的方式创建贷前特征画像,如客户自填收入和征信报告中客户月收入的差值过大,可能意味着客户未如实填写收入信息
贷中特征画像
贷中特征画像可以使用贷前特征画像的所有数据(但特征取值可能和贷前时间点不同)
数据维度
贷中行为及订单数据
客户授权数据及其变化
贷后特征画像
贷后特征画像反映了客户在贷后的违约风险(主要体现为客户还款的意愿和能力),我们可以将其用于贷后风险模型或规则中 贷后特征画像可使用历史订单的审批结果和贷后跟进记录,贷后客户行为数据,以及贷前与贷中的所有数据维度来挖掘不同时间点信息变化类特征 可用数据维度分为两类: 一类是包含贷后客户行为、审批结果和贷后跟进记录的数据; 另一类是与贷前和贷中相比信息变化的数据
数据维度
风控策略分析
《智能风控实践指南:从模型、特征到决策[精品]》- 4.2 风控策略方法论
核心目标
规则分析方法
规则挖掘流程
两种方法各有优劣, 人工方法能够快速解决已知的风险问题,业务逻辑清晰; 量化方法可以挖掘潜在的风险点,但其可解释性略差。
制订“人工”规则
制订“人工规则”是指将风险点识别过程中的潜在风险点量化成规则。其大致过程是设计特征和规则阈值
寻找风险点
市场调研
例如,在公开报道中,某地区出现较多“撸贷”和“骗贷”事件,或者同业在某地区的客户的逾期风险非常高,那么,在设计类似的信贷产品时,我们应考虑制订对应的规则,以排除这些区域
信审人员和催收人员反馈
例如,信审人员发现多个借款人填写的居住地址一致或身份证上的照片有修改痕迹等,我们对这些异常案件进行进一步分析,就可发现更多欺诈风险点
关联图谱识别
基于图的数据结构,它是借款人之间有效的关系表达方式
借款人小王和借款人小张填写的电话号码属于同一家公司,但两人填写的公司名称却不一样,这种不一致情况可能是欺诈风险点
黑产分析
“黑产”分析是指通过互联网或线下渠道,收集相关的欺诈情报或线索,并基于此开展专题分析。 我们要持续关注“黑产”动态,了解和掌握“黑产”的最新套路和作案手段,有针对性地进行自身反欺诈策略的优化
实时数据监控
通过分析和监控设备指纹(IMEI、WiFi等)聚集性、地点(GPS、申请表中的自填地址等)聚集性,我们可以发现潜在的风险
制订“量化”规则
目标变量的定义非常重要,根据不同需求和业务场景定义不同的目标变量。 例如,为了识别欺诈风险,我们可将客户首期还款时的逾期表现作为目标变量
样本选取
训练集(Train)和跨时间验证集(OOT)
单规则的制订
IV分析法
极端值检测
极端值检测方式假定不良(bad)客户异于大部分其他客户,基于此,我们巧用分位数,枚举可能的极端值,并将它们作为阈值,制订单规则【其次 我们也可以根据 IV分箱后的分组 进行 某个极端值的判断】
规则评估
1、在不同时间窗口,若规则效果评估的差异较大,则我们需要判断是规则无效还是客群变化引起的,必要时,我们需要重新调整规则阈值,再次进行评估 规则效果主要体现在命中样本逾期率(hit_bad_rate)与整体逾期率(total_bad_rate)的倍数差异,即提升度(lift) 【方法待定】
规则效果
1、在不同时间窗口,若规则效果评估的差异较大,则我们需要判断是规则无效还是客群变化引起的,必要时,我们需要重新调整规则阈值,再次进行评估 规则效果主要体现在命中样本逾期率(hit_bad_rate)与整体逾期率(total_bad_rate)的倍数差异,即提升度(lift) 【方法待定】
规则的稳定性
其主要体现在不同时间窗口的规则命中率、命中量是否稳定 重点验证其在OOT【验证集】样本上的命中率和逾期率的稳定性
规则的收益性
● 数据单价:规则使用的数据源单次调用价格。 ● 命中率:外部规则在放款样本上的命中率。 ● 规则命中坏账率:命中放款样本上的坏账率。 ● 盈亏平衡坏账率:当坏账率为此数值时,放款的收益等于成本与损失之和。 ● 件均:放款金额平均值。 在本示例中,假设当前有100个客户命中了相关规则,那么,我们可以通过计算得到以下结果。 ● 应用规则带来的数据成本=100/命中率×数据单价=100/0.01×0.5=5000元(此处假设新规则添加在原规则集之后,在实际业务中,我们需要根据具体规则应用的位置进行调整)。 ● 应用规则减少的损失=100×件均×(规则命中坏账率-盈亏平衡坏账率) =100×8000×(0.15-0.1)=40000元。 ● 应用规则带来的最终收益=应用规则减少的损失-应用规则带来的数据成本=40000-5000=35000元。规则命中一次的期望收益为350元,规则查询一次的期望收益为3.5元。 综上所述,该规则的应用带来的收益为正,因此,我们应该采用该规则 【方案 待定】
规则上线
可先上线“陪跑”
A/B测试分流比例是否正确
实际分流比例与配置比例基本一致,我们需要验证进入规则样本数比例是否符合预期
规则回顾
言外之意: 就是 查看 陪跑组 与 决策组 的逾期表现程度,然后 决定 是否加大 分流比例 还有就是:将所有 策略进行上线, 灰色策略不配置,然后提取数据 分析查看表现是否转正
模型策略分析方法
单模型策略
一个评分卡模型的 阈值区分做的 策略
多模型组合策略
多个评分卡模型的 阈值区分做的 策略
多模型融合准入
多模型串行准入
多模型交叉准入
该方法的优势在于,利用模型分交叉生成的风险等级矩阵更能体现多模型的优势,风险等级的划分也更细
模型策略评估
模型策略评估。 当应用新版挑战者(Challenge)模型替换线上冠军(Champion)模型决策时,通常会用到 交换集分析 (swap set analysis)。交换集分析又称 换入换出分析
交换集分析
由此,客群被划分为下面3个子客群。 其实也就是 混淆矩阵 (1) Swap-in population :指被旧模型拒绝但被新模型通过的客户。通常,这部分人是之前被拒绝的客户,其好坏标签未知,我们可以采用拒绝推断方式进行预估。 (2) Swap-out population :指被旧模型通过但被新模型拒绝的客户。通常,这部分人是放款客户,其好坏标签已知。 (3) No change :指被新旧模型同时拒绝或通过,因此,审批状态没有差异且通过样本好坏标签已知。
在通过率(38.5%)保持不变的情况下,我们可以使坏账率从6.6%降到5.5%
额度策略分析方法
每个客户的偿债能力和风险表现不同, 初始的授信额度是否满足客户的实际需求是不确定的, 需要持续监控和优化,提升客户满意度
单一额度策略
新的信贷业务开展之前,由于还没有收集到客户的任何数据信息,因此,金融机构一般会基于信贷产品属性和业务场景设置一个初始额度,如小额个人现金贷额度为5000元、小微企业现金贷额度为20万元等
在业务开展一段时间后,因有历史客户数据作为支撑,我们可以将具有相同贷款次数的客户进一步划分为不同群体,并给予差异化的额度
多因子额度策略
在A/B测试后。我们根据收益最大化原则选取最优方案
额度策略评估
风控策略体系的搭建
贷前策略
风险准入策略
身份信息认证
身份证信息认证
主要包括身份证信息是否真实有效, 身份证是否在有效期内, 姓名与身份证号码是否对应, 以及身份证上的照片与官方备案的照片是否一致等
人脸对比认证
包含客户活体检测,以及人脸与照片的一致验证 客户活体检测要求客户对着手机摄像头随机进行点头、摇头、眨眼和张嘴等动作
银行卡三、四要素认证
四要素:银行卡号、姓名、身份证号和银行预留手机号
运营商三要素认证
身份证号、手机号和姓名是否与移动运营商留存信息一致
基础信息准入
年龄准入
贷款用途准入
贷款用途反映借款人的借款需求和借款目的 款资金需要专款专用,并且不能用于投资、炒股和炒房等
地域准入
行业准入
借款人从事的行业能反映其从事工作的合法性和稳定性。在通常情况下,金融机构厌恶高风险、稳定性差的行业
黑/白名单策略
黑名单拒绝
1、包含金融机构拒绝放款的客户,主要有历史严重逾期客户、有欺诈行为的客户、有违法行为的客户和恶意投诉客户等 2、对于第三方接入的黑名单,金融机构在初始阶段会随机对5%~10%的客户做A/B测试,目的是验证第三方黑名单是否适合当前信贷业务
白名单准入
白名单的策略是“命中即通过”。 白名单准入策略的好处: ①确保风险可控; ②提升审批通过率,扩大业务规模; ③快速积累数据,优化风控策略 生成白名单的方式如下。 ● 自有数据挖掘:自身的存量客户,根据风险表现,结合数据挖掘和专家经验,共同设定白名单。 ● 外部数据匹配:引入第三方数据,如学历、社保、公积金、客户交易信息和征信报告等,这些数据对客户信用的区分能力强,可选择其导入白名单。
其他准入策略
例如,在客户最近的申请被拒绝后,其再次申请借款时,准入可以进行拦截
反欺诈策略
欺诈的分类
反欺诈规则
优点: ①能够有效遏制特定的欺诈行为; ②可解释性强,应对欺诈手段时可快速调整
ID关联异常
如身份证号、手机号、银行卡号和设备号等身份识别信息存在一对多的异常关联
App操作行为异常
操作时间过短或某些环节操作时间间隔过短
位置行为异常
如短时间内设备的GPS定位移动距离过大、短时间内手机号检测地址移动距离过大
安装高风险类App
装作弊类、欺诈类、赌博类和模拟类等高风险类App,或者此类App占比过大
移动设备异常
设备有root记录、安装模拟器、设备中的App数量极少和使用VPN等
交叉验证信息不一致
GPS定位地址、工作地、居住地、IP解析地址、身份证上的地址和手机号归属地等,两两核验不一致次数过多
特殊手机号码
借款人手机号是虚拟手机号码(专门接收短信)等
特殊银行卡
借款人绑定的银行卡是虚拟银行卡、特殊渠道银行卡和具有某些前缀的银行卡号
紧急联系人异常
借款人与其他借款人共用紧急联系人信息等
团伙欺诈特性
利用相同公司、相同地址集中申请,GPS定位范围内集中关联的逾期案件量或比例较高等
社交关系网络风险
如 一度/二度联系人申请比例、 一度/二度联系人逾期或欺诈比例 一度/二度联系人命中黑名单比例过高等
疑似撸贷
短期内频繁出现提前还款后立即再次借款的行为
身份欺诈
同一人像对应不同证件, 活体与身份证上的人像不一致, 以及命中人像黑名单等
反欺诈模型
根据模型所得概率 进行阈值划分 ,形成反欺诈规则
有监督学习
1、反欺诈模型 的 目标变量【X自变量,Y因变量】,可以根据命中过 反欺诈规则的数据进行判断参考 2、①可以充分利用弱特征;【反欺诈模型与 反欺诈规则有很好的互补性】 ②对抗性好,可增加欺诈的成本。
无监督学习
通过聚类算法对多维特征进行聚类,找出与大部分客户行为差异较大的客户群体,并予以拒绝。 例如,异常点检测中的孤立森林算法可用于反欺诈模型的开发。
信用风险策略
还能力不足导致逾期
信用风险规则
收入水平
1、融机构的偏好和各地区的经济水平综合确定 2、直接数据判断:银行流水、公积金数据等 3、间接数据判断:消费账单、电商购物数据和运营商数据,以及客户个人信息,如学历,是否有车和有房
负债水平
1、负债水平与收入水平相匹配 2、贷款余额+信用卡已用额度 3、核算负债的月供=房贷月供+消费抵押贷月供+经营性贷款月供+汽车贷款月供+其他贷款月供+一切对外担保贷款 第三方数据源获取,主要统计借款人在其他非银行金融机构申请借款次数、申请机构数、申请最大间隔天数、申请最小间隔天数、最大月申请次数和最小月申请次数等维度特征
信用历史
1、一般出现在央行征信报告 2、本行【也会出行再征信报告中】或金融机构的历史逾期 拒绝出现严重逾期或逾期次数过多的借款人
信用风险模型
评分卡
贷前额度策略
对于单次授信单次借款的模式,我们需要对客户的总授信额度进行限制,【产品限额】
无成本 策略与模型 优先 与三方 有成本策略与模型
贷中策略
主要针对循环额度模式的信贷产品 还款能力有可能发生变化,影响其正常还款,金融机构需要及时做出调整,这体现了贷中策略的重要性
贷中支用【借款】策略
支用风险规则
相比贷前风险规则,支用风险规则中可以增补一部分与贷中行为相关的规则 如: 从授信到支用的过程中,我们查询到某客户在其他机构的借款产生逾期、支用时的多头借贷申请次数比授信时增加了3次以上【在支用时,同时还在进行其它机构的贷款申请】。
支用风险模型
贷中额度策略
1、高风险客户,降低额度 控制风险敞口,减少损失 2、好客户,提高额度,提供用户满意度 【可理解 为额度重评】
风险规则
风险较高的客户,我们应该禁止额度调整, 可通过类似贷前和贷中支用的风险规则进行风险拦截,如年龄超过限制、历史上逾期次数较多等
使用规则
额度使用率过低的客户,我们没必要进行额度调整
贷中行为模型
贷中行为模型对在贷客户进行风险评估,并基于贷中风险和其他维度更新客户额度,从而计算得到客户应该调整的额度 1、定期(如每个月月初)对满足一定条件(如借款超过3个月)的存量客户进行批量评估,从而实现金融机构的主动额度调整; 2、也可以基于客户的提额申请,进行实时的个别额度评估
贷后策略
1、逾期客户制订的一系列策略,用于提高催收效率,提升催收回款率 2、催收方式有短信、电话、电子邮件、上门催收和法院诉讼等 3、按照渠道,催收分为内部催收和委外催收
等级划分图
早期催收
逾期在10天以内
中期催收
如逾期10~30天
晚期催收
如逾期30天以上
风控策略的监控与预警
贷前转化监控
产品转化
风控转化
贷前规则命中率
贷后逾期监控
● 统计样本的口径,可以按照一个放款周期进行统计(统计逾期率),也可以按照每一个还款周期进行统计(统计入催率、回款率)。 ● 统计的表现时间范围,可以包含MOB0、MOB3、MOB6和MOB12等。 ● 统计的对象,可以为首期还款的逾期天数(FPD0+、FPD10+和FPD30+等),也可以是截至统计表现期末时间点的逾期天数(DPD0+、DPD10+和DPD30+等),或者统计其间历史最大的逾期天数(EVER0+、EVER10+和EVER30+等),以及入催率、回款率等指标。 ● 统计的数值,可以是订单数量口径或订单金额口径。 ● 监控的更新周期包括天、周和月等。
资产监控
交易量
资产余额
拓展:营销
通过营销响应模型,我们可以排除响应概率低的客户,我们可制订差异化营销方式
回溯
我们将事后再计算以前某个时间点的特征的行为称为“回溯”
A/B测试
《智能风控实践指南:从模型、特征到决策[精品]》- 4.2 风控策略方法论
A/B测试方案设计
①确定实验组和对照组的内容; ②流量分配。 在金融风控领域,A/B测试通常用来验证新旧模型或规则的效果是否有显著差异, 即实验组对应新模型策略,对照组对应旧模型策略 在正式进行A/B测试时,如果流量充足,那么稳妥的实验方案是同时进行A/A测试,即有实验组、对照组和验证组。A/A测试增加了一个与对照组有相同方案的验证组,用来统计随机误差,从而更好地获得实验组与对照组的真正差异
测试结果分析
测试有效性判断
①判断测试的样本量是否达到所需的最小样本量,从而可以尽可能地避免两类统计错误(有效误判为无效,无效误判为有效)的发生; ②判断样本的有效性,即判断采用A/A测试结果的两组之间是否有显著差异,若不存在显著差异,则认为测试结果有效
测试结果的比较
通常对比实验组与对照组的结果,判断它们之间是否存在显著差异,从而判断新方案相对旧方案在业务效果方面是否有显著提升。
多测试同时展开
由于实验1分流之后又经过聚合,因此客户将随机分配到实验2的两个测试组中。只要样本量充足,理论上,两个实验组都满足A/B测试要求,我们可以分别对它们进行分析并得到测试结论
假设检验
可参考:非参数统计,进行检验 :https://zhuanlan.zhihu.com/p/396704198
总结
机器学习的局限性
数据不足
需要有经验的风控人员与智能决策互相补充,预判风险并做出人工决策
可解释性低
因果难区分
模型无法直接“回答”关系模式中哪个是原因,哪个是结果
辛普森悖论
1、辛普森悖论揭示了我们看到的数据并非是事实的全貌。因此,须关注整个数据的生成过程,考虑因果关系,并对数据负责。 2、当我们理解了数据产生的机制,就能站在更高的角度,找到其他潜在影响因素
统计中的悖论:法学院统计数据
统计中的悖论:商学院统计数据
这样看,女生在两个学院都被优先录取,即女生的录取比例较高
统计中的悖论:合计数据
汇总两个学院,发现男生的录取绿比例较高
异常识别
对于偶发的异常情况识别,人工更具优势
黑产对抗
1、黑产对抗是指针对市场上潜在的黑产欺诈群体进行跟踪分析,掌握他们制造欺诈案件的手段,有针对性地设计欺诈防范措施 2、信贷风控基于历史数据训练的模型和规则都有一定的滞后性,因此需要风控人员深入黑产内部,提前了解动向
产业链
初级方法
新闻
订阅信贷行业的新闻信息,尤其关注已经曝露的黑产新闻信息。
公众号
关注各类揭露黑产的公众号,研读相关案例。
贴吧
跟踪各类“撸贷”贴吧,以及“撸贷”方法的交流贴吧。
微信群/QQ群
通过进入“撸贷”产品的微信群或QQ群获得相关黑产信息
高级方法
需要专业人员到相关的黑产群体中收集信息 如申请人员都集中在某个群、集中购买某些信贷分期商品、地址都是同一个区域、身份证是以“从图库上传”而非“拍摄”方式录入系统、身份证是拍摄屏幕上的照片和申请人设备具有相同的WiFi连接列表等。根据这些关键线索,我们可以进一步进行特征挖掘,为后续的反欺诈规则制订和模型应用提供输入。
压力测试
数据源风险: 使用第三方数据源时,难免会遇到数据源服务异常甚至中断的情况。为了应对这种状况,我们可以事先制订应对方案,对数据源进行分级,确认哪些数据源是必不可少的,哪些数据源是可以替代的。 针对可以替代的数据源,通过置空部分特征或引入其他数据方式建立备份模型,提前作为“陪跑”测试模型,在数据中断后,可以立即启用。然后,我们对不同的数据源中断进行压力测试,分析不同情况对损失率的影响,可以判断出什么情况下需要暂停业务,什么情况下可以采用替代模型保持业务继续进行,从而制订明确的风险预防计划