信用评分分卡简介introduction of credit score card

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

背景

随着金融科技初创企业的兴起过去 5 年中出现了许多新的消费信贷机构与传统银行展开竞争。他们通常瞄准银行认为规模太小或因金融危机期间发生的后期损失而不得不削减贷款的细分市场。通俗的讲就是消费金融公司瞄准了银行的次贷市场。

这些新的消费金融公司的主要竞争优势之一是技术包括IT技术和机器学习建模技术AI人脸识别和语音识别技术。

大型银行相对传统保守技术变革动力小。银行主要客户是信用较好客户大力推动的是信用卡来鼓励用户超前消费。

例如英国商业贷款机构 iwoca使用来自关联公司账户、增值税申报表甚至 ebay 或亚马逊上的销售交易的信息来确定新贷款。英国消费贷款公司 lendable以在几分钟内完成个人信用贷款而不是传统银行需要几天或几周漫长审批的时间。

英国商业贷款机构 iwoca和 lendable国内消费金融公司例如招联兴业消金借呗微粒贷拍拍贷都会使用类似下面的风控系统实现对大部分客户自动化审批贷款。

凭借快速和自动决策引擎他们使用自动和快速的信用风险模型来评估风险。

什么是信用评分卡

我们大多数人都熟悉信用评分的概念这是一个代表个人信用度的数值。像银行这样的所有信贷机构都有复杂的信用模型。这些模型会读取用户的各种信息如工资、信用历史记录年龄性别和多头借贷等因素然后训练模型最后通过复杂数学计算输出客户的信用评分。信用评分卡模型可以输出用户信用分或违约概率。

信用评分卡就是其中一种信用模型它是最常见的信用模型之一。信用评分卡是基于逻辑回归算法。它对大家来说相对容易理解而且它已经存在了几十年因此开发过程是标准的广为人知。

信用评分卡也有几个子类模型常见的有ABC卡。

但需要注意的是不同机构的分数范围可能不同较低分数的拒绝申请的截止点因贷款人而异甚至可能在同一贷款人但不同产品中有所不同.

建立信用记分卡

目标变量通常采用二进制形式根据数据的不同可以为 0 表示好客户放贷客户可以为 1 表示违约客户或逾期 90 天付款的客户拒绝放贷客户。

第 1 步数据探索和清理

所有模型拟合中的必要步骤但由于它不是特定于构建信用评分卡模型因此我们将跳过此部分。不要忘记将数据集也分成训练和测试数据集即train和test数据集。

第 2 步数据转换——证据权重法

然后我们需要使用证据权重 (WoE) 方法转换所有自变量如年龄、收入等。该方法根据每个组级别的好申请人与差申请人的比例衡量分组区分好坏风险的“强度”并试图找到自变量与目标变量之间的单调关系。

连续变量的转换步骤

  1. 将数据分成 bin通常大约 10 个最多 20 个bin箱数并非越多越好也并非越少越好根据数据集特征决定分箱数量
  2. 计算好事件的百分比和坏事件的百分比
  3. 取自然对数计算WOE
  4. 用计算出的 WOE 值替换原始数据

如果自变量是分类变量则跳过上面的 1然后执行其余步骤。

Python 中的示例

在将您的数据放入箱子中并对每个箱子的好坏计数进行分组后您的数据可能看起来类似于下面的方框。WoE 可以使用下面的代码为每个 bin 组计算。负值表示特定分组中不良申请人的比例高于良好申请人。

import pandas as pd
import numpy as np


# dummy data as example
age = ['18 to 25','26 to 35','36 to 45','46 to 60','>= 60']
df = pd.DataFrame(age, columns=['Age Group'])
df['counts'] = [31234, 30293, 29384, 30192, 27394]
df['bad'] = [4920, 4123, 3784, 2608, 1479]
df['good'] = df.counts - df.bad

# calculate WOE
df['total_distri'] = df.counts/sum(df.counts)
df['bad_distri'] = df.bad/sum(df.bad)
df['good_distri'] = df.good/sum(df.good)
df['WOE'] = np.log(df.good_distri / df.bad_distri)
df['WOE%'] = df.WOE * 100

在转换结束时如果您有 20 个自变量开始那么您现在将有 20 个 WOE_variablename 列可用于下一步。

使用 WoE 转换的好处
  • 它有助于与逻辑回归中使用的对数几率建立严格的线性关系
  • 它可以处理缺失值因为它们可以合并在一起
  • 可以处理异常值或极值因为它们也被分箱并且输入模型拟合的值是 WoE 转换值而不是原始极值
  • 它还处理分类值因此不需要虚拟变量

第 3 步使用信息值进行特征选择

Information Value (IV) 来自信息论它衡量自变量的预测能力这对特征选择很有用。执行特征选择以确定是否有必要在模型中包含所有特征是一种很好的做法大多数时候我们希望消除弱特征因为通常首选更简单的模型。

根据 Siddiqi (2006)按照惯例信用评分中 IV 统计量的值可以解释如下

根据Toby老师多年建模经验A卡中iv>0.5变量很少见但在B卡和C卡中常出现iv值大于0.5变量当然我们也要审核这些强变量的合理性。

Python 中的示例

继续前面的示例这里我们计算“年龄”的 IV 约为 0.15这意味着年龄具有“中等预测能力”因此我们将继续进行模型拟合。IV 分数小于 0.02 的变量应该被删除。

备注根据Toby老师多年建模经验年龄变量在不同数据集会有不同iv值。在很多数据集年龄变量iv值非常低。这里只是举例说明同学不要死记硬背。

第 4 步模型拟合和解释结果

现在我们使用我们新转换的训练数据集的 WoE 来拟合逻辑回归模型。

将模型缩放为记分卡时我们需要模型拟合的逻辑回归系数以及转换后的 WoE 值。我们还需要将模型的分数从对数赔率单位转换为积分系统。

对于每个自变量Xi其对应的得分为

Score_i= (βi × WoE_i + α/n) × Factor + Offset/n

其中
βi — 变量 Xi 的逻辑回归系数
α — 逻辑回归截距
WoE — 变量 Xi 的证据权重
n — 模型中自变量 Xi 的数量
FactorOffset — 称为缩放参数其中

  • factor = pdo/ln(2)
  • Offset = Target Score — (Factor × ln(Target Odds))

对于上面的示例我们选择将目标分数设置为 600这意味着好客户与坏客户的赔率是 50 比 1 而增加 20 意味着赔率翻倍。请注意缩放比例的选择不会影响记分卡的预测强度。

最终的总分是基于自变量输入值的所有分数的总和。然后贷方将根据建模的总分和截止点根据其他信用违约模型设置评估收到的申请。

Total Score = Σ Score_i

信用评分分卡简介就谈到这里实际上信用评分卡模型细节非常多由于篇幅有限我只能简单概述。真实模型开发并非线性而是一个复杂迭代过程。

如果大家对信用评分卡各种细节感兴趣欢迎大家收藏《python信用评分卡建模附代码》会满足你对信用评分卡所有好奇和疑问。

版权声明文章来自公众号(python风控模型),未经许可不得抄袭。遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6