决策树是一种基本的分类回归方法,很很多相关的方法。这里我们只是以条脉络进行分析。主要分析ID3,C4.5,CART等一些常见的决策树算法。

一、小析决策树

决策树以实例为基础的归纳学习算法。着眼于从一组无次序、无规则的事例中,推理出以决策树为表示形式的分类规则。图1就是决策树的一般流程图:

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益

图1

决策树主要可以分为三个部分:分别是特征选择、决策树构建和决策树剪枝。

1.特征选择:在构建决策树时,每个节点需要属性特征进行分裂。被选择分裂的属性,将作为该节点的分裂依据。然后,通过该分裂属性值,生成对应的分支。

2.决策树构建:决策树的构建可以视为是一种自上而下的递归分裂过程。每次通过属性计算选择分裂属性,然后使用该分裂属性对节点进行分裂。直到节点中的数据属于同一类,或者满足停止分裂要求为止。

3.决策树剪枝:决策树剪枝分为前剪枝和后剪枝。前剪枝通过设定一定的阈值条件,让决策树停止节点分裂。后剪枝则通过计算代价函数来获取最适合的的决策树。该决策树在测试误差和决策树的复杂上都得到一个很好的折衷。决策树剪枝是为了防止,所构建的树过拟合。(过拟合是指该决策树只是更适合对于训练数据,对于未知数据(或者实际情况)难以有较好地适应性)。

下面分析决策树的一些常见算法时候都会通过这三个方面进行分析。

二、ID3算法

在介绍ID3算法之前,我们需要介绍一些相关的信息论基础知识。主要是信息熵、信息增益和信息增益率等基本概念。

信息熵假定决策树中的feature_importances是怎么确定的 决策树分析方法_数据_02为训练集,决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_03的目标属性决策树中的feature_importances是怎么确定的 决策树分析方法_数据_04具有决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_05个可能的类标号值,

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_06

。信息熵是在样本集合中对目标属性类别情况的一种衡量。其计算公式如下:

 

决策树中的feature_importances是怎么确定的 决策树分析方法_数据_07

(1)

信息增益:是划分前样本数据集的不确定性程度(熵)和划分后样本数据集的不确定性程度(熵)的差值。即:

 

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_08

(2)

其中,

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_09

(3)

假设属性决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_10决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_11个不同的取值,从而将决策树中的feature_importances是怎么确定的 决策树分析方法_数据_12划分为决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_13个样本子集

决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_14

信息增益率:特征A对训练数据集S的信息增益率的定义如公式(4)所示:

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_15

(4)

其中,

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_16

,n是特征A取值的个数。

 

 

 

 

 

ID3算法是一个较为经典的决策树算法。和一般的决策树算法相比,其没有进行决策树的剪枝。ID3算法的核心是使用信息增益进行特征选择,然后进行构建决策树。其算法大意如下:

(1)计算训练集中以当前属性集中的各个属性为准,获取每个属性作为分裂属性的信息增益。

(2)从中找到一个信息增益最大的属性作为该节点决策树的分裂属性。

(3)重复步骤(1)和步骤(2),直到每个节点中已无属性可以作为分裂属性或者节点中所有数据都是属于同一类的。

当然可以通过设置一定的信息增益阈值,来判断节点是否无需再需要进行分裂。当决策树不能继续进行分裂,但是其中又含有不止一个类别的数据时,则一般是通过选择该节点中,同类最多的数据的属性作为该节点的属性。

ID3算法的缺点:

(1)ID3算法的所选的分类属性偏向于特征值数目多的分类属性。

(2)ID3算法没有对数据进行一定的预处理,因而,对噪声数据比较敏感。

(3)ID3算法没有进行剪枝,可能会出现规则过拟合的情况。

(4)ID3可算法能收敛于局部最优解而丢失全局最优解。主要是因为在分类属性选择时,都是采用的是贪心策略,具体说就是自顶向下的深度优先搜索策略。

对于ID3算法的缺点,其中我们可以看出(1)和(2)是其固定的缺点。对于缺点(3),则可以通过设置一定的信息增益阈值来限定节点的分裂条件,就可以减缓。而对于缺点(4)则是决策树算法共有的缺点。决策树本身就是使用贪心策略进行属性的选择。如果要做到选择最优的分裂属性,那么这个问题将是NP问题,极为难解决。

三、C4.5算法

      由于ID3算法只是选择信息增益作为节点选择分裂属性的定义,而这种属性选择方式会让节点的属性偏向于属性值比较多的那些属性。这个对决策树的构建是极为不利的。C4.5是基于ID3算法之上的另外一种构建决策树的方法。

      在C4.5算法中,使用信息增益率作为决策树在选择分裂属性时的计算方法。和ID3算法相比,C4.5则有决策树算法常有的三个部分。C4.5算法的算法大意如下:

(1)计算训练集中以当前属性集中的各个属性为准,获取每个属性作为分裂属性的信息增益率。

(2)从中找到一个信息增益最大的属性作为该节点决策树的分裂属性。

(3)重复步骤(1)和步骤(2),直到每个节点中已无属性可以作为分裂属性或者节点中所有数据都是属于同一类的或者节点满足无需再进行分裂的条件。其中第一个条件和第三个条件可能出现该节点中含有不同类型的数据。这种情况下,一般是选择同一类属性最多的数据集所对应的属性作为该节点的属性。

(4)在构建好一颗决策树之后,对决策树进行剪枝操作。决策树的损失函数可以定义为预测误差函数和决策树代价函数。其中预测误差使用经验熵进行处理。代价函数使用复杂度函数进行衡量。

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_17

其中经验熵为:

决策树中的feature_importances是怎么确定的 决策树分析方法_数据_18

树的剪枝算法:

(1)计算每个节点的经验熵;

(2)递归地从树的叶结点向上回缩;

设一组叶结点回缩到其父节点之前与之后的整体树分别为 决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_19决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_20 ,其对应的损失函数值分别是

决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_21

决策树中的feature_importances是怎么确定的 决策树分析方法_数据_22

,如果

决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_23

则进行剪枝,即将父节点变为新的叶节点。

(3)返回(2),直到不能继续位置,得到损失函数最小的子树决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_24

使用该方法就可以完成对树的剪枝操作。由于C4.5的优秀性能,所以有人对其又进行改进使其更适合于商业应用中,这个算法叫C5.0。有兴趣可以搜索相关内容。

 

 

四、CART算法

CART算法又称为分类与回归树。以上ID3算法和C4.5算法构建的是一颗多叉树,而CART算法则构建的是一颗二叉树。多叉树在指示给人们查看时虽然方便,但是在计算机表示和编写对应的代码时,却非常麻烦。因而,我一直认为CART算法是对ID3和C4.5算法的弥补,但是其实不是。因为CART出现的时间是比ID3和C4.5更要早。只能是将其看成不同的类型。

在介绍CART算法之前,需要先介绍经济学中的一种指数:基尼指数。基尼和信息熵有点类似是用来衡量数据中类别的不确定度。其值越大说明不确定度越高,或者数据集中每类数据的分布越均匀。

假设第k类数据对应的概率为决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_25 ,则概率分布定义的基尼指数是:

决策树中的feature_importances是怎么确定的 决策树分析方法_数据_26

。对于给定的样本结合C,其集合的基尼指数是:

决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_27

其中,决策树中的feature_importances是怎么确定的 决策树分析方法_数据_28 是数据集C中第k类类别的数据。

CART算法成为分类与回归树,因而其的作用就可以分为这两个部分。其中回归树部分,可以参看李航博士编写的《统计学习方法》一书中的p69页,最小二乘回归树生成算法。其算法的核心是,子啊训练数据集所在的输入空间中,递归地讲每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉树策略。其步骤如下:

(1)选择最优切分变量j与切分点s,求解

决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_29

(5);

遍历变量j,对固定的切分变量j扫描切分点s,选择使式子(5)达到最小值的对(j,s)。

(2)用选定的对(j,s)划分区域并决定相应的输出值:

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_30

决策树中的feature_importances是怎么确定的 决策树分析方法_决策树_31

 

(3)继续对两个子区域调用步骤(1),(2),直至满足停止条件。

(4)将输入空间划分为M个区域

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_32

,生成决策树:

决策树中的feature_importances是怎么确定的 决策树分析方法_信息增益_33

对于CART算法进行生成CART分类树,则其生成树的过程大致和ID3和C4.5算法一直。所不同的是因为CART算法构建的是一颗二叉树。因而,需要将属性的多个值进行处理。对于每个值,我们通过判断其是否等于后不等于该值,计算其的基尼指数。获取基尼指数最小的属性值进行划分。对于所划分的两个子区域再使用该方法进行处理,就可以构建一颗CART树。

在构建完决策树之后,CART算法仍是需要对其进行剪枝操作。对于CART剪枝算法,可以参看李航博士编写的《统计学习方法》中的p73页。这里不重复进行说明。

 

五、小结

对于决策树算法的一些基本算法先讲解到这里。之后将会有一篇文章,讲解一些较为实用的决策树算法。