机器学习:决策树(上)

决策树(上)

ID3、C4.5算法,用于分类

一、概述

整个决策树模型生成由:特征选择、决策树生成、剪枝,三步完成。

公式定义:

熵H(D):

条件熵H(D|A): 

信息增益: 

信息增益比: 

 Ha(D)就是条件熵H(D|A)

决策树生成策略:

采用使数据集的熵减少最多的特征也就是信息增益或者信息增益比最大的特征来切分数据集,重复这样操作以达到目标精度为止。

决策树剪枝策略:

构建决策树带正则项的损失函数:

其中树T的叶结点个数为|T|t是树T的叶结点,该叶结点有Nt个样本点,Ht(T)为叶结点t上的经验熵,a≥0为参数。

k类的样本点有Ntk个,k1,2,…,K,则决策树学习的经验熵定义为

 

从下往上逐渐剪除叶节点,每剪一次生成的新决策树计算损失和未剪枝时的决策树比较保留损失小的决策树,直到找到使损失达到最小的决策树。 

二、主要内容

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

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

可以看出,决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。由于 决策树表示一个条件概率分布,所以深浅不同的决策树对应着不同复杂度的概率模型。决策树的生成对应于模型的局部选择只考虑局部最优即只考虑了训练集数据的分类最优,决策树的剪枝对应于模型的全局选择则考虑全局最优,即训练集和测试机都尽量做到最优。

5.1是一个决策树的示意图。图中圆和方框分别表示内部结点和叶结点。

 

 特征选择:

特征选择是确定由哪个特征来进行数据的划分。

选用不同的特征划分会有不同的分类结果。

问题是:究竟选择哪个特征更好些?这就要求确定选择特征的准则。直观上,如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,使得各个子集在当前条件下有最好的分类,那么就更应该选择这个特征。信息增益(information gain)就能够很好地表示这一直观的准则。

//==============预备知识================//

 //======================================//

熵、条件熵、信息增益、信息增益比

熵的计算公式为:

条件熵的计算公式为: 

 信息增益:

 信息增益的理解为:原数据集中的熵即不确定性为H(D),在事件A发生了以后,例如用某个特征分割了数据集,这时数据集的熵变为条件熵H(D|A),因此信息增益g(D,A)=H(D)-H(D|A).表示数据集发生了事件A之前与发生之后的不确定性的变化量记为g(D,A),这个信息增益却大,说明这个事件对数据集的划分越有效。

信息增益比:

 策略:

决策树学习应用信息增益准则选择特征。给定训练数据集D和特征A,经验熵H(D)表 示对数据集D进行分类的不确定性。而经验条件熵H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。那么它们的差,即信息增益,就表示由于特征A而使得对数 据集D的分类的不确定性减少的程度。显然,对于数据集D而言,信息增益依赖于特征, 不同的特征往往具有不同的信息增益。信息增益大的特征具有更强的分类能力。

根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

算法:

 ID3算法:

C4.5算法:

和ID3算法类似,使用信息增益比确定分割的特征。

剪枝:

决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。

在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning)。具体地,剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。

剪枝算法思路:

 式中第一部分就是整个决策树的熵,就是所有子集的熵再乘以一个系数的和,和前面决策树的生成中用到的熵是差不多的,只不过每个子集的熵分别乘上了自己子集中样本的个数作为系数。整棵决策树的生成过程中就是为了让前面这部分整体的熵最小化。后面加的是一个惩罚项。也就造成了前面部分减少后面部分可能增加的情况,来防止过拟合。

式(5.14)中,C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型复杂度,参数a≥0控制两者之间的影响。较大的a促使选择较简单的模型(树),较小的a促使选择较复杂的模型(树)。a0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。

剪枝,就是当a确定时,选择损失函数最小的模型,即损失函数最小的子树。当a值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度就越高;相反,子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好。损失函数正好表示了对两者的平衡。

可以看出,决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。

剪枝算法:

猜你喜欢

转载自blog.csdn.net/stephon_100/article/details/125243016