本文是决策树分箱在R语言中的实现,代码如下,其中df是待分箱的数据集,key_var是主键,y_var是y变量,max_depth是决策树的最大深度,p是决策树叶节点最小占比。
输出对象存放在列表all中,all中包含2个元素,lst_bin是变量分箱结果的列表,df_bin是分好箱的数据集。下面查看lst_bin中某变量分箱结果和df_bin。
某变量分箱结果
分箱后的数据集df_bin
下面函数将训练样本上分箱方式“套进” 测试样本里。其中df是测试样本数据集, key_var是主键, y_var是y值, lst_bin是训练样本上变量分箱结果的列表。该函数也输出一个列表,含有2个元素,其中lst_bin_test是测试样本上变量分箱结果的列表,df_bin是测试样本分箱结果数据集。
上面的两个函数实现了变量分箱的自动化,现在想看看训练样本和测试样本里某个变量的趋势是否一致,编写函数plot_train_test_bin来实现该功能。其中TrainVar_bin是训练样本中某变量的分箱结果及风险趋势, TestVar_bin是测试样本中某变量的分箱结果及风险趋势。
运行后的结果如下,左侧为该变量在训练样本上的趋势,右侧为测试样本上的趋势,从图中可以看出该变量的趋势在3和4两处发生了波动,具体实践时需要具体分析原因,或者看能否将3、4和5进行合并处理等等。
或者,在对上面这个变量分箱时增加叶子结点最小占比,看看分箱结果如何。从下图可以看出,调整后的变量趋势更加稳定了。
领取专属 10元无门槛券
私享最新 技术干货