银行客户流失预警(三)| GBDT的应用

要介绍GBDT之前,先介绍一个基础成员,决策树。

什么是决策树?

决策树是最简单的机器学习算法,它易于实现,可解释性强,完全符合人类的直观思维,有着广泛的应用。其可作为分类算法,也可用于回归模型。

从名字可知,这是一棵树,它是基于特征构建一颗层层推理的树,主要由根节点,内部结构和叶子节点组成。
 根节点:包含样本的全集
 内部节点点:对应特征属性测试
 叶节点:代表决策的结果
银行客户流失预警(三)| GBDT的应用
实际预测时,在内部节点使用某一属性值判断,根据判断结果决定进入哪一个分支,直到达到叶子节点,得到分类结果。

决策树学习的三个步骤

银行客户流失预警(三)| GBDT的应用
1. 特征选择
特征选择决定了首先使用哪些特征做判断,整个决策过程使用哪些特征做判断。
在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。

特征选择常用的基准是:信息增益

2. 决策树生成
选择好特征后,就从根节点出发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。

3. 决策树减枝
防止决策树过拟合,主动剪掉一些枝叶降低过拟合风险

三种典型的决策树算法

银行客户流失预警(三)| GBDT的应用
1. ID3
最早提出的算法,利用信息增益确定特征选择

2. C4.5
由于ID3算法的结果对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1,因此在此基础上进行改进,不直接使用信息增益,使用“信息增益比”来确定特征选择,就是C4.5

3. CART
这种算法即可以用于分类,也可以用于回归问题。CART 算法使用了基尼系数取代了信息熵模型。

决策树的优缺点

优点

 决策树易于理解和解释,可以可视化分析,容易提取出规则;
 可以同时处理标称型和数值型数据;
 比较适合处理有缺失属性的样本;
 能够处理不相关的特征;
 测试数据集时,运行速度比较快;
 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

缺点

 容易发生过拟合(随机森林可以很大程度上减少过拟合);
 容易忽略数据集中属性的相互关联;
 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
 ID3算法计算信息增益时结果偏向数值比较多的特征。

决策树只是一棵树,一棵树的决策结果总是容易产生偏差,于是在这个基础上衍生出将多棵树组合在一起的算法,根据组合方式的不同,分为三种集成算法:

(1) bagging(套袋法)

通过自助采样的方法生成众多并行的分类器,通过‘少数服从多数‘的原则确定最终结果
从同一样本、同一指标集里抽样,每次抽样都生成一棵简单树,可以并行建立,典型算法:随机森林:
随机森林基于bagging思想,解决决策树泛化的问题,决策树是一棵树,只有一个 决策权,随机森林是多棵树,每棵树都有一个决策权,这样把所有树的结果综合起来,这样的分类能力,自然比单棵树的结果好。所以随机森林是基于这样的思想去分类的。随机森林的随机主要体现在两个方面,一个是随机选取样本,一个是随机选取特征。随机森林是根据特征构造多棵决策树,那每棵树是怎么构造的呢?它从训练样本中随机选取固定数量的样本集,然后随机选取固定数量的特征,来构造决策树,相当于样本集和特征集都是总样本和总特征中的子集。而且这个随机选取是有放回地抽取过程。这样每个决策树都有一个分类结果,根据少数服从多数的原则,得到最后的结果。这就是随机森林算法的核心内容。
银行客户流失预警(三)| GBDT的应用

(2) boosting

将弱学习器提升为强学习器的集成方法来提高预测精度。模型建立有先后顺序,后一个模型是改进对前一个模型分类错误的结果赋予更大的权重,典型算法:GBDT,Adaboos,Xgboost。
银行客户流失预警(三)| GBDT的应用
【GBDT】
举一个非常简单的例子,比如我今年30岁了,但计算机或者模型提升树并不知道我今年多少岁,那提升树咋办呢?

• 它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁(30-20=10岁);
• 接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁(30-20-6=4岁);
• 接着在第三棵树中用3岁拟合剩下的差距,发现差距只有1岁了(30-20-6-3=1岁);
• 最后在第四课树中用1岁拟合剩下的残差,完美(30-20-6-3-1=0岁)。
• 最终,将每次拟合的岁数加起来便是模型输出的结果,也就是四棵树的结论加起来的结果(20+6+3+1=30岁),就是真实年龄30岁

这就是提升树算法过程,每一棵树都去拟合前n棵树综合结果和真实值之间的误差(即残差),GBDT也是基于这样一个迭代的思想,但是GBDT算法是提升树的一种改进算法,每棵树拟合的是前一棵树的损失函数的负梯度(用负梯度去近似残差),这也就要求每棵树的损失函数,只要一阶可导就行。

GBDT模型参数

1.GBDT框架的参数

  • n_estimators: 分类树的个数,即K
  • learning-rate:每个弱学习器的权重缩减系数,也称作补偿,如果v较小,意味着需要更多的回归决策树参与其中,一般调参会从比较小的数开始,默认是1;
  • Subsample:(不放回)抽样率,推荐在[0.5-0.8] 之间,默认是1,就是不使用子采样;
  • init:即初始化的弱学习器,一般用在对数据有先验知识,或者之前做过一些拟合的
    时候
  • loss:即GBDT算法中的损失函数

2.弱分类树的参数

  • max_features: 划分时考虑的最大特征数
  • max_depth: 决策树最大深度
  • min_samples_split:内部节点再划分所需最小样本数。默认是2.如果样本量不大,不需要管
    这个值。如果样本量数量级非常大,则推荐增大这个值
  • min_samples_leaf: 叶子节点最少样本数
  • min_weight_fraction_leaf:叶子节点最小的样本权重。默认是0,就是不考虑权重问题。
    一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引
    入样本权重,这时我们就要注意这个值了
  • max_leaf_nodes: 最大叶子节点数,通过限制最大叶子节点数,可以防止过拟合
  • min_impurity_split: 节点划分最小不纯度

分类器性能介绍:

  • 准确度:所有样本中欧预测正确的比例
    银行客户流失预警(三)| GBDT的应用
  • 真阳率:真实正样本中,有多少预测正确
  • 银行客户流失预警(三)| GBDT的应用
  • 伪阳率:实际为负样本,被预测为正样本的概率-银行客户流失预警(三)| GBDT的应用

分类器给出针对每个实例为正类的概率,比如设定一个阈值如0.6,概率大于等于0.6,的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR)。每调整一个阈值,都能得到一组(fpr,tpr)。

当阈值逐渐减小时,越来越多的样本被分为正样本,真阳率trp增加,但同时也会有很多负样本被预测错误为正样本,所以伪阳率也会增加。因此阈值最小是,对应坐标(1,1),阈值最大时,对应坐标为(0,0)。

将所有的(tpr,fpr)在坐标轴上的点连成线即可得到ROC曲线,曲线和横坐标围成的面积称之为AUC面积(area under curve)。曲线下的面积越大,分类效果越好。
银行客户流失预警(三)| GBDT的应用