老饼讲解:一步一步上手学习
在构建评分卡时,往往希望能够将分数控制在一定的范围,以达到业务需求,本文讲解在bbbrisk中、如何对构建好的评分卡进行分数设置、分数范围的设置等等,并展示具体代码实现和使用示例,通过本文,可以了解如何设置评分卡的评分,以及相关注意事项。
本节讲解如何设置评分的参数,以及如何指定评分的范围。
评分卡在模型转评分时,主要由以下四个参数控制:
# 模型odds为d
# 评分为B
# 分数提升S分
# odds每降k倍
bbbrisk默认使用上述参数值来生成评分卡表,它是一般文献、软件中使用的默认参数,如果希望使用其它参数,可以在构建完评分卡后,以指定的参数来重新生成卡表即可。
具体代码示例如下:
import bbbrisk as br
#加载数据
data = br.datasets.load_bloan() # 加载数据
x = data.iloc[:,:-1] # 变量数据
y = data['is_bad'] # 标签数据
# 构建评分卡
bin_sets = br.bins.batch.autoBins(x, y,enum_var=['city','marital']) # 自动分箱
model,card = br.model.scoreCard(x,y,bin_sets,train_param={'random_state':0}) # 构建评分卡
card.build(d=50,B=100,k=2,S=10) # 用指定参数来生成评分卡
score = card.predict(x[card.var]) # 用评分卡进行评分
print('修改后的d,B,k,S=',card.d,',',card.B,',',card.k,',',card.S) # 打印卡表所用的d,B,k,S
br.report.draw_score_disb(score,y,bin_step=10,figsize=(14, 4)) # 分数分布运行结果如下:


从分数分布图可以看到,评分卡已经使用了新的参数来生成评分卡。
由于在国内的业务中,往往喜欢将评分设置在0-100之间,在bbbrisk中,可以使用build_with_range来设置评分的范围,具体代码示例如下:
import bbbrisk as br
#加载数据
data = br.datasets.load_bloan() # 加载数据
x = data.iloc[:,:-1] # 变量数据
y = data['is_bad'] # 标签数据
# 构建评分卡
bin_sets = br.bins.batch.autoBins(x, y,enum_var=['city','marital']) # 自动分箱
model,card = br.model.scoreCard(x,y,bin_sets,train_param={'random_state':0}) # 构建评分卡
card.build_with_range(0.1,99.9,d=50,k=2) # 用指定分数范围来生成评分卡
score = card.predict(x[card.var]) # 用评分卡进行评分
print('当前的d,B,k,S=',card.d,',',card.B,',',card.k,',',card.S) # 打印卡表所用的d,B,k,S
print('评分样本中的最小最大值:',min(score),',',max(score)) # 打印样本数据中,评分的范围运行结果如下:

需要注意的是,由于计算过程会产生数值问题,最终结果可能不会严格地落在范围[a,b]中,例如范围设为[0,100],但结果可能会出现[-0.000001,100.00001]的情况,因此,需要把范围稍微缩小一些,例如在这里取为[0.1,99.9],就是为了保障不超出范围边界。
好了,以上就是如何在bbbrisk中设置分数的方法了~
总的来说,在bbbrisk中要调整评分,只需要将评分卡表按新的评分参数重新生成就可以了,而如果要设置分数范围,则可以用build_with_range来指定范围生成评分卡表。
评论