决策树模型和学习
决策树模型
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由节点(node)和有向边(directed edge)组成。有向边有两种类型:内部节点(internal node)和叶节点(leaf node)。内部节点表示一个特征或属性, 叶节点表示一个类。
决策树学习
决策树学习的损失函数通常是正则化的极大似然函数,决策树学习的策略是以损失函数为目标函数的最小化。
选择最优决策树是NP完全问题,现实中通常采用启发式方法,近似求解问题,得到次最优(sub-optimal)的决策树。
决策树学习的算法通常是一个递归地选择最优特征,并根据特征对训练数据进行分割。这一过程对应特征空间的划分和决策树的构建。
为了避免过拟合,使其具有更好的泛化能力,可以对已生成的决策树进行剪枝。
决策树与条件概率分布
决策树生成将特征空间划分成互不相交的单元,每个单元定义一个类的概率分布,构成一个条件概率分布。
决策树的一条路径对应于划分中的一个单元,决策树表示的条件概率分布由各个单元给定条件下的类的条件概率分布组成。
决策树分类时将节点的实例强行分到条件概率最大的类中去。
特征选择
选择对训练数据具有分类能力的特征,提高决策树学习的效率。
信息增益
随机变量X的熵(entropy):
熵只依赖于X的分布,与X取值无关,故也可记为:
熵越大,随机变量的不确定性越大。可以验证:
随机变量X给定条件下随机变量Y的条件熵(conditional entropy)H(Y|X),定义为X给定下Y的条件概率分布的熵对X的期望:
当熵与条件熵由数据统计(特别是极大似然估计)得到时,分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)。
信息增益:
特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A在给定条件下D的经验条件熵H(D|A)之差:
一般地,上H(Y)和条件熵H(Y|X)之差称为互信息(mutual information)。决策树学习的信息增益等价于训练集中类与特征的互信息。
选择特征方法:对训练集D,计算每个特征的信息增益,比价大小,选择信息增益最大的特征。
设训练数据集为D,|D|表示样本容量。设有K个类为属于类的样本个数,。设特征A有n个不同的取值,根据特征A的取值将D划分为n个子集,|Di|为Di的样本个数,。记子集Di中属于类Ck的样本集合为,即, |Dik|是Dik的样本个数。
信息增益算法:
输入:训练数据集和特征A
输出:特征A对训练数据集D的信息增益g(D,A)
(1)计算数据集D的经验熵H(D)
(2)计算特征A对数据集D的经验条件熵H(D|A)
(3)计算信息增益
信息增益比
采用信息增益方法,存在偏向于选择取值较多的特征的问题。 使用信息增益比进行校正。
信息增益比:
特征A对训练数据集D的信息增益比定义为其信息增益对训练数据关于特征A的值的熵之比,即
其中,,n是特征A取值个数。
决策树的生成
ID3算法
输入:训练数据集D,特征集A阈值e
输出:决策树T
(1)若D中所有实例属于同一类Ck,则T为单节点树,并将类Ck作为该节点的类标记,返回T;
(2)若A = ∅,则T为单节点树,并将D中实例最大的类Ck作为该节点的类标记,返回T;
(3)否则,计算A中各特征对D的信息增益,选择特征信息增益最大的特征Ag;
(4)如果Ag的信息增益小于阈值e,则置T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;
(5)否则,对Ag的每一个可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点,由节点及其子节点构成数T,返回T;
(6)对第i个节点,以Di为训练集,{A - Ag}为特征集,递归电泳(1)~(5),得到子树Ti,返回Ti。
C4.5算法
输入:训练数据集D,特征集A阈值e
输出:决策树T
(1)若D中所有实例属于同一类Ck,则T为单节点树,并将类Ck作为该节点的类标记,返回T;
(2)若A = ∅,则T为单节点树,并将D中实例最大的类Ck作为该节点的类标记,返回T;
(3)否则,计算A中各特征对D的信息增益比,选择特征信息增益最大的特征Ag;
(4)如果Ag的信息增益比小于阈值e,则置T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;
(5)否则,对Ag的每一个可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点,由节点及其子节点构成数T,返回T;
(6)对第i个节点,以Di为训练集,{A - Ag}为特征集,递归电泳(1)~(5),得到子树Ti,返回Ti。
决策树的剪枝
决策树的剪枝往往通过极小化决策树整体损失函数或代价函数来实现。决策树生成学习局部的模型,决策树剪枝学习整体的模型。
设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有Nt个样本点,其中k类的样本点有Ntk个,k = 1,2,…,K,Ht(T)为叶节点t上的经验熵,\alpha>=0为参数,则损失函数定义为:
其中经验熵为:
在损失函数中,右端第一项可以记为:
有:
C(T)表示模型与训练数据的拟合程度,|T|表示模型复杂度,参数a >= 0控制两者之间的影响。a较大促使选择较简单的模型,较小选择较复杂的模型。
以上定义的损失函数极小化等价于正则化的极大似然估计,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。
决策树剪枝算法:
输入:生成算法产生的整个树T,参数a;
输出:修剪后的子树Ta。
(1)计算每个节点的经验熵
(2)递归地从树的叶节点向上回缩
设一组叶节点回缩到父节点之前与之后的整体树分别为和,其对应的损失函数值分别为和,如果:
则进行剪枝,即将父节点变为新的叶节点。
(3)返回(2),直到不能继续为止,得到损失函数最小的子树Ta。
注:剪枝过程只需在局部考虑两个子树的差,故可用动态规划实现。