之前在点云分类中用了SVM和Random Forest , 发现RF 的效果非常好,比SVM好许多,因此想再试一下其它基于树的集成学习方法,比如Boosted Tree 和 Xgboost,Xgboost 基于前者是基于前者实现的,优点是相对前者可以并行化。这里先看Boosted Tree。

参考文献:

https://xgboost.readthedocs.io/en/latest/tutorials/model.html

https://blog.csdn.net/github_38414650/article/details/76061893

1. Decision Tree Ensembles 集成决策树

与普通决策树相比,分类回归树(CART)不仅将每个要分类的对象分配到叶子上,还将每个叶子分配了一个分数,这个分数与叶子绑定,提供了比单纯分类更丰富的信息。

单个决策树比较弱,可以将多个决策树集成,如上图。

2. Tree Boosting

如何训练呢

首先定义目标函数,第一项是loss,第二项是正则项。

训练的时候,不能同时训练所有的树,只能采用累加策略,即一颗一颗树分别训练。

梯度定义:

正则项定义:

其中w是每个叶子的分数,T是叶子的总个数,gamma和lambda是正则参数。因为在正则项定义中包含了叶子个数,所以这个正则项也描述了模型复杂度!

树的结构分数:

如果loss计算是用的平均平方误差,则自然是二次型,若用的是logistic loss,则需泰勒展开,取到2阶项。在二次型基础上可以直接求出最值以及取最值时的叶子分数,如上图最下面两个公式。这就是结构分数,它既表述了分类纯度又表述了模型复杂度!因为在正则项的定义中包含了叶子的个数

学习树的结构

上式为树分裂时的增益,倘若增益gain小于gamma,则树不应该继续分裂。

3. sklearn 代码

官方代码

https://github.com/dmlc/xgboost

以下是参数解释

clf = XGBClassifier(silent=0 ,#设置成1则没有运行信息输出,最好是设置为0.是否在运行升级时打印消息。#nthread=4,# cpu 线程数 默认最大learning_rate= 0.3, # 如同学习率min_child_weight=1, # 这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言#,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。#这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。max_depth=6, # 构建树的深度,越大越容易过拟合gamma=0,  # 树的叶子节点上作进一步分区所需的最小损失减少,越大越保守,一般0.1、0.2这样子。subsample=1, # 随机采样训练样本 训练实例的子采样比max_delta_step=0,#最大增量步长,我们允许每个树的权重估计。colsample_bytree=1, # 生成树时进行的列采样 reg_lambda=1,  # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。#reg_alpha=0, # L1 正则项参数#scale_pos_weight=1, #如果取值大于0的话,在类别样本不平衡的情况下有助于快速收敛。平衡正负权重#objective= 'multi:softmax', #多分类的问题 指定学习任务和相应的学习目标#num_class=10, # 类别数,多分类与 multisoftmax 并用n_estimators=100, #树的个数seed=1000 #随机种子#eval_metric= 'auc'
)

集成学习方法之 Boosted Tree 原理相关推荐

  1. Boosted Tree原理详解

    简述 boosted Tree算法简要描述: 不断地添加树,不断地进行特征分裂来生长一棵树.每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差.一个树在生长的过程中,挑选一个最佳特征的最佳分裂 ...

  2. Boosted Tree:一篇很有见识的文章

    Boosted Tree:一篇很有见识的文章 6,125 次阅读 - 文章 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex  编者按: ...

  3. 八、回归——XGBoost 与 Boosted Tree

    作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex 编者按:本文是对开源xgboost库理论层面的介绍,在陈天奇原文<梯度提升法和B ...

  4. XGBoost 与 Boosted Tree

    1. 前言 作为一个非常有效的机器学习方法,Boosted Tree是数据挖掘和机器学习中最常用的算法之一.因为它效果好,对于输入要求不敏感,往往是从统计学家到数据科学家必备的工具之一,它同时也是ka ...

  5. 【转】XGBoost 与 Boosted Tree

    XGBoost 与 Boosted Tree http://www.52cs.org/?p=429 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:tru ...

  6. Boosted Tree

    本文是对开源xgboost库理论层面的介绍,在陈天奇原文<梯度提升法和Boosted Tree>的基础上,做了如下注解:1)章节划分:2)注解和参考链接(以蓝色和红色字体标注).备注:图片 ...

  7. Boosted Trees原理简介

    Boosted Trees原理简介 XGBoost代表"极端梯度增强",其中术语"梯度增强"源自Friedman撰写的论文<贪婪函数近似:梯度增强机> ...

  8. 赠书 | 集成学习方法及应用,破解AI实践难题

    作者 | 周志华 小编说:<集成学习:基础与算法>上市一周,斩获京东IT新书销量榜第一名桂冠,并拿下京东IT图书销量总榜第二名的惊人成绩. 集成学习方法是一类先进的机器学习方法,这类方法训 ...

  9. 集成学习方法及应用,破解AI实践难题

    集成学习方法是一类先进的机器学习方法,这类方法训练多个学习器并将它们结合起来解决一个问题,在实践中获得了巨大成功,并成为机器学习领域的"常青树",受到学术界和产业界的广泛关注. 集 ...

最新文章

  1. Gut:人体口腔菌群的稳定性和动态变化规律
  2. jquery常用功能
  3. 如何进行服务器选购[转]
  4. IPHONE 开发 7 -- Object C 02 字符串NSString 与 char* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...
  5. python图片识别是否p过_Python+Opencv进行识别相似图片
  6. 百度景鲲:9月15日发布小度真无线智能耳机
  7. 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
  8. 在vs编辑器里走来走去的快捷键
  9. 卡尔曼滤波学习小记 How a Kalman filter works, in pictures
  10. ntko php,NTKO 附件管理控件_
  11. kitti raw数据处理--跑vins
  12. 查看mysql汉字占用的字节数_一个汉字在数据库占几个字节
  13. CSDN如何上传照片
  14. 自建公众号服务器开发教程,01-微信公众号开发入门篇
  15. 钱诚11.29黄金白银TD美盘走势分析及期货原油操作建议
  16. Probably Approximately Correct learning framework
  17. oracle-数据库被注入恶意攻击程序的案例恢复
  18. JavaScript 静态方法
  19. 绝了!毕业10年年薪百万,今天总结一下我都学了什么!
  20. 分布式爬虫系统设计、实现与实战

热门文章

  1. 在做程序员的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
  2. bzoj1778: [Usaco2010 Hol]Dotp 驱逐猪猡(概率DP+高斯消元)
  3. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
  4. 邑网杯 CTF 2021 , easystego和ccat 解题
  5. 游戏行业和其他行业开发的对比
  6. 【并查集】感冒病毒 suspects
  7. 51 信用卡管家 Android 客户端内部数据库文件可被盗取
  8. 【模板】Miller-Rabin Pollar-Pho
  9. 亚马逊MWS开发套路演示
  10. 情迁红包配合情迁QQ机器人新版作为插件加载的使用教程