决策树

本文深入解析决策树模型结构与决策过程,详细阐述信息增益、增益率概念及其在属性选择中的应用,并对比分析ID3与C4.5算法的优劣,探讨C4.5算法对连续值的处理方法。

李宏毅第八次打卡

决策树

《李航统计学习》

首先是决策树的模型结构:将数据的属性值作为一个个的结点,根据输入数据的结点的不同的值进入不同的子树,然后到最后判断出结构来。

决策树是通过递归产生结点的:

输入:训练集 $D = KaTeX parse error: Expected '}', got 'EOF' at end of input: {(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)$}

   属性集:$A = KaTeX parse error: Expected '}', got 'EOF' at end of input: {a_1,a_2,\dot , a_d$};

过程:函数TreeGenerate(D,A)

  1. 生成结点node;
  2. if D 中样本权属于同一个类别C then
  3.   将node标记为C类叶结点;return
  4. end if
  5. if A = ∅ A = \emptyset A= OR D中样本在A上的取值相同 then
  6.   将node标记为叶结点,其类别标记为D中样本数组多的类;return
  7. end if
  8. 从A中选择最优化分属性 a ∗ a_* a;
  9. for $ a_* $
  10.   的每一个值 $ a_{*}^v$ do
  11.   为node生成一个分支;令 D v D_v Dv表示D中在 a ∗ a_* a上取值为
  12.                              a ∗ v a_*^v av的样本子集
  13.   if D v D_v Dv为空,then
  14.     将分支结点标记为叶结点,其类别标记为D中样本最多的类;return
  15.   else
  16.     以$TreeGenerate(D_v,a $ \ { a ∗ a_* a}$ )$为分支结点
  17.   end if
  18. end for

输出: 以node为根的一颗决策树

三种情形导致递归返回

  • 1.当前结点包含的样本全属于同一个类别,无需划分
  • 2.当前属性集为空,或是所有样本在所有属性上取值相同,无法划分
  • 3.当前结点包含的样本集合为空,不能划分。

信息增益

信息熵(information entropy),度量纯度的最常用的一种指标。

  • D:样本集合
  • p k p_k pk第k类样本所占的比例(k = 1,2,……,|y|)

E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D) = -\sum_{k=1}^{|y|}pklog_2p_k Ent(D)=k=1ypklog2pk

Ent(D)的值越小纯度越高

假设离散属性a有V个可能的取值{ a 1 , a 2 , … , a V a^1,a^2,\dots , a^V a1,a2,,aV},如果使用a来对样本集进行划分,那么将会产生V个分支结点,第v个分支结点包含了D中所有在属性a上取值为 a v a^v av的样本,记为 D v D^v Dv,考虑到不同的分支结点锁包含的样本数不同,给分支结点赋予权重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv,即样本数越多的分支结点的影响越大,此时可计算出用属性a对样本集D进行划分所获得的“信息增益”(information gain)

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)

一般而言信息增益越大,意味着使用属性a进行划分的纯度越高,所以可以使用信息增益来进行决策树的划分属性选择,即选择

a ∗ = arg ⁡ min ⁡ a ∈ A    G a i n ( D , a ) a_{*} = \mathop{\arg\min}_{a \in A} \ \ Gain(D,a) a=argminaA  Gain(D,a)

信息增益率

信息增益对于取值数目比较多的属性有多偏好,为了减少这种偏好带来的不利影响,C4.5决策算法不直接使用信息增益而是直接使用“增益率”(gain ratio)来选择最优的划分。

G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain_ratio(D,a) = \frac{Gain(D,a)}{IV(a)} Gainratio(D,a)=IV(a)Gain(D,a)

其中

I V ( a ) = − ∑ v = 1 V ∣ D v ∣ D l o g 2 D v D IV(a) = -\sum_{v=1}^V \frac{|D^v|}{D}log_2\frac{D^v}{D} IV(a)=v=1VDDvlog2DDv

被称为a的“固有值”(intrinsic value),属性a的可能取值数目越多(也就是V越大),则IV(a)的值通常越大。

增益率可能对数目比较少的有所偏好。所以C4.5不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

ID3算法的优缺点

我们都知道ID3算法是根据某个属性的纯度来进行选择的,但是信息增益对于取值数目比较多的属性有多偏好

C4.5算法优缺点

这个算法是根据增益率来进行划分,而增益率可能对数目比较少的有所偏好。所以C4.5不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。这也弥补了对数目比较少的偏好的缺点。

C4.5算法对于ID3算法的提升。

首先是C4.5采用了增益率而不是ID3的单纯的信息增益,这个可以避免信息增益对于取值数目比较多的属性的偏好的问题,而同时在使用信息增益率的时候也不是直接选择最高的而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

C4.5对于连续值上的处理

在这里其实是对连续的数值进行分段,然后再进行处理。

一份样例的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值