目录
一、决策树模型
1.1、决策树模型的学习
二、特征选择
2.1、信息增益
2.2、信息增益比
三、决策树的生成
3.1、ID3算法
3.2、C4.5算法
四、决策树的剪枝
五、分类回归树(CART)算法
5.1、CART生成
5.2、CART剪枝
决策树是一种基本的分类和回归方法。决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。
分类决策树模型是表示基于特征对实例进行分类的树形结构。决策树分类从根节点开始,先对实例的特征进行计算,根据结果将实力特征分配到子节点,这时每一个节点代表一个特征的取值。以此类推,直到叶子节点,最后将实例分配到叶节点中。
决策树可以转换成一个if-then规则的集合,也可以看作是定义在特征空间划分上的类的条件概率分布。
由决策树的根节点到叶子节点的每一条路径构建一条规则。路径上内部节点的特征对应着规则条件,而叶子节点的类对应规则的结论。if-then规则具有互斥且完备性,也就是说,每一个实例都被一条路径或规则覆盖,且只被一条路径或规则覆盖。
决策树表示条件概率分布由各个单元给定条件下类的条件概率分布组成。假设X表示特征的随机变量,Y表示类的随机变量,那么条件概率分布表示为P(Y|X)。决策树分类时将该节点实例强行分到条件概率大的那一类。
决策树学习的本质是从数据中学习到一组分类规则。 决策树学习旨在构建一个与训练数据拟合很好,并且复杂度小的决策树。因为从可能的决策树中直接选取最优决策树是NP完全问题。现实中采用启发式方法学习次优的决策树。
决策树学习的算法通常是一个递归地选择最优特征,并根据特征对数据进行分割,使得子数据集有一个最好的分类过程。开始,构建根节点,将所有的数据都放在根节点,选择一个最优特征,按照该特征将数据分割成子数据集,使得各个子集有一个当前条件下的最好分类。如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到对应叶节点中;如果还有子集未正确分类,那么对这些子集选择最优特征,继续进行分割,构建相应的节点。如此递归进行,直到所有数据集基本分类正确,或没有合适的特征为止。最后,每个子集都分到叶节点上。这就生成一颗决策树。
决策树学习算法包括3部分:特征选择、树的生成和树的剪枝。常用的算法有ID3、 C4.5和CART。
特征选择在于选取对训练数据具有分类能力的特征,这样可以可以提高决策树的效率。特征选择是决定用哪个特征划分特征空间。通常选择的准测是信息增益或信息增益比。
假设离散随机变量X的概率分布为:
则X的熵定义为:
熵越大,随机变量的不确定性越大。一般。
设随机变量(X,Y)的联合分布为:
则已知条件X下Y的条件熵定义为:
一般,熵和条件熵由数据估计得到时也叫做经验熵和经验条件熵。
1、信息增益的定义
特征A对数据D的信息增益g(D,A),定义为集合D的经验熵H(D)与给定条件D下特征A的经验条件熵H(D|A)之差,即
一般,信息增益也叫做互信息。决策树中的信息增益等价与训练集中的类与特征之间的互信息。信息增益选择特征的方法:对训练集(D)计算每个特征的信息增益,并比较其大小,选择信息增益最大的特征。
2、信息增益算法
输入:训练数据和特征A
输出:特征A对训练数据集D的信息增益g(D,A)
(1)数据D的经验熵:
(2)特征A对D的经验条件熵:
(3)计算信息增益:
以信息增益作为划分数据集的特征,存在选择取值较多的特征的问题,使用信息增益比可以对这种问题进行校正。
1、信息增益比定义
特征A对训练数据的信息增益比为其信息增益g(D,A)与训练数据D关于特征A的熵H(D)之比,即
ID3算法的核心是在决策树上使用信息增益准则选择特征,递归的构造决策树。具体方法:从根节点开始,计算节点所有可能的特征的信息增益,选择最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点调用以上方法,构建决策树;直到所有特征的信息增益很小或没有特征可选为止。最后构建得到一颗决策树。
ID3相当于使用极大似然进行概率模型的选择。
C4.5算法与ID3算法相似,只是C.5生成过程中采用信息增益比来选择特征。
决策树将已生成的树进行简化的过程叫做剪枝。决策树的剪枝通常通过极小化决策树整体的损失函数来实现。假设树的叶节点个数为|T|,t是树T的叶节点,该叶节点由Nt个样本点,其中第k类样本点由Ntk个,则决策树的损失函数为:
这时有
式中表示模型对训练数据的预测误差,即模型的拟合程度,表示模型的复杂度,参数控制两者的影响。较大的促使模型选择简单的树;较小的促使模型选择教复杂的树;=0表示模型只考虑与训练数据的拟合度,不考虑模型的复杂度。
剪枝就是当确定时选择损失函数最小的模型,当确定时,子树越小,模型的复杂度越低,往往拟合效果不好。
决策树的剪枝算法:
输入:树T,参数
输出:修剪后的子树
(1)计算每一个节点的经验熵;
(2)递归从树的叶节点向上回缩;
(3)返回2,直到不能继续为止,得到损失函数最小的子树。
CART算法主要由两部分组成:
决策树的生成就是递归的构建二叉决策树的过程。对回归树用平方差最小化准则,对分类树采用采用基尼指数最小化准则,进行特征选择,生成二叉树。
1、回归树的生成
输入:训练数据D
输出:回归树f(x)
(1)选择最优切分变量j和其切分点s,求解:
遍历变量j,对固定的变量j扫描切分点s,选择达到最小值对应的(j,s)。
(2)对选定的对(j,s)划分区域并决定相应的输出值:
(3)继续对两个区域调用(1)(2)直至满足停止条件;
(4)将输入空间划分为M个区域,生成决策树:
2、分类树的生成
基尼指数表示集合D的不确定性,基尼指数越大,样本的不确定性也越大。
输入:训练数据集D,停止计算条件;
输出:CART决策树
(1)计算现有特征对该数据集的基尼指数;
(2)在所有的特征A以及所有可能切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。根据最优特征和切分点将数据集分配到两个子节点中;
(3)对两个子节点递归调用(1)(2),直至满足停止条件;
(4)生成决策树。
一般停止条件为:节点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值,或没有更多的特征。
CART剪枝算法分两步组成:首先从生成算法产生的决策树T0的低端开始不断剪枝,直到T0的根节点,形成一个子树序列
;然后通过交叉验证法在独立的验证集上对子树进行测试,从中选择最优的子树。
输入:CART算法生成的决策树T0
输出:最优决策树T
(1)设k=0,T=T0;
(2)设;
这里,Tt表示以t为节点的子树,C(Tt)是对训练数据的预测误差,|Tt|是Tt的叶节点个数。
(4)对的节点t进行剪枝,并对叶节点t以多数表决法决定其他类,得到树T;
(6)如果Tk不是由根节点以及两个叶节点构成的树,回到步骤(2);否则令;
(7)通过交叉验证法在独立的验证集上对子树进行测试,从中选择最优的子树T。
参考链接:
《统计学习方法》第2版