决策树_ID3与C4.5与CART

基本组成部分

决策树顾名思义是一棵树。从决策树根节点向下遍历的过程,即是对待测数据不断检测的过程,最终的结果是走到一个叶子节点。

  • (非叶子)节点:每个决策节点都有一个样本集合 D D D,未划分属性集 A A A,以及用于分支的划分属性 a a a

    • 根节点的样本集合即为完整的训练集,属性集为所有属性的集合;

    • 对于不具有祖孙关系的树上节点,其样本集合的交集为空;对于具有祖孙关系的树上节点,儿子节点的样本集合 D ′ D' D 一定属于父节点的样本集合 D D D

    • 对于每个节点,在生成儿子节点(即分支)时,都要指派同一未划分属性 a ∈ A a \in A aA,按照属性 a a a v v v 个取值将当前节点的样本集合 D D D 划分成若干个子集 D 1 D^1 D1 D 2 D^2 D2 D v D^v Dv, 分别对应于 v v v 个儿子节点的样本集合, D i D^i Di 中的样本 x x x 满足 x ∈ D x \in D xD 并且 x x x 在属性 a a a 上的取值为 a a a 的第 i i i 种取值;

    • 由当前节点分支生成的儿子节点的未划分属性集 A ′ = A / a A' = A/a A=A/a

  • 叶子(节点):每个叶子节点代表着一种类别,若遍历到当前叶子节点,即代表待测数据属于该叶子节点代表的类别。


建树过程

见西瓜书“图 4.2 4.2 4.2 决策树学习基本算法”。

递归返回条件:

  • 当前节点包含的样本全属于同一类别,标记为该类别的叶子节点;
  • 当前节点属性及为空,或所有样本在所有属性上取值相同,标记为最多数类别的叶子节点;
  • 当前节点包含的样本集为空,标记为父节点种最多数类别的叶子节点。

最优划分属性的选择

三种方法,基本思想都是给定一个数据集纯度的定义,选择一个最优的划分属性,使得划分前后纯度更高。所谓纯度高,就是指分支节点包含的样本尽可能属于同一类别。

定义 p k p_k pk 为样本集合 D D D 中第 k k k 类样本所占的比例。

  • 信息增益( I D 3 ID3 ID3 算法所用)

    • 信息熵: E n t ( D ) = − ∑ k = 1 p k l o g 2 p k Ent (D) = -\sum_{k = 1} {p_klog_2p_k} Ent(D)=k=1pklog2pk E n t ( D ) Ent(D) Ent(D) 越小,代表 D D D 的纯度越高;
    • 信息增益: 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 a 划分后获得的“纯度提升”越大,所以使用信息增益时,要找到使得信息增益最大的属性来进行最优属性划分;
    • 缺点:对可取值数目较多的属性有所偏好。
  • 增益率( C 4.5 C4.5 C4.5 算法所用)

    • 增益率被定义为 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)} Gain_ratio(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。同信息增益,增益率越大,获得的“纯度提升”也越大;
    • 缺点:对可取值数目较少的属性有所偏好;
    • 实践原则:采用启发式做法,现筛选信息增益大于平均值的属性,再从中选择增益率最大的属性作为最优属性划分。
  • 基尼指数( C A R T CART CART 算法所用)

    • 基尼值: G i n i ( D ) = ∑ k = 1 ∑ k ′ ! = k p k p k ′ = 1 − ∑ k = 1 p k 2 Gini(D) = \sum_{k = 1}\sum_{k' != k}{p_kp_{k'}} = 1 - \sum_{k = 1}p_k^2 Gini(D)=k=1k!=kpkpk=1k=1pk2 G i n i ( D ) Gini(D) Gini(D) 越小,代表样本集合 D D 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 v v v 种取值的;如果属性 a a a 的取值是连续值,则不能按照先前的方法分支,此时我们采用二分法( C 4.5 C4.5 C4.5 算法采用的机制)。

  • 对于划分属性 a a a,指定一个分界值 t t t,将样本集合 D D D 划分成两类 D 1 D_1 D1 D 2 D_2 D2,其中 D 1 D_1 D1 中样本 x x x 满足 x ∈ D x \in D xD 并且 x x x 在属性 a a a 上的取值小于等于 t t t;自然的, D 2 D_2 D2 中的样本满足大于 t t t

  • 显然,此时的决策树变成了一棵二叉树;

  • 对于分界值 t t t 的选择,首先定义数列 a i a_i ai 表示样本集合 D D D 中所有样本在属性 a a a 上的取值,且满足递增。显然,对于两个相邻的值 a i a_i ai a i + 1 a_{i + 1} ai+1 t t t 满足 a i ≤ t < a i + 1 a_i \leq t < a_{i + 1} ait<ai+1 时对样本集合的划分结果时一样的。不妨令 t = a i + a i + 1 2 t = \frac {a_i + a_{i + 1}}{2} t=2ai+ai+1,那么对于属性 a a a,所有可选的 t t t 的值用集合 T a T_a Ta 来表示就是 T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } T_a = \{\frac {a_i + a_{i + 1}}{2}|1 \leq i \leq n - 1\} Ta={2ai+ai+1∣1in1},其中 n n n 是数列 a i a_i ai 的长度。

  • 最优划分属性的选取原则修改为(以信息增益为例):
    G a i n ( D , a ) = m a x t ∈ T a G a i n ( D , a , t ) = m a x t ∈ T a E n t ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) Gain(D, a) = \underset{t \in T_a}{max} \quad Gain(D, a, t) = \underset{t \in T_a}{max} \quad Ent (D) - \sum_{\lambda\in \{-, +\}}\frac {|D_t^\lambda|}{|D|}Ent (D^\lambda_t) Gain(D,a)=tTamaxGain(D,a,t)=tTamaxEnt(D)λ{,+}DDtλEnt(Dtλ)
    类别变成了两种,遍历每种 t t t 的取值,找令 G a i n ( D , a ) Gain(D, a) Gain(D,a) 最大的 t t t;若后期选用了该属性进行划分,则对应的 t t t 就是这里求得的令 G a i n ( D , a ) Gain(D, a) Gain(D,a) 最大的 t t t

  • 与离散属性不同,若当前节点划分属性为连续属性,该属性还可作为其后代节点的划分属性。


基于 C A R T CART CART 的最小二乘回归树生成算法

用于处理连续值的,最小二乘回归用于选择最优划分属性和分界值。作用同上述中提到了信息增益、增益率、基尼指数,都是让一个函数值最大或最小,只是这里套了最小二乘回归的函数。

另外还有个区别是,划分类别转化成了数值。具体见姬老师 P P T PPT PPT

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值