决策树总结

决策树的定义和示例见西瓜书P73~P74,下面主要介绍决策树的构造算法:

信息熵

信息熵是衡量样本集合纯度最常用的一种指标。假定当前样本集合 D D D 中第 k k k 类样本所占比例为 p k ( k = 1 , 2 , ⋯   , ∣ γ ∣ ) p_k(k=1,2,\cdots,|\gamma|) pk(k=1,2,,γ) ,那么 D D D 的信息熵为:
E n t ( D ) = − ∑ k = 1 ∣ γ ∣ p k l o g 2 p k Ent(D) = - \sum_{k=1}^{|\gamma|} p_k log_2 p_k Ent(D)=k=1γpklog2pk
E n t ( D ) Ent(D) Ent(D) 越小,则 D D D 纯度越高。

构造算法

ID3

G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D, a) = Ent(D) - \sum_{v=1}^V \frac{|D^v|}{|D|} Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

V V V 表示属性 a a a 的取值范围。信息增益越大,表示使用属性 a a a 进行划分所获得的“纯度提升”越大。

根据 ID3 算法的核心思想,只要在每次决策树非叶子节点划分之前,计算出每一个属性所带来的信息增益,选择最大信息增益的属性来划分,就可以让本次划分更优,因此整个 ID3 实际上是一个贪心算法。

以西瓜数据集2.0来说,“纹理”的信息增益最大,于是它被选为划分属性。后续对其它属性进行特征选择。

C4.5

C4.5 对 ID3 算法最大的改进就是在获取最优分类特征的时候,将 ID3 所使用的信息增益换成了信息增益比。

如果我们将每个西瓜样本的“编号”作为候选划分属性,那么它的信息增益最大。因为“编号”将产生17个分支,每个分支仅包含一个样本,这些分支结点的纯度达到最大。但这样的决策树不具有泛化能力,无法对新样本有效预测。

实际上,信息增益准则对取值较多的属性有所偏好,为了减少这种偏好带来的不利影响,C4.5采用“增益率”来选择最优划分属性:
G a i n _ r a t i o = G a i n ( D , a ) I V ( a ) I V ( a ) = − ∑ v = 1 V D v D l o g 2 D v D Gain\_ratio = \frac{Gain(D,a)}{IV(a)} \\ IV(a) = -\sum_{v=1}^V \frac{D^v}{D} log_2 \frac{D^v}{D} Gain_ratio=IV(a)Gain(D,a)IV(a)=v=1VDDvlog2DDv

I V ( a ) IV(a) IV(a) 称为属性 a a a 的“固有值”。 V V V 越大, I V ( a ) IV(a) IV(a) 越大。

需注意的是,增益率对 V V V 较小的属性 a a a 有所偏好。因此,C4.5算法并不直接选择增益率最大的候选划分属性,而使用了一个启发式策略:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

CART

CART决策树使用“基尼指数”来选择划分属性。数据集 D D D 的纯度可用基尼值来度量:
G i n i ( D ) = ∑ k = 1 ∣ γ ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ γ ∣ p k 2 Gini(D) = \sum_{k=1}^{|\gamma|} \sum_{k' \ne k} p_k p_{k'} = 1 - \sum_{k=1}^{|\gamma|} p_k^2 Gini(D)=k=1γk=kpkpk=1k=1γpk2
直观来说, G i n i ( D ) Gini(D) Gini(D) 反映了从数据集 D D D 中随机抽取两个样本,其类别标记不一致的概率。因此, G i n i ( D ) Gini(D) Gini(D) 越小,则数据集 D D D 的纯度越高。

属性 a a a 的基尼指数定义为:
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a) = \sum_{v=1}^V \frac{|D^v|}{|D|} Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)
在候选属性集合 A A A 中,选择那个使得划分后基尼指数最小的属性作为最优划分属性,即 a ∗ = a r g m a x a ∈ A G i n i _ i n d e x ( D , a ) a_{*} = argmax_{a \in A} Gini\_index(D,a) a=argmaxaAGini_index(D,a)


参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值