集成学习方法之 Boosted Tree 原理
之前在点云分类中用了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 原理相关推荐
- Boosted Tree原理详解
简述 boosted Tree算法简要描述: 不断地添加树,不断地进行特征分裂来生长一棵树.每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差.一个树在生长的过程中,挑选一个最佳特征的最佳分裂 ...
- Boosted Tree:一篇很有见识的文章
Boosted Tree:一篇很有见识的文章 6,125 次阅读 - 文章 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex 编者按: ...
- 八、回归——XGBoost 与 Boosted Tree
作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex 编者按:本文是对开源xgboost库理论层面的介绍,在陈天奇原文<梯度提升法和B ...
- XGBoost 与 Boosted Tree
1. 前言 作为一个非常有效的机器学习方法,Boosted Tree是数据挖掘和机器学习中最常用的算法之一.因为它效果好,对于输入要求不敏感,往往是从统计学家到数据科学家必备的工具之一,它同时也是ka ...
- 【转】XGBoost 与 Boosted Tree
XGBoost 与 Boosted Tree http://www.52cs.org/?p=429 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:tru ...
- Boosted Tree
本文是对开源xgboost库理论层面的介绍,在陈天奇原文<梯度提升法和Boosted Tree>的基础上,做了如下注解:1)章节划分:2)注解和参考链接(以蓝色和红色字体标注).备注:图片 ...
- Boosted Trees原理简介
Boosted Trees原理简介 XGBoost代表"极端梯度增强",其中术语"梯度增强"源自Friedman撰写的论文<贪婪函数近似:梯度增强机> ...
- 赠书 | 集成学习方法及应用,破解AI实践难题
作者 | 周志华 小编说:<集成学习:基础与算法>上市一周,斩获京东IT新书销量榜第一名桂冠,并拿下京东IT图书销量总榜第二名的惊人成绩. 集成学习方法是一类先进的机器学习方法,这类方法训 ...
- 集成学习方法及应用,破解AI实践难题
集成学习方法是一类先进的机器学习方法,这类方法训练多个学习器并将它们结合起来解决一个问题,在实践中获得了巨大成功,并成为机器学习领域的"常青树",受到学术界和产业界的广泛关注. 集 ...
最新文章
- Gut:人体口腔菌群的稳定性和动态变化规律
- jquery常用功能
- 如何进行服务器选购[转]
- IPHONE 开发 7 -- Object C 02 字符串NSString 与 char* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...
- python图片识别是否p过_Python+Opencv进行识别相似图片
- 百度景鲲:9月15日发布小度真无线智能耳机
- 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
- 在vs编辑器里走来走去的快捷键
- 卡尔曼滤波学习小记 How a Kalman filter works, in pictures
- ntko php,NTKO 附件管理控件_
- kitti raw数据处理--跑vins
- 查看mysql汉字占用的字节数_一个汉字在数据库占几个字节
- CSDN如何上传照片
- 自建公众号服务器开发教程,01-微信公众号开发入门篇
- 钱诚11.29黄金白银TD美盘走势分析及期货原油操作建议
- Probably Approximately Correct learning framework
- oracle-数据库被注入恶意攻击程序的案例恢复
- JavaScript 静态方法
- 绝了!毕业10年年薪百万,今天总结一下我都学了什么!
- 分布式爬虫系统设计、实现与实战
热门文章
- 在做程序员的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
- bzoj1778: [Usaco2010 Hol]Dotp 驱逐猪猡(概率DP+高斯消元)
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
- 邑网杯 CTF 2021 , easystego和ccat 解题
- 游戏行业和其他行业开发的对比
- 【并查集】感冒病毒 suspects
- 51 信用卡管家 Android 客户端内部数据库文件可被盗取
- 【模板】Miller-Rabin Pollar-Pho
- 亚马逊MWS开发套路演示
- 情迁红包配合情迁QQ机器人新版作为插件加载的使用教程