决策树
前言
决策树(decision tree)是一种常见的机器学习方法,给定包含属性的实例集X={x (1) ,x (2) ,…,x (n) }(其中,x (i) =(x (i)1 ,x (i)2 ,…,x (i)m )表示实例i的m个属性),以及各个实例对应的标签集L={l (1) ,l (2) ,…,l (n) },任务是根据属性将这n个实例进行分类,使得每个子类具有相同的标签(label)。
例1
ID | 不浮出水面是否可以生存 | 是否有脚蹼 | 属于鱼类 |
---|---|---|---|
1 | 是 | 是 | 是 |
2 | 是 | 是 | 是 |
3 | 是 | 否 | 否 |
4 | 否 | 是 | 否 |
5 | 否 | 是 | 否 |
以流程图的形式表示决策树的工作方式:
图1 流程图形式的决策树
基本方法
概述
将实例全集X作为初始根节点,利用信息增益,逐次选择适当的属性,根据不同的属性值将实例集进行划分,将划分后的各个子集按照相同的方式选取属性进行划分,直到每个子集的标签相同。每次创建分支的伪代码函数createBranch()如下所示:
——————————————————————————–
IF 当前节点的实例集是否属于同一分类 THEN:
Return 类标签;
ELSE:
寻找划分实例集的最好特征
划分实例集
创建分支节点
FOR 每一个新的分支节点:
调用函数createBranch(),并将结果返回原来的分支节点
END
Return 分支节点
———————————————————————————
信息增益
划分数据的大原则:将无序数据变得更加有序。可以用信息熵(entropy)表示数据的无序程度,越杂乱无序,信息熵越大,数据划分后的信息熵的降低程度称为信息增益,信息增益越大则说明分类越有效,分类后的子集越“纯净”。
信息熵的定义为: H=−∑ni=1p(xi)log2p(xi) ,按照属性划分后的结果为条件熵,在信息论中,条件熵描述了在已知第二个随机变量X的前提下,随机变量Y的信息熵还有多少,用
C3决策树的不足
按照以上方法进行划分时,决策树倾向于把数据分得特别散,因为信息增益
G
只会按照子集纯度的高低选择划分属性,而没有考虑所选属性在整个数据集的分布情况,举个极端的例子,如果将例1中的ID也作为属性参与划分,毫无疑问ID的信息增益最大,因为每个ID只有一个实例
其中 H(D) 表示属性D的杂乱度。