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

    一、简介

    在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是ft-1(x)损失函数是L(y,ft-1(x)) 我们本轮迭代的目标是学习到弱学习器ht(x),让本轮的损失L(t,ft-1(x)+ht(x))最小。

    假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。

    也就是说我们要求的是高偏差,然后一步一步慢慢缩小这个偏差。

    二、负梯度拟合

    初始化若学习分类器是:

    每一轮都有一个损失函数要去拟合,因为是偏差,所以找不到一个真实值来去拟合。因此提出了一种方法:用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个cart回归树

    第t轮的第i个样本的损失函数的负梯度表示为:

    利用(xi,rti)(i=1,2,...m),我们可以拟合一颗CART回归树,得到了第t颗回归树,其对应的叶节点区域Rtj,j=1,2,...,J。其中J为叶子节点的个数。

    每个叶子节点里有多个样本,然后求出使损失函数最小时的输出值ctj(类似于标签):

    这样我们就得到了本轮的决策树拟合函数如下:

    本轮最终得到的强学习器的表达式如下:

    三、GBDT常用损失函数

    分类

    指数损失函数:

    对数损失函数:

    回归

    均方差;

    绝对损失

    四、GBDT的正则化

    五、优缺点

    GBDT主要的优点有:

    1) 可以灵活处理各种类型的数据,包括连续值和离散值。

    2) 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。

    3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

    GBDT的主要缺点有:

    1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

  • 相关阅读:
    Yii2中把路由地址中的%2F改为/
    深度解析常用的软件开发模型
    MYSQL索引的类型和索引的方式
    mysql errno 150
    士兵杀敌(五)
    stringstream字符串流
    士兵杀敌(二)(线段树+树状数组)
    士兵杀敌(一)(树状数组)
    C语言文件读写操作总结
    BC第二场
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11335864.html
Copyright © 2011-2022 走看看