搭建金融信贷风控中的机器学习模型-(8)梯度提升算法

        在分类任务中,除了逻辑回归、SVM、决策树等简单模型外,还有例如随机森林之类的集成模型,GBDT就是其中一类代表的梯度提升模型。

1.梯度提升(Gradient Boosting)的概念

        在求解函数最值问题中,变量的最优解是在参数空间内搜索,梯度下降法是基本的数值方法之一,以最小值为例说明基本步骤:
1.初始化
2.for i in range[0:N]:
- 求解梯度
- 更新
则最终解为
        如果将变量扩展到函数空间,考虑给定数据集,建立对的回归模型,需要优化损失函数。即求解损失函数的最优解,即
。求解的步骤与梯度下降法一致,基本步骤仍为:
1.初始化:
2.for i in range[0:N]:
- 求解梯度
- 更新
则最终解为
        如果将上述介绍的模型定义为CART模型,即可得到Gradient Boosting Decision Tree(GBDT)。当然基模型也可以使用其他分类器或者回归器。
GBDT的特点是

  • 基于简单决策树的组合模型
  • 沿着梯度下降的方向进行提升
  • 只接受数值型的连续变变量
  • 其优点是:准确度高,不易过拟合

2.GBDT 模型简介

2.1原理(以分类树为例)

结构
用若干个分类树结果加和的方式来逼近,是二分类标签,是分类树的个数。
损失函数

  • 第步累计函数的损失=累计k棵树的精度损失+累计k棵树的复杂度惩罚
  • 待求变量:第棵树
  • 目的:让累计的损失最小化
    以负二项对数损失函数为例介绍损失函数:


    关于相加性
  • 预测的类别不能相加
  • 概率不能相加
  • 对数几率是可以相加的
    求解步骤
    1.初始化模型
    初始化模型一般为常数,与样本分布无关,例如:

    2.计算损失函数的负梯度(最小化损失函数):

    3.构建回归树,并计算回归树的每个叶子结点的取值:

    其近似解为:
    4.然后更新得到的模型为:

5.迭代下去可以得到
注意:

  • 模型不是分类树,的结果不是类别,需要尽心概率转化:
  • 模型不是分类树,是损失函数对的负梯度
  • 选择的损失函数不同,得到的梯度也略有不同

3.GBDT的升级版:XGBoost

3.1原理

        GBDT模型是将损失函数进行线性逼近,本质是对损失函数做一阶泰勒展开:

如果用多项式代替线性,将泰勒展开到二阶,就得到精度更高的下降法:
,
其中
由于为常数,所以对损失函数的最小化,等价于对的最小化。
是模型在预测精度上的为残差,代表模型的复杂度,在XGBoost中模型的复杂度一般表示为,代表叶子结点个数,为叶子结点的取值,避免过拟合。
综上,加入第棵树后的损失函数的表达式(忽略常数项)可以近似为:
\hat l^t(x)=gf(x)+\frac{1}{2}hf^2(x)+\Omega(f)=\sum_{i=1}^n[g_if_i(x)+\frac{1}{2}h_if_i^2(x)]+\gamma T+\frac{\gamma}{2}\sum_{j=1}^Tw^2_j=\sum_{j=1}^T[(\sum_{x_i \in I_j}g_i)w_j+\frac{1}{2}(\sum_{x_i \in I_j}h_i)w^2_j]+\gamma T
为了让最小化,的取值是
此时,

3.2确定树结构

假设树的结构已经确定,则为树的得分,我们的任务是得到得分最小的树。理想情况下,可以枚举所有的可能挑选得分最小的结构,当样本或变量较多时,枚举法几乎不可能。,因此采用近似算法:
1.贪婪法:生长一棵树,寻找最优特征以及最优分裂点形成子树,当数据量较大时,速度较慢

贪婪法1

贪婪法2

2.近似法:在贪婪法中用分位点代替每种可能的取值,降低了精度但速度快
近似法

3.3其他优化

优化

3.4 特征重要性

特征重要性

主要步骤

4.XGBoost模型在信贷风控中的应用

        在构造XGBoost模型用于违约预测时,依然需要对数据做预处理工作和特征工程。需要注意的是:

  • 极端值的处理不是必须的,因为在构建每棵树时,CART模型对于极端值不敏感;
  • XGBoost模型可以处理缺失值,即对缺失值单独分枝,但python包中响应的模块不能读取缺失数据,因而需要处理缺失值;另外,若缺失值占比很少,不需要单独分枝,要对缺失值尽心处理。

你可能感兴趣的:(搭建金融信贷风控中的机器学习模型-(8)梯度提升算法)