GBDT用于分类问题
一、简介
GBDT在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,gbdt在各种竞赛是大放异彩。原因大概有几个
一:效果确实挺不错。
二:既可以用于分类也可以用于回归。
三:可以筛选特征。
这三点实在是太吸引人了,导致在面试的时候大家也非常喜欢问这个算法。
GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法。
GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通过降低偏差来不断提高最终分类器的精度。
二、GBDT如何用于分类的
第一步:训练的时候,是针对样本 X 每个可能的类都训练一个分类回归树。如目前的训练集共有三类,即K = 3,样本x属于第二类,那么针对样本x的分类结果,我们可以用一个三维向量\([0, 1, 0]\)来表示,0表示不属于该类,1表示属于该类,由于样本已经属于第二类了,所以第二类对应的向量维度为1,其他位置为0。
针对样本有三类的情况,我们实质上是在每轮的训练的时候是同时训练三颗树。第一颗树针对样本x的第一类,输入是\((x,0)\),第二颗树针对样本x的第二类,输入是\((x,1)\),第三颗树针对样本x的第三类,输入是\((x,0)\)。
在对样本x训练后产生三颗树,对x 类别的预测值分别是\(f_1(x),f_2(x),f_3(x)\),那么在此类训练中,样本x属于第一类,第二类,第三类的概率分别是:
\(P_1(x) = exp(f_1(x))/\sum_{k=1}^{3}exp(f_k(x))\)
\(P_2(x) = exp(f_2(x))/\sum_{k=1}^{3}exp(f_k(x))\)
\(P_3(x) = exp(f_3(x))/\sum_{k=1}^{3}exp(f_k(x))\)
然后可以求出针对第一类,第二类,第三类的残差分别是:
\(y_{11} = 0 - P_1(x)\)
\(y_{22} = 1 - P_2(x)\)
\(y_{33} = 0 - P_3(x)\)
然后开始第二轮训练,针对第一类输入为\((x,y_{11}(x))\),针对第二类输入为\((x,y_{22}(x))\),针对第三类输入为\((x,y_{33}(x))\),继续训练出三颗树。一直迭代M轮,每轮构建三棵树
当训练完毕以后,新来一个样本\(x_1\),我们需要预测该样本的类别的时候,便产生三个值\(f_1(x),f_2(x),f_3(x)\),则样本属于某个类别c的概率为:
\(P_c(x) = exp(f_c(x))/\sum_{k=1}^{3}exp(f_k(x))\)
三、GBDT 多分类举例说明
下面以Iris数据集的六个数据为例来展示GBDT多分类的过程

具体应用到gbdt多分类算法。我们用一个三维向量来标志样本的label,\([1, 0, 0]\)表示样本属于山鸢尾,\([0, 1, 0]\)表示样本属于杂色鸢尾,\([0, 0, 1]\)表示属于维吉尼亚鸢尾。
gbdt 的多分类是针对每个类都独立训练一个 CART Tree。所以这里,我们将针对山鸢尾类别训练一个 CART Tree 1。杂色鸢尾训练一个 CART Tree 2 。维吉尼亚鸢尾训练一个CART Tree 3,这三个树相互独立。
我们以样本1为例:
针对CART Tree1 的训练样本是\([5.1, 3.5, 1.4, 0.2]\),label是1,模型输入为\([5.1, 3.5, 1.4, 0.2, 1]\)
针对CART Tree2 的训练样本是\([5.1, 3.5, 1.4, 0.2]\),label是0,模型输入为\([5.1, 3.5, 1.4, 0.2, 0]\)
针对CART Tree3 的训练样本是\([5.1, 3.5, 1.4, 0.2]\),label是0,模型输入为\([5.1, 3.5, 1.4, 0.2, 0]\)
下面我们来看 CART Tree1 是如何生成的,其他树 CART Tree2 , CART Tree 3的生成方式是一样的。CART Tree的生成过程是从这四个特征中找一个特征做为CART Tree1 的节点。
比如花萼长度做为节点。6个样本当中花萼长度大于等于5.1 cm的就是 A类,小于 5.1 cm 的是B类。生成的过程其实非常简单,问题 1.是哪个特征最合适? 2.是这个特征的什么特征值作为切分点?
即使我们已经确定了花萼长度做为节点。花萼长度本身也有很多值。在这里我们的方式是遍历所有的可能性,找到一个最好的特征和它对应的最优特征值可以让当前式子的值最小:

我们以第一个特征的第一个特征值为例。R1为所有样本中花萼长度小于5.1cm的样本集合,R2为所有样本中花萼长度大于等于5.1cm的样本集合,所以\(R_1 = [2],R_2 = [1, 3, 4, 5, 6]\)

\(y_1\)为R1所有样本label的均值:\(1/1=1\),\(y_2\)为R2所有样本label的均值:
\((1+0+0+0+0)/5 = 0.2\)
下面计算损失函数的值,采用平方误差,分别计算R1和R2的误差平方和,样本2属于R1的误差:\((1-1)^2 = 0\),样本1,3,4,5,6属于R2的误差和:
\((1-0.2)^2 + (0-0.2)^2 + (0-0.2)^2 + (0-0.2)^2 + (0-0.2)^2 = 0.8\)
接着我们计算第一个特征的第二个特征值,即R1为所有样本中花萼长度小于 4.9 cm 的样本集合,R2 为所有样本当中花萼长度大于等于4.9 cm 的样本集合,\(R1 = [], R2 = [1,2,3,4,5,6]\),\(y_1\)为R1所有样本label的均值:0,\(y_2\)为R2所有样本label的均值:\((1+1+0+0+0+0)/6 = 0.3333\):

计算所有样本的损失值,样本1和2属于R2,损失值为:\((1-0.3333)^2 + (1-0.3333)^2\),样本3,4,5,6也属于R2,损失值为:\((0-0.3333)^2 + (0-0.3333)^2 + (0-0.3333)^2 + (0-0.3333)^2\),两组损失值和为2.222,大于特征一的第一个特征值的损失值,所以我们不取这个特征的特征值
继续,这里有四个特征,每个特征有六个特征值,所有需要6*4 = 24个损失值的计算,我们选取值最小的分量的分界点作为最佳划分点,这里我们就不一一计算了,直接给出最小的特征花萼长度,特征值为5.1 cm。这个时候损失函数最小为 0.8。 于是我们的预测函数此时也可以得到:
\(f(x) = \sum_{x\epsilon R_1}y_1*I(x\epsilon R_1) + \sum_{x\epsilon R_2}y_2*I(x\epsilon R_2)\)
此例子中\(R1=[2],R2=[1,3,4,5,6],y_1=1,y_2=0.2\),训练完以后的最终式子为:
\(f(x) = \sum_{x\epsilon R_1}1*I(x\epsilon R_1) + \sum_{x\epsilon R_2}0.2*I(x\epsilon R_2)\)
由这个式子,我们得到对样本属于类别1的预测值:\(f_1(x) = 1*1 + 0.2*5 = 2\),同理我们可以得到对样本属于类别2,3的预测值\(f_2(x),f_3(x)\),样本属于类别1的概率为:
\(P_1(x) = exp(f_1(x))/\sum_{k=1}^{3}exp(f_k(x))\)
四、参考
博客:https://www.cnblogs.com/ModifyRong/p/7744987.html
GBDT用于分类问题的更多相关文章
- 用于分类的决策树(Decision Tree)-ID3 C4.5
决策树(Decision Tree)是一种基本的分类与回归方法(ID3.C4.5和基于 Gini 的 CART 可用于分类,CART还可用于回归).决策树在分类过程中,表示的是基于特征对实例进行划分, ...
- GBDT多分类示例
相当于每次都是用2分类,然后不停的训练,最后把所有的弱分类器来进行汇总 样本编号 花萼长度(cm) 花萼宽度(cm) 花瓣长度(cm) 花瓣宽度 花的种类 1 5.1 3.5 1.4 0.2 山鸢尾 ...
- UFLDL深度学习笔记 (四)用于分类的深度网络
UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...
- 机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第31篇文章,我们一起继续来聊聊GBDT模型. 在上一篇文章当中,我们学习了GBDT这个模型在回归问题当中的原理.GBD ...
- 机器学习&数据挖掘笔记_25(PGM练习九:HMM用于分类)
前言: 本次实验是用EM来学习HMM中的参数,并用学好了的HMM对一些kinect数据进行动作分类.实验内容请参考coursera课程:Probabilistic Graphical Models 中 ...
- Boosting(提升方法)之GBDT
一.GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题,而以决策树作为基函数的提升方法称为提升树(boosting tree).GBDT(Gradient Boosting ...
- XGBoost,GBDT原理详解,与lightgbm比较
xgb原理: https://www.jianshu.com/p/7467e616f227 https://blog.csdn.net/a819825294/article/details/51206 ...
- GBDT学习笔记
GBDT(Gradient Boosting Decision Tree,Friedman,1999)算法自提出以来,在各个领域广泛使用.从名字里可以看到,该算法主要涉及了三类知识,Gradient梯 ...
- CART分类与回归树与GBDT(Gradient Boost Decision Tree)
一.CART分类与回归树 资料转载: http://dataunion.org/5771.html Classification And Regression Tree(CART)是决策 ...
随机推荐
- Linux内核分析-系统中断在内核中的实现
分析system_call中断处理过程 在MenuOS中添加上周所运用到的系统调用 即在Linuxkernel/menu/test.c文件中,添加代码如下: int Mkdir() { const c ...
- 第一个Sprint第一天
第一个Sprint冲刺的第一天 组员:陈建定 陈友沛 林清松 我们小组选的题目是小学四则运算APP 之前我们都没有做过这个程序,不过我们会尽力完成. 第一阶段的冲刺我们主要分析这个APP的所需的功能, ...
- sublime text3修改默认配置文件是失败的解决方法
如果你修改sublime text3的默认配置文件Preferences.sublime-settings失败,现实的错误信息如下图: 其实根据提示信息就好找问题出在哪里了:权限 要想成功的修改默认配 ...
- yarn工具的使用
<!-- yarn init === npm init --> <!-- yarn login === npm adduser -->登录 <!-- yarn publi ...
- FICO基础知识(三)
成本中心: 成本中心是企业内的最小职责单位,是每一笔费用的具体接收者.创建成本中心主数据时必须将每个成本中心分配给标准层次结构的某个节点,标准层次结构反映了成本中心与成本中心.成本中心与成本中心组.成 ...
- 一步步分析为什么B+树适合作为索引的结构
在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引和R-Tree索引,本文讲的是B-Tree索引. 什么是索引 索引(Index)是帮助数据库高效获取数 ...
- http://python.jobbole.com/85056/ 简单 12 步理解 Python 装饰器,https://www.cnblogs.com/deeper/p/7482958.html另一篇文章
好吧,我标题党了.作为 Python 教师,我发现理解装饰器是学生们从接触后就一直纠结的问题.那是因为装饰器确实难以理解!想弄明白装饰器,需要理解一些函数式编程概念,并且要对Python中函数定义和函 ...
- APICloud之封装webApp
注册用户 https://www.apicloud.com/ 使用步骤 进入开发控制台 创建应用 选择webApp 根据自己的情况填写信息,然后创建即可 应用创建后的界面 端设置 app界面设置 证书 ...
- PHP页面显示中文字符出现乱码
[出现问题] php页面显示中文字符出现乱码 [解决方法] 在php页面的代码前插入一行代码即可 header("Content-Type: text/html;charset=utf-8& ...
- 注册页面手机验证码无跳转接收[html+js+ajax+php]
[学习笔记] 来源:注册时需要使用短信验证码,但是注册的时候,点击接收验证码时,会产生跳转(尼玛,这不是我想要的啊!o(╥﹏╥)o) 查询资料和看书之后,知道使用js+ajax可以实现,就从网上找了一 ...