信贷评分卡

  • 前言
  • 1.逻辑回归原理
    • 1.1 求解方式
    • 1.2 逻辑回归为什么用sigmoid并且转化后的输出即为1的概率
  • 2.逻辑回归到评分卡
    • 2.1 woe及IV
    • 2.2 逻辑回归到评分卡
    • 2.3 评分卡的开发流程
  • 3.逻辑回归对数据的要求(比较严格)
  • 4.逻辑回归的优缺点
  • 5.算法需要注意的点

前言

在业界有几种不同的流派(业界建立逻辑回归)

  • 直接用原始变量进行回归(模型粗糙并不能生成评分卡)
  • 从原始数据生成0/1的虚拟变量(dummy variable)进行回归(FICO用的较多,已不是主流)
  • 从原始数据生成woe(weight of evidence)进行回归

1.逻辑回归原理

1.1 求解方式

预测函数(线性回归模型上加了sigmoid函数):hθ(x)=11+e−θx其中θx=θ0+θ1x1+θ2x2+...+θnxnh_\theta(x)=\frac{1}{1+e^{-\theta x}} \qquad 其中\theta x=\theta _0+\theta _1x_1+\theta _2x_2+...+\theta _nx_nhθ​(x)=1+e−θx1​其中θx=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​
对于二分类:
{p(y=1∣x,θ)=hθ(x)p(y=0∣x,θ)=1−hθ(x)\begin{cases} p(y=1|x,\theta)=h_\theta(x)\\ p(y=0|x,\theta)=1-h_\theta(x)\\ \end{cases}{p(y=1∣x,θ)=hθ​(x)p(y=0∣x,θ)=1−hθ​(x)​
将其合并得到:
p(y∣x,θ)=hθ(x)y(1−hθ(x))(1−y)p(y|x,\theta)=h_\theta(x)^y(1-h_\theta(x))^{(1-y)}p(y∣x,θ)=hθ​(x)y(1−hθ​(x))(1−y)
利用极大似然估计得到(MLE):
L(θ)=∏i=1np(yi∣xi,θ)=∏i=1nhθ(xi)yi(1−hθ(xi))(1−yi)L_{(\theta)}=\prod_{i=1}^np(y_i|x_i,\theta)=\prod_{i=1}^nh_\theta(x_i)^{y_i}(1-h_\theta(x_i))^{(1-y_i)}L(θ)​=i=1∏n​p(yi​∣xi​,θ)=i=1∏n​hθ​(xi​)yi​(1−hθ​(xi​))(1−yi​)
两边同时取log:
logL(θ)=∑i=1m[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]logL_{(\theta)}=\sum_{i=1}^m[y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))]logL(θ)​=i=1∑m​[yi​loghθ​(xi​)+(1−yi​)log(1−hθ​(xi​))]
对于logL(θ)logL_{(\theta)}logL(θ)​求最优解即是求最大值(MLE),为了用梯度下降的算法对logL(θ)logL_{(\theta)}logL(θ)​取负数,即−logL(θ)-logL_{(\theta)}−logL(θ)​最小值也就是logL(θ)logL_{(\theta)}logL(θ)​的最大值:
J(w)=−1mlogL(θ)=−1m∑i=1m[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]J(w)=-\frac{1}{m}logL_{(\theta)}=-\frac{1}{m}\sum_{i=1}^m[y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))]J(w)=−m1​logL(θ)​=−m1​i=1∑m​[yi​loghθ​(xi​)+(1−yi​)log(1−hθ​(xi​))]
根据梯度下降的求解可得θj\theta_jθj​的更新方式:
θj:=θj−α1m∑i=1m(hθ(xi)−yi)xij\theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^jθj​:=θj​−αm1​i=1∑m​(hθ​(xi​)−yi​)xij​

1.2 逻辑回归为什么用sigmoid并且转化后的输出即为1的概率


逻辑回归的假设是y服从伯努利分布(E(X)=p,D(X)=p(1-p)),可以得出概率函数:
f(x∣p)=px(1−p)1−x=exp(η∗x+ln(1+eη))⟹η=ln(p1−p)满足条件1f(x|p)=p^x(1-p)^{1-x}=exp(\eta*x+ln(1+e^\eta))\implies\eta=ln(\frac{p}{1-p})满足条件1f(x∣p)=px(1−p)1−x=exp(η∗x+ln(1+eη))⟹η=ln(1−pp​)满足条件1
η=xβ⟹(结合η=ln(p1−p))⟹E(Y)=p=g−1(η)=11+e−η满足条件2、3\eta=x\beta \implies(结合\eta=ln(\frac{p}{1-p})) \implies E(Y)=p=g^{-1}(\eta)=\frac{1}{1+e^{-\eta}}满足条件2、3η=xβ⟹(结合η=ln(1−pp​))⟹E(Y)=p=g−1(η)=1+e−η1​满足条件2、3
在伯努利分布中E(Y)=p表示的就是1的概率

2.逻辑回归到评分卡

2.1 woe及IV

woe的计算公式:
WOEi=lnp(yi1)p(yi0)=lnBiBGiG(p(yi1)为i区间坏样本占总体坏样本比例,p(yi0)为i区间好样本占总体好样本比例,越大这个分组坏样本可能性越大)WOE_i=ln\frac{p(y_{i1})}{p(y_{i0})}=ln\frac{\frac{B_i}{B}}{\frac{G_i}{G}}(p(y_{i1})为i区间坏样本占总体坏样本比例,p(y_{i0})为i区间好样本占总体好样本比例,越大这个分组坏样本可能性越大)WOEi​=lnp(yi0​)p(yi1​)​=lnGGi​​BBi​​​(p(yi1​)为i区间坏样本占总体坏样本比例,p(yi0​)为i区间好样本占总体好样本比例,越大这个分组坏样本可能性越大)
IV的计算公式:
IVi=(p(yi1)−p(yi0))∗WOEi(WOE的加权求和。IV越大,区分度越大,价值越大)IV_i=(p(y_{i1})-p(y_{i0}))*WOE_i(WOE的加权求和。IV越大,区分度越大,价值越大)IVi​=(p(yi1​)−p(yi0​))∗WOEi​(WOE的加权求和。IV越大,区分度越大,价值越大)

2.2 逻辑回归到评分卡

ln(odds)=ln(p1−p)=θ0+θ1x1+θ2x2+...+θnxn(其中x一般是woe编码后的值,也可以是原始数据,输出即为1的概率)ln(odds)=ln(\frac{p}{1-p})=\theta _0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n(其中x一般是woe编码后的值,也可以是原始数据,输出即为1的概率)ln(odds)=ln(1−pp​)=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​(其中x一般是woe编码后的值,也可以是原始数据,输出即为1的概率)
以上给的是概率,有时候还需要将概率以分数形式输出,类似于蚂蚁分。具体如下:
Score总=A+B∗ln(odds)Score_总=A+B*ln(odds)Score总​=A+B∗ln(odds)
转换步骤:
1、设定odds=θ0odds=\theta _0odds=θ0​时的分数P0P_0P0​
2、设定oddsoddsodds每增加一倍时,增加分数为PDOPDOPDO
3、当odds=θ0odds=\theta _0odds=θ0​时的分数P0P_0P0​,odds=2θ0odds=2\theta _0odds=2θ0​分数为P0+PDOP_0+PDOP0​+PDO
{p0=A+Bln(θ0)p0+PDO=A+Bln(2θ0)\begin{cases} p_0=A+Bln(\theta _0)\\ p_0+PDO=A+Bln(2\theta _0)\\ \end{cases}{p0​=A+Bln(θ0​)p0​+PDO=A+Bln(2θ0​)​
⟹{B=PDOln(2)A=P0−Bln(θ0)\implies\begin{cases} B=\frac{PDO}{ln(2)}\\ A=P_0-Bln(\theta _0)\\ \end{cases}⟹{B=ln(2)PDO​A=P0​−Bln(θ0​)​

2.3 评分卡的开发流程

具体可参考建模流程https://blog.csdn.net/weixin_41851055/article/details/106194063

  • 一个好的评分卡,样本分数平滑且接近正太分布,建模样本与验证样本保持一致
  • log(odds)log(odds)log(odds)和评分之间具有线性关系
  • PSI=∑i=1nln(建模样本比例i验证样本比例i∗(建模样本比例i−验证样本比例i))PSI=\sum_{i=1}^nln(\frac{建模样本比例i}{验证样本比例i}*(建模样本比例i-验证样本比例i))PSI=∑i=1n​ln(验证样本比例i建模样本比例i​∗(建模样本比例i−验证样本比例i))当PSI<0.2样本稳定

3.逻辑回归对数据的要求(比较严格)

输入数据必须是数值型数据缺失值必须要填充、数据需要归一化或者标准化

4.逻辑回归的优缺点

优点:

  • 形式简单、速度快、占用内存小(只需要各维度的特征值)
  • 模型的可解释性好(假设性检验或者直接看各个特征对模型结果的影响)
  • 模型效果不错(特征工程做的好)
  • 方便输出结果阈值(阈值设定)

缺点:

  • 容易欠拟合,相比较集成模型准确率不高
  • 对数据要求较高(缺失、数据类型、异常、共线比较敏感)
  • 处理非线性比较麻烦(非线性映射)
  • 很难处理不平衡数据(高维、大量多类特征难以处理)
  • 本身无法筛选特征

5.算法需要注意的点

为什么用极大似然估计作为损失函数
θj:=θj−α1m∑i=1m(hθ(xi)−yi)xij\theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^jθj​:=θj​−αm1​∑i=1m​(hθ​(xi​)−yi​)xij​更新速度只与xij和yix_i^j和y_ixij​和yi​相关,与sigmoid梯度无关,如果用平方损失函数会推导出更新的速度和sigmoid函数本身很相关。sigmoid在它定义域内梯度都不大于0.25,这样训练会非常缓慢。

训练过程中,有很多特征高的相关,会造成怎样的影响
损失函数最终收敛的情况下,最后不会影响分类效果。但是对于可解释性会产生很大的影响。(一方面权重分给了不同的特征,另一方面可能正负相互抵消)

为什么在训练过程中将高度相关的特征去掉
1、让模型的可解释性更好。2、大大提高训练速度。

为什么我们选自然对数作为成本函数(符合上面性质函数很多)
因为预测函数有sigmoid,函数中含有ene^nen,其逆运算刚好是自然对数,最终会推导出形式优美模型参数的迭代函数,而不涉及指数或对数运算。

注:

  • 理论与实践会有所差别,例如在处理样本不均衡时,评分卡并不是1:1效果最好,需要根据每个场景来实践
  • 虽然模型比较偏技术,但是在整个流程当中需要业务的贯穿。无论从单变量的选择(可解释性)还是y标签的制定(vintage)等都需要强有力的业务解释

信用评分卡—信贷准入A卡(逻辑回归)相关推荐

  1. [机器学习] 信用评分卡中的应用 | 干货

    背景介绍与评分卡模型的基本概念 如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判.交易对手未能履行约定契约中的义务而造成经济损失的风险,即 ...

  2. 「实战案例」基于Python语言开发的信用评分卡

    信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...

  3. 信用评分卡(A卡/B卡/C卡)模型简介

    如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判.但是不是所有人都知道信用评分卡还分A,B,C卡三类! A卡(Application sc ...

  4. 信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货

    本文转自:https://blog.csdn.net/varyall/article/details/81173326 零.什么是信用评分卡 如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评 ...

  5. GiveMeSomeCredit——信用评分卡模型

    如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判.评分卡分为三类分别为: A卡(Application score card)申请评分卡 ...

  6. 信用评分卡(A卡/B卡/C卡)简介

    转载自:https://blog.csdn.net/dzysunshine/article/details/97168492 一.信用评分卡 如今在银行,P2P等各种贷款业务机构,普遍使用信用评分,对 ...

  7. 信用评分之二--信用评分中的评分卡中的A卡、B卡和C卡

    A卡(Application score card)申请评分卡 B卡(Behavior score card)行为评分卡 C卡(Collection score card)催收评分卡 评分机制的区别在 ...

  8. 基于 Python 的信用评分模型开发-附数据和代码

    来源 | 知乎  作者 | Carl 文章链接 | https://zhuanlan.zhihu.com/p/35284849 信用评分模型可用"四张卡"来表示,分别是 A卡(Ap ...

  9. 干货 | 基于 Python 的信用评分模型实战!

    来源 | 知乎  作者 | Carl 文章链接 | https://zhuanlan.zhihu.com/p/35284849 信用评分模型可用"四张卡"来表示,分别是 A卡(Ap ...

最新文章

  1. 学习在Unity中创建一个动作RPG游戏
  2. poj 3083 DFS
  3. [转]解决Android studio升级到3.5的一些问题
  4. 最小生成树——克鲁斯卡尔算法
  5. 用unity制作能量护盾(3)
  6. [数位dp] Jzoj P4239 光棍
  7. JavaScript console.log导致错误:“不赞成在主线程上使用同步XMLHttpRequest…”
  8. 实用的 Python —— 进制(二进制形式中 1 的位数)
  9. 【渝粤教育】国家开放大学2019年春季 1087数学分析专题研究 参考试题
  10. Android studio 录屏并制作gif
  11. 追光的人对Echo,SkyReach的Beta产品测试报告
  12. layer.open打不开弹窗的问题
  13. 3.1 TMO MATLAB 框架(Advanced High Dynamic Range Imaging )
  14. linux系统下如何修改开机图片,Ubuntu Kylin下修改登录背景,用户头像,开机动画及自动更换壁纸...
  15. Java空指针异常处理
  16. GPT-4——比GPT-3强100倍
  17. 常见面试问题1:ZooKeeper、Redis、Mysql、JVM、Spring、Dubbo
  18. .md是什么文件_生信中常见的数据文件格式
  19. ContextCaptureMaster/Smart3D 集群处理详解
  20. 软考信息系统项目管理师论文备考工作

热门文章

  1. 【已解决】java.lang.NullPointerException at line 15, Solution.r
  2. c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
  3. eclipse控制台自动换行不分割单词_这 7 个实用的文档技巧,不掌握就太可惜了...
  4. CreateMainWindow 创建主窗口属性
  5. php群发不用foreach,如何在没有foreach的情况下使用PHP生成器?
  6. 工业机器人打磨抛光编程员工资_让我们一起来谈谈,工业机器人行业的真实工资是多少?...
  7. vue each_Vue.js从零开始——模块化项目(2)
  8. android7.1 shotcuts,Android N App Shotcuts 学习
  9. php怎么自定义设置打印区域,JavaScript_jQuery实现区域打印功能代码详解,使用CSS控制打印样式,需要设 - phpStudy...
  10. 搜索长度未知的有序数组java_java二分法实现在有序的数组中定位某数在数组中的位置...