GBDT的基本原理
这里以二元分类为例子,给出最基本原理的解释
GBDT 是多棵树的输出预测值的累加
GBDT的树都是 回归树 而不是分类树
- 分类树

分裂的时候选取使得误差下降最多的分裂

计算的技巧

最终分裂收益按照下面的方式计算,注意圆圈内的部分是固定值

- GBDT 二分类
GBDT在实现中可以完全复用上面的计算方法框架,只是我们的优化的目标函数不同。
这里使用的是 指数误差函数,不管是预测正确还是错误 误差值都存在,但是正确的预测 会使得误差值小于错误的预测 参考
AdaBoost and the Super Bowl of Classifiers
A Tutorial Introduction to Adaptive Boosting

关于常用误差函数 参考 http://www.cnblogs.com/rocketfan/p/4083821.html
参考 Greedy Functon Approximation:A Gradient Boosting Machine
4.4节关于二分类情况误差函数的设计

这里其实和上面给出的一样,只是增加了 log(1 +, 另外多了一个2,2yF), 参考前面的LossFunction http://www.cnblogs.com/rocketfan/p/4083821.html
的推导,其实这个应该算作LogLoss或者说是logistic regression, cross entropy error,也就是从probablity出发的logloss推导到output F(x)的表示就是上面的
式子,而它看上去刚好就是一个指数误差函数。
严格意义上说是LogLoss不是指数误差 不过LogLoss和指数误差看上去比较相似。

页解释,线性加权的值(output)用来预测 p(true)和p(false)的比例的log值(回归值是实数范围取值不适合预测0-1,做了一个转换),越是接近true,那么F(x)越接近+无穷(对应最大可能性判断true), p(false)越大 那么越接近-无穷(对应最大可能性判断false)

F(X) 对应 feature X 当前的回归预测值也就是多棵树经过决策到达叶子节点的输出值output(x)的累加值。N个样本则F(x)N个维度,当开始没有分裂的时候所有样本在一个节点则所有F(x)对应一个相同的值,分裂一次后两个叶子节点则F(X)对应可能到不同的叶子节点从而可能有两个不同的值。
对误差函数计算关于F的梯度,误差函数是

变量是F(x)

考虑learning_rate之后是 (@TODO)

F(X) 对应 叶子节点中一个样本对应它的feature X 当前的预测值
参考 机器学习概率角度 一书的16章

我们的分裂目标从上面回归树基本算法中的希望逼近y 变成了 逼近梯度值 r_im,
也就是说当前树是预测负梯度值的。
F_m(x) = F_m-1(x) + learning_rate*(当前树的预测值(也就是预测负梯度..)) //@TODO check
再对比下ng课件最简单的梯度下降 针对regression的例子



我们采用的每颗树更新策略是针对F(x)的,而F(x)沿着梯度的方向的累加,目标是使得我们的

误差函数达到最小。
GBDT的基本原理的更多相关文章
- 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别
目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...
- 后端程序员之路 10、gbdt(Gradient Boosting Decision Tree)
1.GbdtModelGNode,含fea_idx.val.left.right.missing(指向left或right之一,本身不分配空间)load,从model文件加载模型,xgboost输出的 ...
- gbdt在回归方面的基本原理以及实例并且可以做分类
对书法的热爱,和编译器打数学公式很艰难,就这样的正例自己学过的东西,明天更新gbdt在分类方面的应用. 结论,如果要用一个常量来预测y,用log(sum(y)/sum(1-y))是一个最佳的选择. 本 ...
- RF,GBDT,XGBoost,lightGBM的对比
转载地址:https://blog.csdn.net/u014248127/article/details/79015803 RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensem ...
- GBDT学习笔记
GBDT(Gradient Boosting Decision Tree,Friedman,1999)算法自提出以来,在各个领域广泛使用.从名字里可以看到,该算法主要涉及了三类知识,Gradient梯 ...
- 机器学习 | 详解GBDT梯度提升树原理,看完再也不怕面试了
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第30篇文章,我们今天来聊一个机器学习时代可以说是最厉害的模型--GBDT. 虽然文无第一武无第二,在机器学习领域并没有 ...
- Ognl表达式基本原理和使用方法
Ognl表达式基本原理和使用方法 1.Ognl表达式语言 1.1.概述 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个 ...
- Android自定义控件之基本原理
前言: 在日常的Android开发中会经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件,今天先大致了解一下自定义控件的要求和实现的基本原理. 自 ...
- scikit-learn 梯度提升树(GBDT)调参小结
在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...
随机推荐
- ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?
症状: 类似上面的警告提示,运行程序不会有任何错误,但若干地方都提示警告,并且明明dll的引用都是正确的. 解决方案: 删除:C:\Users\{your computer name}\AppData ...
- C#图片色彩的纠正-上
WPF(C#)图片色彩的纠正-上 WPF(C#)图片色彩的纠正-下 前言 对图片进行色彩的纠正,其实与WPF是没有什么关系的,为什么标题又是“WPF(C#)图片色彩的纠正”呢,因为这些图片色彩的纠正功 ...
- 用Powershell启用Windows Azure上的远程桌面服务
[题外话] 某天不小心点了XX管家的自动修复,虽然及时点了取消也看到了远程桌面服务成功被关闭,但是忙完该干的事以后竟然忘记了这件事,在断开远程桌面服务之前也忘记再次打开.以至于之后几天一直以为Azur ...
- 字符串匹配算法 - KMP
前几日在微博上看到一则微博是说面试的时候让面试者写一个很简单的字符串匹配都写不出来,于是我就自己去试了一把.结果写出来的是一个最简单粗暴的算法.这里重新学习了一下几个经典的字符串匹配算法,写篇文章以巩 ...
- SSH实战 · SSH项目开发环境搭建
一:SSH整合 创建一个新的WEB项目 引入struts2.3.15.3: jar包: struts-2.3.15.3\apps\struts2-blank.war\W ...
- LinuxThreads 和 NPTL
http://www.ibm.com/developerworks/cn/linux/l-threading.html Linux 线程模型的比较:LinuxThreads 和 NPTL 进行移植的开 ...
- Android-Activity-Dialog theme touch outsize
最近遇到一个蛋疼的问题: 一个Activity,主题设置成 Dialog 然后点击外面要求这个Activity 不能关闭. 这下好了,直接在 style 的 theme 里面加一个属性就好了. 加上去 ...
- 在Eclipse中对包进行增删改查
package com.hanqi.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...
- 【最后的抒情】【离NOIP还有9个小时】
学了NOIP 大概十一个月左右,中途的插班生.从2015年12月底开始学信息竞赛,在寒假的时候还笑着我还有九个月才考试呢,生竞就只有两个月了.没错我是从生物竞赛转过来的.记得当初写申请的时候,写的理由 ...
- 应用Web.Config配置网站
1.配置数据库连接 在ASP.NET中配置数据库连接的两种方式: appSettings和connectionStrings 命名空间: using System.Configuration; 1)a ...