决策树模型在监督学习中非常常见,可用于分类(二分类、多分类)和回归。虽然将多棵弱决策树的Bagging、Random Forest、Boosting等tree ensembel 模型更为常见,但是“完全生长”决策树因为其简单直观,具有很强的解释性,也有广泛的应用,而且决策树是tree ensemble 的基础,值得好好理解。一般而言一棵“完全生长”的决策树包含,特征选择、决策树构建、剪枝三个过程,这篇文章主要是简单梳理比较ID3、C4.5、CART算法。《统计学习方法》中有比较详细的介绍。
一、决策树的优点和缺点
优点:
- 决策树算法中学习简单的决策规则建立决策树模型的过程非常容易理解,
- 决策树模型可以可视化,非常直观
- 应用范围广,可用于分类和回归,而且非常容易做多类别的分类
- 能够处理数值型和连续的样本特征
缺点:
- 很容易在训练数据中生成复杂的树结构,造成过拟合(overfitting)。剪枝可以缓解过拟合的负作用,常用方法是限制树的高度、叶子节点中的最少样本数量。
- 学习一棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪心算法建立的,这种算法不能保证建立全局最优的决策树。Random Forest 引入随机能缓解这个问题
要翻墙
信息论基础http://leijun00.github.io/2014/07/information-theory/
ID3:
根据信息增益(Information gain)来选取Feature作为决策树分裂的节点
实际上就是一个互信息I(D,A)
C4.5
信息增益计算的是子节点的纯度,是用样本的label值,而分裂信息用的是特征的纯度(划重点)。
C5.0
C5.0 是Ross Quinlan 1998年提出来的,对C4.5做了很多改进,目前他是作为商业机密在售卖.该算法引入了Boosting的算法框架,比前面提到的算法性能更快,对内存的使用更有效,决策树更小等等.更详细的请访问他的个人主页查阅文章http://www.rulequest.com/see5-unix.html和http://rulequest.com/download.html.
CART
CART(Classification and regression tree)是由L.Breiman,J.Friedman,R.Olshen和C.Stone于1984年提出,是应用很广泛的决策树学习方法.
cart是颗二叉树
看下算法的优点:
- 没有分布假设、没有数据同质性(Homogeneity)要求
- 观测值属性可以是分类、离散、连续的混合。
- 对异常值(Outlier)值不敏感,异常值一般会被处理掉
- 在面对缺失值、变量多等问题时,CART显得给长稳健(ROBUST)
缺点:
- 非基于概率模型,很难对决策树的结果的准确程度做度量
分类树
回归树
文中有一个简单的例子,可以看一下加深印象
每一次都对子树重复这个操作,不过样本集变成子树的样本集,特征集也变成子树的特征集。一直到可以结束条件。
CART为什么要用基尼系数
- 一方面是便于计算,熵模型需要计算log等。
- 最小化不纯度而不是最大化信息增益。cart是一颗二叉树,每一步通过判断一个特征是与不是进行二分,慢慢提高子树的纯度。最大化信息增益是每一步消去一个特征使得信息增益最大,每一步做的太果断了,不给后面留机会。就比如可能把人群分为青年,中年和老年,最大化信息增益可能在第一次分割的时候就直接把人群这个属性给分掉了。而使用cart二分的话,可能第一步是判断是不是老年,第二步可能去判断性别了,第三步的特征才又回到是青年还是中年。留有一个余地。
下一章会详细讲剪枝策略,预剪枝和后剪枝
决策树:http://leijun00.github.io/2014/09/decision-tree/