决策树和基于决策树的集成方法(DT,RF,GBDT,XGBT)复习总结
摘要:
1.算法概述
2.算法推导
3.算法特性及优缺点
4.注意事项
5.实现和具体例子
内容:
1.算法概述
1.1 决策树(DT)是一种基本的分类和回归方法。在分类问题中它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,学习思想包括ID3,C4.5,CART(摘自《统计学习方法》)。
1.2 Bagging :基于数据随机重抽样的集成方法(Ensemble methods),也称为自举汇聚法(boostrap aggregating),整个数据集是通过在原始数据集中随机选择一个样本进行替换得到的。进而得到S个基预测器( base estimators),选择estimators投票最多的类别作为分类结果,estimators的平均值作为回归结果。(摘自《统计学习方法》和scikit集成方法介绍)
1.3 随机森林(RF):基于boostrap重抽样和随机选取最优特征,基预测器是决策树的集成方法(Ensemble methods)
1.4 Boosting :通过改变样本的权重(误分样本权重扩大)学习多个基预测器,并将这些预测器进行线性组合的集成方法 (摘自《统计学习方法》)
1.5 梯度提升决策树(GBDT):基于boosting方法,基预测器是决策树的集成方法(Ensemble methods)
1.6 XGBDT:基于GBDT的一种升级版本,主要改进是使用了正则化和特征分块存储并行处理(参考大杀器xgboost指南)
1.7 典型的回归树模型的函数表示是这样的:
,这里数据集被划分为R1,...,Rm个区域,每一个区域对应一个预测值Cm;其中I()是指示函数,当满足条件时返回1,否则为0
2.算法推导
2.1 决策树生成过程就是一个递归的过程,如果满足某种停止条件(样本都是同一类别,迭代次数或者其他预剪枝参数)则返回多数投票的类作为叶结点标识;否则选择最佳划分属性(特征)和属性值生成|T|个子节点,对子节点数据进行划分;所以划分属性的计算方式是DT的精髓,以下总结各种划分属性的计算方法(附一个java实现决策树的demo):
ID3与C4.5中使用的信息增益和信息增益率:
信息熵(Entropy )是表示随机变量不确定性的度量:
,其中S是数据集,X是类别集合,p(x)是类别x占数据集的比值。
信息增益(Information gain)表示数据集以特征A划分,数据集S不确定性下降的程度
,其中H(S)是原数据集S的熵;T是S以特征A划分的子集集合,即
;
p(t)是T的某一划分子集t占数据集S的比值,H(t)是划分子集t熵。
信息增益率(为了克服ID3倾向于特征值大的特征):
IG_Ratio = IG(A,S) / H(S)
信息增益/信息增益率越大,样本集合的不确定性越小
CART中使用的Gini指数:
基尼(gini)指数是元素被随机选中的一种度量:
数据集D的gini系数:
在数据集D中以特征A划分的gini系数:
gini指数越小,样本集合的不确定性越小
2.2回归树:以上都是根据离散值计算分类树,因为CART和GBDT以及XGBoost 都可以用作回归树,所以这里梳理下回归树是如何确定划分特征和划分值的:

2.3 GBDT算法(来自这个论文)


附:

参考自:《统计学习基础 数据挖据、推理与预测》 by Friedman 10.9节
3.算法特性及优缺点
决策树的优(特性)缺点:
优点:输出结果易于理解,对缺失值不敏感,可以处理无关数据;可以处理非线性数据
缺点:容易过拟合,忽略了数据之间的相关性,信息增益的结果偏向于数值多的特征(ID3)
ID3的优(特性)缺点:
缺点:按照特征切分后,特征不在出现,切分过于迅速;只能处理类别类型,不能处理连续性特征;不能回归
CART的优(特性)缺点:
优点:不去除特征;可以处理连续性特征;可以回归
RF的特性
优点:并行处理速度快,泛化能力强,可以很好的避免过拟合;能够得到特征的重要性评分(部分参考这篇总结)
对于不平衡数据集可以平衡误差(参考中文维基百科)
缺点:偏差会增大(方差减小)
GBDT的特性
优点:精度高;可以发现多种有区分性的特征以及特征组合
缺点:串行处理速度慢
4.注意事项
4.1 树的剪枝(结合sklearn中的参数进行总结)
max_depth :DT的最大深度(默认值是3)
max_features :最大特征数(默认值是None)
min_samples_split 以及min_samples_leaf :节点的最小样本个数(默认值是2)
min_impurity_split :最小分割纯度(与分割标准有关,越大越不容易过拟合)
(附:树模型调参)
4.2 如何计算的属性评分(结合sklearn总结)
The importance of a feature is computed as the (normalized) total reduction of the criterion brought by that feature. It is also known as the Gini importance [R245].
4.3 正则项
5.实现和具体例子
Spark ml GradientBoostedTrees 核心实现部分
决策树和基于决策树的集成方法(DT,RF,GBDT,XGBT)复习总结的更多相关文章
- 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 内容: 1.算法概述 1.1 决策树(DT)是一种基本的分类和回归方法.在分类问题中它可以认为是if-the ...
- 集成方法:渐进梯度回归树GBRT(迭代决策树)
http://blog.csdn.net/pipisorry/article/details/60776803 单决策树C4.5由于功能太简单.而且非常easy出现过拟合的现象.于是引申出了很多变种决 ...
- sklearn--决策树和基于决策树的集成模型
一.决策树 决策树一般以选择属性的方式不同分为id3(信息增益),c4.5(信息增益率),CART(基尼系数),只能进行线性的分割,是一种贪婪的算法,其中sklearn中的决策树分为回归树和分类树两种 ...
- 决策树(中)-集成学习、RF、AdaBoost、Boost Tree、GBDT
参考资料(要是对于本文的理解不够透彻,必须将以下博客认知阅读): 1. https://zhuanlan.zhihu.com/p/86263786 2.https://blog.csdn.net/li ...
- [Machine Learning & Algorithm] 决策树与迭代决策树(GBDT)
谈完数据结构中的树(详情见参照之前博文<数据结构中各种树>),我们来谈一谈机器学习算法中的各种树形算法,包括ID3.C4.5.CART以及基于集成思想的树模型Random Forest和G ...
- 【机器学习实战】第7章 集成方法 ensemble method
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- 常用的模型集成方法介绍:bagging、boosting 、stacking
本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能够在有需要的时候设计出合适的解决方案. 本文将讨论一些众所周知的概念,如自助法.自助聚合(baggi ...
- 机器学习——打开集成方法的大门,手把手带你实现AdaBoost模型
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第25篇文章,我们一起来聊聊AdaBoost. 我们目前为止已经学过了好几个模型,光决策树的生成算法就有三种.但是我们每 ...
随机推荐
- P87LPC760/61/62/64/67/68/69/78/79芯片解密单片机破解价格
NXP恩智浦P87LPC760/61/62/64/67/68/69/78/79芯片解密单片机破解 NXP LPC700系列单片机解密型号: P87LPC759.P87LPC760.P87LPC761. ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 【github问题】error: src refspec master does not match any解决方法|please tell me who you are
http://www.open-open.com/lib/view/open1366080269265.html这个先记录一下省得以后再找 我这里要解决的问题根本是:please tell me wh ...
- CGrowableArray解析 _ DXUT容器
CGrowableArray的声明 in DXUTmisc.h //--------------------------- ...
- 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...
- ACM: ICPC/CCPC Sudoku DFS - 数独
Sudoku Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other) Total Submis ...
- Ctrip Mydream
--我不知道以后如何,我不知道我做的事情能否持续,我只是希望有一天我真的在这条路上走下去了,我只希望去一次这里检验一下自己,我希望自己努力争取这个机会. .Net技术专家 岗位职责: 1.主导本领域的 ...
- Unity Android加密DLL笔记
unity mono 地址:https://github.com/Unity-Technologies/mono 下载与unity版本对应的unity mono. brew安装:http://brew ...
- 第一个Mac shell 小脚本
大多数程序员都喜欢偷懒的,我也不例外.相信好多Android开发的coder 在网络http请求方面,会浪费很多时间在接口调试这里..有时候,自己写了一个小测试,行还好,不行的话,还要跟写后台的哥们一 ...
- 基础1.初次接触Jquery
1.浅理解Jquery:jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents.events.实现动画效果,并且方便地为网站提供AJAX交互. 2.D ...