GBDT算法是一种监督学习算法。监督学习算法需要解决如下两个问题:

1.损失函数尽可能的小,这样使得目标函数能够尽可能的符合样本

2.正则化函数对训练结果进行惩罚,避免过拟合,这样在预测的时候才能够准确。

GBDT算法需要最终学习到损失函数尽可能小并且有效的防止过拟合。

以样本随时间变化对某件事情发生的变化为例,如下几副图形象的说明了机器学习的作用。

假设随着时间的变化对K话题存在如下样本:

如果没有有效的正则化,则学习结果会如下图所示:

这种情况下,学习结果跟样本非常符合,损失函数也非常小,但是这种样本在预测的时候,由于过拟合,失败率会很高。

如果损失函数太大,则学习结果如下图所示:

这种情况,学习结果跟样本差别太大,损失函数也很大,在预测的时候由于误差跳大,失败率也会很高。

损失函数和正则化防止过拟合平衡后的学习结果如下图所示:

在这种情况下损失函数和正则化函数防止过拟合达到了一个平衡,预测会比较准。

GBDT算法训练结果是一个决策森林。GBDT算法在训练的时候迭代N次,森林里面就会包含N棵树,每棵树都包含若干个叶子,每个叶子对应某个特定的分数。GBDT决策森林的学习的最终结果是

1.每个叶子对应的分数

2.每个决策树的结构

以是否喜欢某个游戏根据样本创建决策森林为例,如下图所示,5个样本,

假设进行了2次迭代,学习后的结果包含如下2棵树

是否喜欢某个游戏的分数,对于第一个样本男孩,在第一棵树得分是2分,在第二棵树得分是0.9分,它的总共分数是2.9分;第三个样本老爷爷,第一棵树得分是-1,第二棵树得分是0.9,得到它的分数是-0.1分。

对于上面的例子来说机器学习的最终目的是学习出上面第一棵树的函数f1,能够知道

f1(男孩)=2

第二棵树的函数f2,能够知道

f2(男孩)=0.9

还要学习出对于第一棵树,为什么age这个feature是第一个分裂元素?age为什么在15岁的时候进行分裂?

二:GBDT算法的原理

假设存在K棵树,则样本i的得分为:

n个样本,在K棵树下的目标函数为:

GBDT算法的迭代过程可以通过如下图表示:

第t轮迭代,我们需要确定的就是

第t轮迭代的目标函数为:

目标函数的变量是

我们通过优化第t轮迭代的目标函数来确定

以下数学推导过程为优化目标函数的过程。

优化t轮迭代的目标函数使用了泰勒展开式:

目标函数通过泰勒展开式展开结果如下:

其中:

表示损失函数的1阶导数,表示损失函数的2阶导数

在第t棵树中,存在一个映射函数能够把一个样本映射到某个叶子节点,这个方法称为:

为了说明这个方法的作用,对于如下样例树:

如上图标红所示,小男孩经过这个方法映射后,映射到了第一个叶子;老奶奶经过这个方法映射后,映射到第三个叶子

对于上图中的小男孩来说,=w1

在这里正则化函数定义为:

其中T表示树种包含T个叶子,对于上面的样例树,它的正则化惩罚函数为:

第j个叶子对应的样本集合用如下式子表示:

因为所有的样本都映射到了某个叶子上,所以目标函数可以从样本求和转化为叶子的求和:

目标函数转化为一元二次方程的求和。

我们再加上如下定义:

上面目标函数(一元二次方程求和)在为如下位置取得最小值:

最小值为:

可以看到目标函数的值是T个叶子的和

对于上图的样例树来说,对应的目标函数结果、为如下图所示:

上图中对第三个叶子节点进行了标红显示。可以看到第三个叶子节点包含了第2、第3、第5共3个样本。在计算第三个叶子的得分的时候,会用到3个样本的gradient statistics.

在创建决策树的时候,一个叶子节点分裂后的信息增益为:

最优的分裂点就是信息增益(Gain)最大的位置。

为了找到一个Feature的最大增益位置,首先根据这个Feature的值对样本进行排序,然后依次扫描所有样本,计算出每个分裂点的增益,然后取增益最大的位置作为分裂点。如下图所示:

上图中,先对年龄这个Feature进行了排序,然后从小到大依次扫描样本,计算每个分裂点的Gain,最终取增益最大的位置做为年龄这个Feature的分裂点。

但是在建立决策树的时候存在多个Feature,哪个Feature最先分裂呢?

答案是我们需要遍历所有Feature,找到每个Feature的增益最大的分裂点,并计算出每个Feature分裂点的增益,然后取所有Feature分裂点的增益最大的Feature作为最先分裂点。这个过程如下图表示:

最终使用贪婪法,重复上面的过程,建立一棵完整的决策树。

从上面的分裂过程可以知道,每次分裂的目的是为了获得更多的信息增益,如果分裂后信息增益为负数,则停止分裂

本文转自博客园知识天地的博客,原文链接:机器学习系列------1. GBDT算法的原理,如需转载请自行联系原博主。

机器学习系列------1. GBDT算法的原理相关推荐

  1. GBDT 算法:原理篇

    2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 GBDT 是常用的机器学习算法之一,因其出色的特征自动组合能力和高效的运算大受欢迎. 这里简单介绍一下 G ...

  2. 机器学习系列之EM算法

    机器学习系列之EM算法 我讲EM算法的大概流程主要三部分:需要的预备知识.EM算法详解和对EM算法的改进. 一.EM算法的预备知识 1.极大似然估计 (1)举例说明:经典问题--学生身高问题 我们需要 ...

  3. 入门电机系列之6PID 算法的原理与应用

    入门电机系列,基于STM32硬件 本文章学习借鉴于野火团队资料,以表感谢.官网http://products.embedfire.com/ 入门电机系列之6PID 算法的原理与应用. 提示:写完文章后 ...

  4. python机器学习案例系列教程——GBDT算法、XGBOOST算法

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 GBDT概述 GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同.回顾下Adaboost,我们 ...

  5. halcon机器视觉算法原理与编程实战_快速弄懂机器学习里的集成算法:原理、框架与实战...

    作者:  博观厚积 简书专栏:https://www.jianshu.com/u/2f376f777ef1 1. 关于集成学习算法 集成学习算法,通俗地讲就是:三个臭皮匠,顶个诸葛亮,这在很多地方都有 ...

  6. em算法怎么对应原有分类_机器学习系列之EM算法

    我讲EM算法的大概流程主要三部分:需要的预备知识.EM算法详解和对EM算法的改进. 一.EM算法的预备知识 1.极大似然估计 (1)举例说明:经典问题--学生身高问题 我们需要调查我们学校的男生和女生 ...

  7. Java系列之雪花算法和原理

    SnowFlake 算法:是 Twitter 开源的分布式 id 生成算法. 核心思想:使用一个 64 bit 的 long 型的数字作为全局唯一 id. 首先了解一下雪花ID的结构:从网上盗用一张: ...

  8. 机器学习-k均值聚类算法-k_means原理14

    非监督学习

  9. SHA512系列哈希算法原理及实现(附源码)

    相关文章: SHA512系列哈希算法原理及实现(附源码) SHA224和SHA256哈希算法原理及实现(附源码) 国密SM3哈希算法原理及实现(附源码) SHA1哈希算法原理及实现(附源码) MD5哈 ...

最新文章

  1. android 自定义扫地机器人地图,扫地机如何正确操作进行APP建图?
  2. Asp.net 序列化应用实例(转载)
  3. 考研计算机网络比较难还是数据结构,2015考研:历年计算机试卷结构与难度分析...
  4. dom vue 加载完 执行_前端面试题Vue
  5. c/c++中一个 类似 a[2] 的数组引发的一些思考
  6. C# CAD二次开发之字体替换 文字样式 处理DBText
  7. 带蓝色的紫罗兰色——五色配色篇
  8. 微信开发工具如何修改模拟页面路径
  9. android实现九宫格拼图小游戏
  10. 人工智能如何入门学习?前景如何
  11. 浪潮服务器开机没有信号输出,PLC输出指示灯已经点亮但是输出没有信号-工业支持中心-西门子中国...
  12. 开机弹框显示IGCCTray.exe异常的修复方式
  13. 购买云服务器和搭建PHP环境,运行PHP个人网站
  14. requests.exceptions.SSLError: HTTPSConnectionPool(host=‘edith.xiaohongshu.com‘, port=443): Max retri
  15. matlab电力电子技术仿真错误,Matlab在电力电子技术仿真中的应用
  16. delphi tclientdataset字段显示type mismatch
  17. Leakcanary的使用
  18. Cmake时遇见:No package ‘epoxy‘ found的解决方法
  19. 管理利器:远程控制任我行
  20. 2020年外贸ERP软件排名

热门文章

  1. vuejs切换导航条高亮路由高亮做法
  2. 2018--Linux面试题
  3. 84.LAMP的apache用户认证,域名跳转,日志文件
  4. linux获取系统启动时间
  5. DotNET:LINQ对泛型(Generic)操作和泛型方法及属性
  6. LVS(DR)+keepalived+nfs+raid+LVM
  7. eclipse远程调试两种模式
  8. java之Cookie详解
  9. Codeforces Round #168 (Div. 2)
  10. RDL报表制作和发布