zoukankan      html  css  js  c++  java
  • GBDT 算法

    GBDT (Gradient Boosting Decision Tree) 梯度提升迭代决策树。GBDT 也是 Boosting 算法的一种,但是和 AdaBoost 算法不同(AdaBoost 算法上一篇文章已经介绍);区别如下:AdaBoost 算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮的迭代;GBDT 也是迭代,但是 GBDT 要求弱学习器必须是 CART 模型,而且 GBDT 在模型训练的时候,是要求模型预测的样本损失尽可能的小。

    GBDT 直观理解:每一轮预测和实际值有残差,下一轮根据残差再进行预测,最后将所有预测相加,就是结果。

     
     

    GBDT 模型可以表示为决策树的加法模型:

     
     

    其中,T(x;θm)表示决策树;θm 为决策树的参数; M为树的个数。

    采用前向分布算法, 首先确定初始提升树 fo(x) = 0, 第 m 步的模型是:

     
     

    通过经验风险极小化确定下一棵树的参数:(其实就是让残差尽可能的小找到最优划分点)

     
     

    这里的 L() 是损失函数,回归算法选择的损失函数一般是均方差(最小二乘)或者绝对值误差;而在分类算法中一般的损失函数选择对数函数来表示

    GBDT 既可以做回归也可以做分类,下面先描述一下做回归的算法流程:

    已知一个训练数据集 T = {(x1,y1),(x2,y2),...,(xn,yn)}, 如果将训练集分为不同的区域 R1,R2,...,Rn,然后可以确定每个区域输出的常识 c,c 的计算是将每个区域的 y 值相加再除以 y 的个数,其实就是求一个平均值。树可以表示为:

     
     

    然后通过下图方式来确定具体分割点:

     
     

    我将李航的统计学方法里面的例子粘出来,就知道提升树是如何计算的了:

     
     
     
     
     
     

    以上就是 GBDT 选择分割点的过程, 如果特征有多个的话也是一样的道理,选择特征和特征值使得误差最小的点,作为分割点。所以其实 GBDT 也可以用作特征选择,通过GBDT 可以将重要的特征选择出来,当特征非常多的时候可以用来做降维。然后再融合类似逻辑回归这样的模型再进行训练。



    作者:theodore的技术提升之路
    链接:https://www.jianshu.com/p/405f233ed04b

  • 相关阅读:
    函数的调用惯例
    docker 强制删除镜像
    docker 安装 tomcat8
    阿里云 maven仓库地址配置
    ubuntu 18.04 安装搜狗输入法
    centos 监控进程,并自动重启
    intellj idea show "run dashboard" panel
    Centos7 服务器启动jar包
    maven centos7 环境变量
    linux关于IP,端口,防火墙相关命令
  • 原文地址:https://www.cnblogs.com/Ph-one/p/12751886.html
Copyright © 2011-2022 走看看