机器学习笔记(六) 决策树

时间:2023-02-13 07:41:21

       决策树是一种基本的分类与回归的方法。在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

       决策树的学习过程通常包括三个步骤:特征选择,决策树的生成,决策树的剪枝。

       决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现很适用。

 

1.  决策树模型

       决策树是一个树结构(可以是二叉树或非二叉树)。每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

       决策树可以看做是定义在特征空间与类空间上的条件概率分布,这个条件概率分布由各个单元给定的条件下类的条件概率分布组成。各叶节点(单元)上条件概率往往偏向一类,即属于某一类的概率大,在分类时将该节点的实例强行分到条件概率大的那一类。

 

2.  决策树学习

        决策树学习本质上是从训练数据集中归纳出一组分类规则,或者说是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷个,要选择的应该是不仅对训练数据有很好的拟合,而且对未知数据有很好地预测。

        决策树的损失函数通常是正则化的极大似然函数,学习策略是以损失函数为目标函数的最小化。学习的算法通常是一个递归的选择最优特征,决策树的生成只考虑局部最优,而剪枝则考虑全局最优。

 

3.  决策树构造

       构造决策树的关键步骤选择一种分裂准则来分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性划分构造不同的分支,目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:

---  属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。

---  属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。

---  属性是连续值。此时确定一个值作为分裂点s,按照>s和<=s生成两个分支。

 

3.1  ID3算法

       要介绍ID3算法,首先要引进信息增益。信息增益表示得知特征X的信息使得类Y的信息不确定性减少的程度。

       熵H(X)度量随机变量的不确定性:机器学习笔记(六) 决策树

       条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性:

机器学习笔记(六) 决策树

       设数据集D,划分为K个类机器学习笔记(六) 决策树 特征A则可以将D划分为n个子集机器学习笔记(六) 决策树 ,子集机器学习笔记(六) 决策树 中属于类机器学习笔记(六) 决策树的样本集合为机器学习笔记(六) 决策树

       原来的信息需求为 ,机器学习笔记(六) 决策树

       按照特征A划分后新的信息需求为,

机器学习笔记(六) 决策树

       那么,特征A对训练集D的信息增益g(D,A) :

                                                                    g(D,A) = H(D) – H(D|A)

       由于熵H(X)和条件熵H(Y|X)的差为互信息,信息增益也就等价于训练集中类与特征的互信息。

       信息增益可以这样理解,我们希望分区后每个分区都尽可能“纯”。H(D|A)越小,表示在特征A的划分下需要的信息越少,分区越“纯”,对应的信息增益也就越大。

        ID3算法的核心是在决策树的各个节点上用信息增益准则选取特征。ID3相当于用极大似然法进行概率模型的选择。

       具体做法是:从根节点出发,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点特征,由此特征的不同取值建立子节点;再对子节点递归调用以上方法,构建决策树。

       一方面,ID3算法只有树的生成,所以生成的树容易过拟合;另一方面,信息增益度量偏向于有较多输出种类的特征。

 

3.2  C4.5算法

      不同于ID3算法,C4.5选择信息增益比来选择特征。

      信息增益比: 机器学习笔记(六) 决策树

其中,机器学习笔记(六) 决策树 表征了分区产生的信息。但是,随着划分信息趋近于0,这个比率变得不稳定。为了避免这个情况,增加一个约束:选取的的特征的信息增益必须大,至少与特征的平均增益一样大。

 

3.3  CART算法

       CART模型既可以用来分类也可以用来回归,是二叉树,内部节点的取值为“是”和“否”。CART算法分为两步:一是决策树生成,基于训练集生成的决策树要尽量大;二是决策树剪枝,用验证集对生成的决策树剪枝选择最优子树,以损失函数最小作为剪枝标准。

1)CART树生成

       CART决策树的生成即是递归的构建二叉树,回归树用平方误差最小化准则,分类树用基尼指数最小化准则,进行特征选择来生成二叉树。

       基尼指数,度量的是数据分区或训练集D的不纯度。

       对给定样本集D,其基尼指数为机器学习笔记(六) 决策树

       则在特征A的条件下,集合D的基尼指数

                                                                                 机器学习笔记(六) 决策树

       基尼指数Gini(D,A)表示经特征A分割后集合D的不确定性,基尼指数越大,样本的不确定性也越大,所以CART分类树选取特征时是按照基尼指数最小化的准则。

2)CART树剪枝

        剪枝的想法是从“完全生长”的决策树底端剪去一些子树,使决策树变小(模型变简单)。剪枝分为两步:一是从生成的决策树底端开始不断剪枝,直到根节点,形成子树序列;二是通过交叉验证在独立的验证集上对子树序列测试,选出最优子树。

 

4.  决策树剪枝

       决策树的剪枝是通过极小化决策树整体的损失函数或代价函数来实现。

       损失函数可以定义为:机器学习笔记(六) 决策树  

其中 机器学习笔记(六) 决策树为经验熵。

      C(T)表示模型对训练样本的预测误差,即拟合程度,而机器学习笔记(六) 决策树 则表示模型复杂度。用上式的损失函数极小化等价于正则化的极大似然估计,所以损失函数极小化的剪枝就是正则化的极大似然估计来进行模型选择。

 

5.  其他

      特征用完的情况-- 在决策树构造过程中可能会出现这种情况:所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行“多数表决”,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点。

 

 

参   考

李航《统计学习方法》

http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

http://bluewhale.cc/2016-03-20/decision-tree.html