对于整体情况的评分常用的方法有层次分析法,模糊分析法。
近期发现金融行业常用的评分卡模型,经过初步探索以后有了一定的理解,同时也存在一些待解决的疑问。
一、有监督数据
评分卡模型是有监督的打分模型,所以训练模型的数据集需要包含特征和二分类标签。以GiveMeSomeCredit数据集为例,第一列target为我们的目标标签,1表示存在违约,0表示无违约情况。
.
二、特征提取
特征之间不宜存在强的相关关系,否则会影响算法的结果。
并不是所有特征都对target起重要作用的,通过计算IV值判断每个特征的影响权重。
评分卡算法有三个关键词:分箱、WOE、IV
2.1 分箱
分箱就是把每个特征划分为几个等级。比如年龄特征经过分箱以后为20-30、31-50、51-70、71-100五类。
分箱的目的是为了使模型更加稳定。
分箱的方法分为有监督分箱(卡方分箱、cart分箱等)和无监督分箱(等距划分、等频划分)两种,有监督分箱效果会更好。
2.2、WOE证据权重
2.3 IV信息价值
2.4、计算案例
以年龄这一特征为例,对年龄采用等频分箱后,分为九个等级:21-33、34-39、40-45、46-49、50-53、...,代入公式计算出每个层级的WOE,基于WOE计算出特征的IV值。
2.5、特征价值
显然有些特征对target的影响程度不高,不必作为模型训练参数,可以删除。
.
三、逻辑回归
把符合IV条件的特征的WOE值作为模型训练数据,target为目标值,训练逻辑回归模型。
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
x = train_X.drop('target',axis = 1)
y = train_X['target']
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size = 0.3,random_state = 0)
train = pd.concat([train_y,train_x], axis =1)
test = pd.concat([test_y,test_x], axis =1)
train = train.reset_index(drop=True)
test = test.reset_index(drop=True)
lr = LogisticRegression(penalty= 'l1')
lr.fit(train_x,train_y)
回归模型验证的AUC值为0.83,效果还是不错的,标明这些特征能够比较好的预测target的值。
.
四、得分计算
4.1、得分计算原理
4.2、PDO和P0的定义
计算score的前提是需要自定义PDO和P0的值,这个值定义的依据是什么?应该如何科学的定义?(还不知道)
def cal_base(pdo, p0, lr):
B = pdo / math.log(2)
A = p0 - B / math.log(pdo)
base = round(A + B * lr.intercept_[0], 0)
print('base',base)
以下为PDO=100,600,700,800,900,1000;P0=5,10,20对应的基础得分。
4.4、计算每个变量每个等级的分值
#计算分值函数
def compute_score(coe, woe, factor):
scores = []
for w in woe:
score = round(coe * w * factor, 0)
scores.append(score)
return scores
当设置PDO的值为20、p0为600,可以计算出A,B值,同时推出基础分A+BW0为: 314.0,计算出的评分卡分值如下:
当有新的人员数据生成是,可根据评分卡判断新成员的得分。以某一批新成员数据为例,经该评分卡判断后,这批成员的最高得分为604.0,最低得分为429.0(基础分314)
五、问题小结
1、PDO、p0是随便设置的吗?
2、怎么设置阈值,超过这个阈值就接受,不超过就不接受借贷服务。
3、不同的分箱手段带来的AUC值的变动
参考资料
[1]数据集来源于kaggle平台:https://www.kaggle.com/c/GiveMeSomeCredit/data
[2]参考代码(学习资源):https://github.com/htbeker/Application_score_card/blob/master/appliaction_score_card.py
[3]分箱的优点 https://blog.csdn.net/hxcaifly/article/details/80203663
[4]评分卡理论 https://blog.csdn.net/sscc_learning/article/details/78591210