决策树
martin
基本概念
一般的,一颗决策树包含一个根节点、若干个内部节点和若干个叶节点,所以决策树相当于多叉树。叶节点对应于决策结果,其他每个结点则对应与一个属性测试,每个节点包含的样本集合根据属性测试的结果被分到子节点中。决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力的决策树,基本思想遵循“分而治之”的策略。
决策树的生成是一个递归过程。在决策树算法中有三种情形会导致递归返回:
- 当前节点包含的样本全部属于同一个类别,无需划分。
- 当前属性集为空,或是所有样本在所有属性集上取值相同,无法划分。此时,把当前节点标记为叶节点,并将其类别设定为该节点所含样本最多的类别。
- 当前节点包含的样本集合为空,不能划分。此时,同样把当前节点标记为叶节点,但将其类别设定为其父节点所含样本最多的类别。
注意:2和3不同,2是后验概率,3是把父节点的样本分布作为当前节点的先验概率。
下面给出一个决策树的例子:
决策树相当于对特征空间进行划分,如下:
也就是说,决策树的每条路径对应于特征空间的每个区域。对于决策树主要有以下几种:ID3,C4.5主要应用于分类任务;CART树,主要应用于预测任务,下面将逐个介绍。
ID3
对于之前给出的决策树的节点划分在ID3中有特定的方法,ID3中节点划分所衡量的指标是:信息增益。
一般而言,信息增益越大,则意味着使用属性 α 来进行划分所获得的的“纯度提升”越大。因此,我们可用信息增益来进行决策树的划分属性选择。
给一个数据集,我们在这个数据集上来进行ID3决策树的生成:
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
---|---|---|---|---|---|---|---|
1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
6 | 青绿 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 是 |
7 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 稍凹 | 软粘 | 是 |
8 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 是 |
9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
10 | 青绿 | 硬挺 | 清脆 | 清晰 | 平坦 | 软粘 | 否 |
11 | 浅白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 否 |
12 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 否 |
13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 否 |
14 | 浅白 | 稍蜷 | 沉闷 | 稍糊 | 凹陷 | 硬滑 | 否 |
15 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 否 |
16 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 硬滑 | 否 |
17 | 青绿 | 蜷缩 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
然后,我们要计算出当前属性集合 { 色泽,根蒂,敲声,纹理,脐部,触感} 中每个属性的信息增益。
先计算根节点的信息熵:
计算属性“ 色泽 ”的信息增益,它有3个可能取的值: { 青绿,乌黑,浅白} ,分别记为:
D1(色泽=青绿) ,包含编号为 {
1,4,6,10,13,17} 6个样例,于是 p1=36,p2=36 ,
D2(色泽=乌黑) ,包含编号为 {
2,3,7,8,9,15} 6个样例,于是 p1=46,p2=26 ,
D3(色泽=浅白) ,包含编号为 {
5,11,12,14,16} 5个样例,于是 p1=15,p2=45 ,
有了上面的信息就可以求该特征的每个属性的信息熵了: