【菜菜的sklearn课堂笔记】逻辑回归与评分卡-用逻辑回归制作评分卡-制作评分卡

视频作者:菜菜TsaiTsai
链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili

评分卡中的分数,由以下公式计算:
S c o r e = A − B × log ⁡ ( o d d s ) Score = A-B \times \log(odds) Score=AB×log(odds)
其中A与B是常数,A叫做“补偿”,B叫做“刻度”, log ⁡ ( o d d s ) \log(odds) log(odds)代表了一个人违约的可能性。对于一个样本,代入先进行WOE变换,然后代入逻辑回归得到的值就是 log ⁡ ( o d d s ) \log(odds) log(odds)
我们要假定一个基准分,这是一个人为设定的分数,这里我们假设600分对应好坏比为 1 60 \begin{aligned} \frac{1}{60}\end{aligned} 601,如果好坏比增加一倍,也就是好坏比为 1 30 \begin{aligned} \frac{1}{30}\end{aligned} 301,分数降低20分(指定的违约概率翻倍的分数(PDO)),也就有
{ 600 = A − B × log ⁡ ( 1 60 ) 580 = A − B × log ⁡ ( 1 30 ) \left\{\begin{aligned}&600=A-B \times \log(\frac{1}{60})\\&580=A-B \times \log(\frac{1}{30})\end{aligned}\right. 600=AB×log(601)580=AB×log(301)

B = 20/np.log(1/2)
A = 600 + B * np.log(1/60)
B,A
---
(28.85390081777927, 481.8621880878296)

有了A和B,分数就很容易得到了。其中不受评分卡中各特征影响的基础分(这个也被称为基础分),就是将截距作为 log ⁡ ( o d d s ) \log(odds) log(odds)带入公式进行计算:

base_score = A - B * lr.intercept_
base_score
---
array([482.06209686])

用不同分箱的WOE值乘B,得到的数值就是该分箱对分数的影响

with open(r'D:\ObsidianWorkSpace\SklearnData\ScoreData.csv',"w") as fdata:
    fdata.write("base_score,{}\n".format(base_score))
for i,col in enumerate(X.columns):
    score = woeall[col] * (-B * lr.coef_[0][i])
    score.name = "Score"
    score.index.name = col
    score.to_csv(r'D:\ObsidianWorkSpace\SklearnData\ScoreData.csv',header=True,mode="a")

其实大家可以发现,真正建模的部分不多,更多是我们如何处理数据,如何利用统计和机器学习的方法将数据调整成我们希望的样子,所以除了算法,更加重要的是我们能够达成数据目的的工程能力

推荐一篇文章:评分卡–基础分、基准分、PDO、WOE、补偿、刻度 行可可_公众号-行可可的博客-CSDN博客_评分卡pdo

你可能感兴趣的:(菜菜的sklearn课堂,sklearn,逻辑回归,算法,人工智能)