欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

客户流失预警模型-GBDT模型

发布时间:2025/3/21 编程问答 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 客户流失预警模型-GBDT模型 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

GBDT模型参数问题,这里我们以sklearn里面的GBDT为例来说,打开网址sklearn.ensemble.GradientBoostingClassifier。这里我们不关注GBDT里面的所有参数意义,只解释下在对金融数据建模调参时最常用的一些参数意义:

GBDT框架的参数

n_estimators: 分类树的个数,即K

learning_rate: 即每个弱学习器的权重缩减系数ν,也称作步长。较小的ν意味着需要更多

的弱学习器的迭代次数。参数n_estimators和learning_rate要一起调参。可以从一个小一点 的ν开始调参,默认是1

Subsample: (不放回)抽样率,推荐在[0.5, 0.8]之间,默认是1.0,即不使用子采样

init: 即初始化的时候的弱学习器,一般用在对数据有先验知识,或者之前做过一些拟合的时候

loss: 即GBDT算法中的损失函数

弱分类树的参数

max_features: 划分时考虑的最大特征数

max_depth: 决策树最大深度

min_samples_split:内部节点再划分所需最小样本数。默认是2.如果样本量不大,不需要管

这个值。如果样本量数量级非常大,则推荐增大这个值

min_samples_leaf: 叶子节点最少样本数

min_weight_fraction_leaf:叶子节点最小的样本权重。默认是0,就是不考虑权重问题。

一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引 入样本权重,这时我们就要注意这个值了

max_leaf_nodes: 最大叶子节点数,通过限制最大叶子节点数,可以防止过拟合

min_impurity_split: 节点划分最小不纯度

表示分类正确:

  • True Positive:本来是正样例,分类成正样例。
  • True Negative:本来是负样例,分类成负样例。

表示分类错误:

  • False Positive :本来是负样例,分类成正样例,通常叫误报。
  • False Negative:本来是正样例,分类成负样例,通常叫漏报。

准确度

真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占 所有正实例的比例。Sensitivity

负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例 占所有负实例的比例。1-Specificity

真负类率(True Negative Rate)TNR: TN/(FP+TN),代表分类器预测的负类中实际负实例 占所有负实例的比例,TNR=1-FPR。Specificity

真正类率(True Postive Rate)TPR就是查全率

分类器给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。

AUC是图中曲线下方的面积,值越大,分类效果越佳

通常情况下AUC越大学习器的效果越好。,即若一个学习器的ROC曲线被另外一个学习器曲线完全包住,那么可以断言,后一个学习器的性能优于前者。如果发生交叉则难以比较,如果非要比较,比较合理的判断是比较ROC下的面积即AUC大小。

GBDT在流失预警模型中的应用

使用默认参数,在训练集上

都还不错。但是能不能更好点?

首先我们从步长(learning rate)和迭代次数(n_estimators)入手。一般来说,开始选择一个较小的步长来网格搜索最好的迭代次数。这里,我们将步长初始值设置为0.1,迭代次数的搜索范围是20~80

最好的迭代次数是70,对应的score是85.10%。

好像比默认参数的效果差。。。。

找到了一个合适的迭代次数,现在我们开始对决策树进行调参。首先我们对决策树最大深度max_depth和内部节点再划分所需最小样本样min_samples_split进行网格搜索。搜索的范围分别是3~13和 100~800

最佳的最大深度和最小样本数分别是9和500,对应的score是85.36%

由于决策树深度9是一个比较合理的值,我们把它定下来,对于内部节点再划分所需最小样本数min_samples_split,我们暂时不能一起定下来,因为这个还和决策树其他的参数存在关联。下面我们再对内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf一起调参。调整范围分别是400~1000,以及60~100。

最佳的最小样本数和叶节点最小样本数分别是500和70,对应的score是85.54%

现在我们再对最大特征数max_features进行网格搜索, 范围从5 到25,最佳值是25.

BUT !

对于边界值,通常还要再放大范围。我们将范围扩大到30,最佳值是28.

再对子采样的比例进行网格搜索,范围从0.6到0.9, 最佳值是0.8.

现在我们基本已经得到我们所有调优的参数结果了。这时我们可以减半步长,最大迭代次数加倍来增加我们模型的泛化能力。再次拟合我们的模型,得到的最优步长是0.05,最大迭代次数是1000,在训练集和测试集上的表现是:

来源于66号学苑

版权声明:本公众号如有引用和转载他人文章,则必定会在文章中标明原文的作者和来源出处。如有侵权,请联系微信wmyd80或后台留言,我们将在第一时间予以处理。

总结

以上是生活随笔为你收集整理的客户流失预警模型-GBDT模型的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。