Decision Tree Algorithm

Posted by 明杰/Ming on March 27, 2023

Synopsis

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

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

Defination

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

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

Information entropy & Information gain

熵(entropy):熵指的是体系的混乱的程度,在不同的学科中也有引申出的更为具体的定义,是各领域十分重要的参量。

信息论(information theory)中的熵(香农熵): 是一种信息的度量方式,表示信息的混乱程度,也就是说: 信息越有序,信息熵越低。例如: 火柴有序放在火柴盒里,熵值很低,相反,熵值很高。

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

创建决策树

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

分析数据

其中p(x_i)是选择该分类的概率。

为了计算熵,我们需要计算所有类别所有可能值包含的信息希望值,通过下面公式得到: \(H=-\sum^{n}_{i=1}{p(x_i)log_2p(x_i)}\)

算法特点

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

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


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.