今天抽空补充一下决策树的相关知识:
决策树的种类及区别:
决策树以自顶向下递归的分治方式进行构造。从训练元组集和它们相关联的类标号开始构建决策树。随着树的构建,训练集递归地划分成较小的子集。
ID3:使用信息增益作为属性选择度量(偏向于选择具有大量值的属性)。
C4.5:选择具有最大增益率的属性作为分裂属性。增益率=属性增益/总增益
CART:使用基尼指数作为属性度量。
熵:
我们首先来了解一下信息熵的概念:
在这里,表示随机事件X发生为
的概率,log是以2为底的对数。信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。
在决策树构造中,我们分别使用两种衡量标准进行决策构造:
- 期望值(子信息熵)越小,信息增益越大,则分类纯度越高;
- 基尼指数度量的是数据分区或训练元组集的不纯度。基尼指数越小,不纯度下降越大,分类纯度越高。
信息增益:
对于样本集合D来说,有k个类别,每个类别的概率是,其中
表示类别k的样本个数,|D|表示样本总数。
则对于样本集合D来说熵(经验熵)为:
对于特征属性A来说,样本集合可以根据其取值被分为Da1,Da2,...,Dai,...,Dan等子集合。而每个样本子集合Dai,又可以计算该子集合的熵H(Dai)。那么,我们将得到该特征属性对应的期望信息:
则该特征属性的信息增益是:Gain(A) = H(D)-Info(A)。一般情况下,在决策树构建时,我们会选择信息增益高的特征属性作为分裂属性。
信息增益率:
信息增益度量偏向于选择具有大量值的属性。因此,引入了信息增益率这个概念。
对于集合D,可以利用特征属性A的取值将集合分为Da1,Da2,...,Dai,...,Dan等子集合。
我们设特征属性A的分裂信息为:
我们设基于属性A的信息增益率为:
我们会选择具有最大增益率的属性作为分裂属性。
注意:随着划分信息趋于0,该比率变得不稳定。为了避免这种情况,增加一个约束:选取的测试的信息增益必须较大,至少与考察的所有测试的平均增益一样大。
基尼指数:
设:原始数据集合有K个类,pk表示选中的样本属于第k类别的概率,则这个样本被分错的概率是(1-pk)。则样本集合D的基尼指数为:
如果训练数据集D根据特征A的取值被分割为D1和D2两部分,则在特征A的条件下,集合D的基尼指数定义为:
其中对于D1和D2,又可以计算出Gini(D1)和Gini(D2)。
某特征所导致的基尼指数越小,不纯度降低越大,分类纯度越高。
注:当样本类别只有两类时,则Gini(D)=2p(1-p)。
决策树规则后修剪方法:
- 从训练集合推导出决策树,增长决策树直到尽可能好地拟合训练数据,允许过度拟合发生。
- 将决策树转化为等价的规则集合,方法是为从根结点到叶子结点的每一条路径创建一条规则。
- 通过删除任何能导致估计精度提高的前件(preconditions)来修剪(泛化)每一条规则。
- 按照修剪过的规则的估计精度对它们进行排序;并按这样的顺序应用这些规则来分类后来的实例。
决策树的两大优点:
- 决策树模型可以读性好,具有描述性,有助于人工分析;
- 效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。
参考文献:
https://blog.youkuaiyun.com/t15600624671/article/details/78895267
https://www.cnblogs.com/starfire86/p/5749334.html
https://www.cnblogs.com/bourneli/archive/2013/03/15/2961568.html
《数据挖掘》韩家炜版,课本P218。
随机森林:
随机森林实际上是多重决策树的组合使用,是对Bagging的改进,采取有放回的采样方式。
随机森林的特点:
- 在当前所有算法中,具有极好的准确率
- 能够有效地运行在大数据集上
- 能够处理具有高维特征的输入样本,而且不需要降维
- 能够评估各个特征在分类问题上的重要性
- 在生成过程中,能够获取到内部生成误差的一种无偏估计
- 对于缺省值问题也能够获得很好得结果
下面这位作者对随机森林做了详细的介绍,我就不班门弄斧了: