经典决策树算法:ID3、C4.5和CART

ID3:

ID3(Iterative Dichotomiser 3) 是一种基本的决策树算法。它可用于对只含离散属性的样本集的分类任务。ID3每次根据信息增益选择最佳划分属性,基于样本该属性值的不同,把样本划分到不同的子结点。任意两个叶结点包含的样本不重叠,所有叶结点包含的样本构成完整训练样本集。

算法步骤
1.计算属性集中每个属性对应的信息增益。选择最大信息增益对应的属性为当前结点的分割属性。
2.根据训练样本在分割属性上属性值的不同,把训练样本划分到不同的分支结点中。并从属性集中去掉当前分割属性。
3.判断每个分支结点是否满足终止条件,对每个不满足终止条件的分支结点重复步骤1和2。

终止条件:

  • 分支结点中所有训练样本都属于同一类
  • 当前属性集为空,或所有训练样本在所有属性上取值相同,则将该结点类别设定为样本最多的类别
  • 分支结点为空,则将其类别设定为父节点样本最多的类别

熵、信息增益和信息增益比:
1.熵:
熵表示随机变量的不确定性。熵越大,则随机变量的不确定性越大。对于离散变量,变量的取值可能越多,每个取值的概率越接近,则熵越大。

P(X=xi)=pi,i=1,2,...,n.

则熵
H(X)=i=1npilog1pi=i=1npilogpi

条件熵
H(Y|X)=i=1npiH(Y|X=xi)

2.信息增益与信息增益比
(1).符号:
D={(xn,yn)|n=1,2,...,N} :训练样本集
{Yi|i=1,...,S} :所有样本y值的集合
{Aj|j=1,...,K} :所有样本属性A取值的集合
Di :所有y值等于 Yi 的训练集
Dj :所有属性A值为 Aj 的训练集
Dij :所有y值为 Yi 且属性A值为 Aj 的训练集合
|D| :样本集D中包含的样本个数

(2).已知数据集y值,求数据集的熵

H(D)=i=1S|Di||D|log2|Di||D|

(3).已知特征A和y值,求数据集的熵
H(D|A)=j=1K|Dj||D|H(|Dj|)=j=1K|Dj||D|i=1S|Dij||Dj|log2|Dij||Dj|

(4).特征A的信息增益
特征A的信息增益等于已知y值时数据集的熵减去已知特征A和y值时数据集的熵
gain(D,A)=H(D)H(D|A)

(5).特征A的信息增益比
特征A的信息增益比等于特征A的信息增益除以特征A已知而y值未知时数据集的熵
ratio=gain(D,A)H(A)

其中
H(A)=j=1K|Dj||D|log2|Dj||D|

ID3的缺点

ID3根据信息增益来选择划分属性。这种策略倾向于选择类别多的属性。直观来说,属性的类别越多,则平均来说每个属性类别下的目标类别越少,不确定性也就越小,该属性类别下的熵也就越小。加权之和也就越小。因此该属性的信息增益也就越大。
举个极端的例子,假设属性A有和样本数量一样的类别数目,即每个样本都有不同的A属性值,根据条件熵的计算公式,划分后的数据集熵为

H(D|A)=j=1KP(A=Aj)H(Y|A=Aj)

由于每个满足 A=Aj 的数据集只含一个样本,故根据熵的计算公式,有
H(Y|A=Aj)=i=1Spilog1pi=i=111log11=1×log1=0

所以 H(D|X)=0 。熵取值范围大于等于零,故选择X作为划分属性得到的熵最小,X的信息增益最大。但是很明显X并不适合作为一个划分属性。

C4.5

为了改进ID3,Quinlan提出了C4.5算法。与ID3采用信息增益作为选择划分属性的依据不同,C4.5采用信息增益比作为划分依据。此外,C4.5还增加了对连续值的处理。

连续值处理:
假设X为一个连续属性, {x1,x2,...xn} 为X中所有取值的有序集合。则 {si=xi+xi+12|i=1,2,...,n1} 为X取值的二分点集合。
定义 Di 为所有X值小于等于 si 的数据集, Di¯ 为所有X值大于 si 的数据集。
则已知X时数据集的熵为

H(D|X)=mini{|Di||D|H(D|Di)+|Di¯||D|H(D|Di¯)}

由此可以定义连续值X的信息增益和信息增益比。
值得注意的是,与离散值最多只能一次作为划分属性不同,连续值可以多次作为划分属性。
缺失值处理:
面对缺失值,ID3只是简单的忽略缺失值,而C4.5采取不同的做法。
设定每个样本x的初始权重 wx 为1. 在涉及样本个数或比例的地方都用权重计算。

1.若在计算属性的信息增益比时,某些训练样本在该属性有缺失值:
X 为去除缺失值后属性X的集合, D 为去除在属性X下有缺失值的样本后的数据集。则X的信息增益定义为:

gain(D,X)=|D||D|gain(D,X)

2.在划分样本时,若样本在改划分属性下无缺失值,则划入对应子结点,权重不变。若样本在划分属性下有缺失值,则将样本划入所有子结点,并更新权重。设某个子结点中的非缺失样本占所有非缺失样本比例为 r ,则更新该结点中每个缺失值样本的权重为wx=rwx.

3.在预测样本类别时,采用和2中同样的方法分配样本及更新权重。最终采用样本所在的所有叶结点类别的加权平均,权重为样本在各叶结点下的权重。

CART:

CART(classification and regression) 即分类与回归树。顾名思义,CART即可用于回归也可用于分类。CART适合处理连续变量和二元离散变量。对于二元以上的离散变量,可采用one-hot encoding方法转化成二元变量。
与ID3和C4.5不同,CART为二叉树,每个内部结点只有两个子节点。故CART等价于把特征空间划分成有限个单元,用每个单元的y值预测分布。

CART构造的两步:
1.决策树生成:基于训练样本集生成决策树,生成的决策树要尽量大;
2.决策树剪枝:用验证数据集对已经生成的树进行剪枝,并选择最优子树。

回归树:
回归树中每个叶节点 Rm 的输出值 cm^ 定义为该节点上所有训练样本y值的平均,即 cm^=avg(yi|xiRm)

回归树选择划分属性及划分点的步骤类似于C4.5选择连续属性,只是不再用信息增益比,而是用训练平方误差。

对于第j个变量 x(j) 和切分点s,定义两个区域:

R1(j,s)={x|x(j)s}R2(j,s)={x|x(j)>s}

x(j) 对应的训练平方误差为:
Lj=mins[xiR1(j,s)(yic1^)2+xiR2(j,s)(yic2^)2]

其中 c1^=avg(yi|xiR1(j,s)),c2^=avg(yi|xiR2(j,s))
选择训练平方误差最小的属性作为当前划分属性。

回归树的生成步骤与C4.5类似,只是回归树采用平方误差作为选择划分属性依据。

分类树:
分类树则采用基尼指数来选择划分属性及划分点。

设D为数据集, pi 为y中第i个类所占的样本比例。则数据集的基尼指数定义为:

Gini(D)=i=1Kiipipi

已知二元属性X时,数据集的基尼指数定义为:

Gini(D|X)=k=12|Dk||D|Gini(Dk)

对于连续属性,选择最佳切分点对应的基尼指数作为该属性的基尼指数。选择基尼指数最小属性为划分属性。

分类树的生成步骤也与C4.5类似,只是分类树在选择划分属性时以基尼指数为依据。

在处理缺失值时,CART采用和C4.5相同的做法。

剪枝:
大多数决策树模型都存在过拟合的风险。剪枝(pruning)是降低过拟合风险的一种很好的策略。根据剪枝时间点的不同,可将剪枝分为预剪枝(prepruning)和后剪枝(postpruning)。

1.预剪枝:
预剪枝是在树模型构建的过程中利用测试集预测精度进行剪枝。每次划分一个新结点时,对比划分前后在测试集上的预测精度,若精度提升则划分,否则不划分。

2.后剪枝:
后剪枝是在树模型构建完成后利用测试集预测精度进行剪枝。先生成一棵完整的决策树,从底层非叶结点开始,若将该结点替换成叶结点可以提升预测精度则剪枝,否则不剪。逐层往上比较,直至比较过根节点。

两种剪枝法的优缺点:
预剪枝:
降低过拟合风险,由于某些结点的后续分支在训练前就被剪掉,因此可以显著减少训练时间,但是也正是由于后序分支的预测精度未被比较就剪掉了,存在这种情况:虽然当前结点泛化性能差,但是后序分支的泛化性能却极好。预剪枝忽略了这些好的情况,所以存在欠拟合的风险。

后剪枝:
欠拟合风险小,泛化能力往往优于预剪枝。但是训练时间开销比未剪枝和预剪枝大。

对比总结:

1.划分属性的选择依据上来说:
ID3采用信息增益作为选择依据
C4.5采用信息增益比作为选择依据
CART采用平方误差和基尼指数

2.属性值的适用范围来说:
ID3只适用于离散属性
C4.5和CART适用于离散和连续属性

3.对缺失值处理来说:
ID3简单地忽略缺失值,因此对缺失值敏感
C4.5和CART采取对含缺失值样本加权的做法把样本划分到所有子节点。因此对缺失值不敏感。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值