决策树

  决策树通常用于分类和回归,也是非常常用的数据挖掘算法。决策树的训练任务就是从数据中提取出一系列的规则,可以认为是if-then规则的集合对应树的结构,内部结点表示属性,叶结点表示类,每个实例对应一条从根结点到叶结点的路径;也可以认为是定义在特征空间与类空间上的条件概率分布,一条路径对应空间划分中的一个单元。

  决策树的学习方法包括ID3, C4.5, CART。决策树学习的损失函数通常是正则化的极大似然函数,损失函数确定以后,学习问题变为了在损失函数意义下选择最优决策树的问题。能对训练数据正确分类的决策树可能有很多个,也可能一个都没有。需要选择与训练数据矛盾最小的树,若过拟合再进行剪枝,使最终的模型具有很好的泛化能力。

1. 特征选择

  构造决策树时需要解决的第一个问题是,当前数据集上哪个特征在划分数据分类时取决定性作用,所以必须评估每个特征找到决定性特征。在根据特征划分数据集的时候,主要原则是将无序的数据变得有序,通常采用信息论度量信息。这里给出一些重要的定义:
(1)信息:
  若X是一个取有限个值的离散随机变量,其概率分布为 P(X=xi)=pi 。待分类的事物可能划分在多个类中,则 xi 的信息定义为:

l(xi)=log2pi
(2)熵Entropy:
  信息的期望值,是集合信息的度量方式,定义为
H=i=1npilog2pi
其中n为分类的数目。
(3)信息增益information gain:
  数据集划分前后信息发生的变化。对于训练数据集和特征A,信息增益的算法为:
S1 计算数据集D的经验熵:
H(D)=k=1k|Ck||D|log2|Ck||D|
S2 计算特征A对数据集D的经验条件熵:
H(D|A)=i=1n|Di||D|H(Di)=i=1n|Di||D|k=1K|Dik||Di|log2|Dik||Di|
S3 计算信息增益:
g(D,A)=H(D)H(D|A)
(4)信息增益比information gain ratio:
  特征A对训练数据集D的信息增益比 gR(D,A) 定义为其信息增益与训练集关于特征A的熵之比:
gR(D,A)=g(D,A)HA(D)

2. ID3算法

  ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。ID3相当于用极大似然法进行概率模型的选择。ID3算法构建决策树的步骤如下:
输入:训练集D,特征集A,阈值 ϵ .
(1)若D中所有实例属于同一类 Ck ,则T为单结点树,并将 Ck 作为该结点的类标记,返回T;
(2)若 A=ϕ ,则T为单结点树,并将D中实例数最大的类 Ck 作为该结点的类标记,返回T;
(3)else,计算A中各特征对D的信息增益,选择信息增益最大的特征A;
(4)如果 Ag 的信息增益小于阈值 ϵ ,则置T为单结点树,并将D中实例数最大的类 Ck 作为该结点的类标记,返回T;
(5)else,对 Ag 的每一个可能值 ai ,按照 Ag=ai 将D分割为若干非空子集 Di ,将 Di 中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T并返回T;
(6)对第i个子结点,以 Di 为训练集,以 A{Ag} 为特征集,递归调用步骤(1)~(5),得到子树 Ti 并返回子树。

3. C4.5算法

  C4.5算法与ID3算法类似,只是C4.5在生成结点的过程中采用信息增益比来选择特征。这是因为以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题,而使用信息增益比可以对这一问题进行校正。

4. 剪枝pruning

  剪枝就是从已经生成的决策树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而将已经生成的树进行简化。
  剪枝通常是通过极小化树整体的损失函数或代价函数来实现。设树T的结点个数为|T|,t是树的叶结点,该叶结点有 Nt 个样本点,其中k类的样本点有 Ntk 个, Ht(T) 为叶结点t上的经验熵。则决策树学习的损失函数可以定义为:

Cα(T)=C(T)+α|T|
其中
C(T)=t=1|T|NtHt(T)=t=1|T|k=1KNtklogNtkNt
C(T) 表示模型对训练数据的预测误差,即模型与训练数据的拟合程度, |T| 表示模型复杂度, α 为两者之间的权重。当 α 确定的时候,子树越大通常与训练数据拟合越好,但是模型复杂度越高;反之,子树越小,模型的复杂度越低,但是与训练数据的拟合不好。
  剪枝就是当 α 确定的时候选择损失函数最小的模型,即损失函数最小的子树。以下为树的剪枝算法,该算法可用动态规划实现:
输入:整个树T,参数 α
输出:修剪后的子树 Tα .
(1)计算每个结点的经验熵;
(2)递归地从树的叶结点向上回缩。设一组结点回缩到其父结点之前与之后的整体树分别为 TB TA ,其对应的损失函数值分别是 Cα(TB) Cα(TA) 。如果
Cα(TA)Cα(TB)
则进行剪枝,即将父结点变为新的叶结点;
(3)返回(2),直至不能继续为止,得到损失函数最小的子树 Tα .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值