Post

Decision Tree Algorithm

Decision Tree Algorithm.

  • Machine Learning
  • Classical Algorithm
  • 学习笔记

Synopsis

决策树模型层树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以被认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

决策树学习通常包括 3 个步骤:特征选择、决策树生成和决策树的修剪。

Definition

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由点(Node)和有向边(directed edge)组成。节点有两种类型:内部节点(internal node)和叶节点(leaf node)。内部节点表示一个特征(pattern)或者属性(feature),叶节点表示一个类(label)。

用决策树对需要测试的实例进行分类:从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时,每一个子节点对应着该特征的一个取值。如此递归地对实例进行测试并分类,直至到达叶节点。最后将实例分配到叶节点的类中。

Information entropy and information gain

熵(entropy)指的是体系的混乱程度。在信息论中,香农熵是一种信息的度量方式,表示信息的混乱程度,也就是说:信息越有序,信息熵越低。

信息增益(information gain)是在划分数据集前后信息发生变化的量。

创建决策树

def createBranch():
    '''
    此处运用了迭代思想。感兴趣可以搜索 recursion 或 dynamic programming。
    '''
    检测数据集中的所有数据的分类标签是否相同:
        If so return 类标签
        Else:
            寻找划分数据集的最好特征
            划分数据集
            创建分支节点
                for 每个划分的子集
                    调用函数 createBranch 并增加返回结果到分支节点中
            return 分支节点

为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面公式得到:

$$ H=-\sum^{n}_{i=1}{p(x_i)log_2p(x_i)} $$

算法特点

优点:计算复杂度不高,输出结果易于理解,数据有缺失也能跑,可以处理不相关特征。

缺点:容易过拟合。适用数据类型:数值型和标称型。