本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
评分卡最终一般都是以分数的形式输出,而不是直接使用逻辑回归模型进行计算
本文讲解评分卡中如何将逻辑回归模型转换为分数,并展示一个具体的例子和实现代码
通过本文,可以了解评分卡在逻辑回归建模完成后,如何将模型的输出转换为评分表
本节讲解如何将评分卡的模型转换为评分卡表
什么是评分卡模型转评分
评分卡模型输出的是客户的评分,评分越高代表客户的质量越好
在建模阶段,我们得到的是逻辑回归模型,形式如下:
而最终的评分卡表形式如下:
评分卡的模型转评分指的就是将逻辑回归模型转为上述评分卡表形式
评分卡-模型转评分的方法
评分卡的分数是怎么得出来的
评分卡的分数主要由逻辑回归模型的线性部分转换得来
其中,offset、factor是待确定参数
offset和factor如何确定
offet、factor虽然是待定参数,但一般不直接设置offset和factor
一般通过设置d、B、k、S四个参数,来间接得到offset和factor
d、B、k、S四个参数的意义如下:
1. 假设odds为d时,评分为B
2. odds每缩小k倍时,分数提升S分
备注:odds是坏、好概率比,即
在设置好d、B、k、S,就可求得offset和factor
d、B、k、S和offset、factor的关系如下:
d、B、k、S和offset、factor的公式详细推导见《》
评分卡的基础分与特征分
在确定了offset和factor后,就可以计算模型的基础分和特征分
由于:
即可得到基础分和每个特征分为:
本节通过一个实例,讲解如何将评分卡的模型转换为评分卡表
评分卡模型转评分-例子解说
假设我们已得到逻辑回归模型如下:
其中,有两种取值,有三种取值
的woe值如下:
现在需要将模型转成评分卡,具体过程如下:
一、设置odd相关参数
设置odd相关参数如下:
它的意义为:
(1) odds每降低2倍(例如从50:1缩小到25:1),分数提升20分
(2) 当 odds=50:1时,分数是600分
备注:这套d、B、k、S设置是比较常用的设置
二、计算factor和offset
利用B,d,S,k参数计算factor和offset
三、计算BaseScore和FetureScore
1. 计算基础分
由基础分的公式,可以算得:
2. 计算特征得分
由特征分公式
算得各个特征得分如下:
四、最终的评分卡表
综合上面计算的基础分和特征得分,就可得到最后的评分卡如下
本节展示如何使用代码实现评分卡的模型转换为评分卡表
评分卡-模型转评分-代码实现
使用代码实现评分卡的模型转评分,需要先设置好d、B、k、S四个参数
然后计算出factor和offset,再根据公式就可以计算出特征分数与基础好了
具体代码实现如下:
# -*- coding: utf-8 -*-
"""
本代码用于展示如何将评分卡的模型转为评分
本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
import numpy as np
import pandas as pd
features = ['x1','x2'] # 模型的变量
w = np.array([2,0.5]) # 模型的权重
b = 6 # 模型的阈值
df = pd.DataFrame({
'feature': ['x1','x1', 'x2','x2','x2'], # 变量名
'value': ['女','男', '已婚','未婚','离异'], # 变量取值
'woe': [-0.1,0.8,-0.2,0.5,1.2] # 变量取值对应的woe
})
for i in range(len(features)): # 将模型权重拼接到每个变量中
feature = features[i] # 当前变量名
df.loc[df['feature']==feature,'w'] = w[i] # 变量的权重
d = 50 # 当odds为50:1时,
B = 600 # 分数为600
k = 2 # odds每缩小2倍
S = 20 # 分数提升20分
factor = -S/(np.log(k)) # 计算factor
offset = B-factor*np.log(d) # 计算offset
df['score'] = factor*df['w']*df['woe'] # 计算特征得分
baseScore = offset+ factor*b # 计算基础分
print('\n特征得分:\n',df) # 打印特征得分
print('\n基础分:',baseScore) # 打印基础分
代码运行结果如下:
如图所示,将模型转为评分后,就得到了各个特征得分和基础分
好了,以上就是评分卡中如何将模型转为评分了~
End