日食三餐夜眠六尺

导航

决策树原理总结

概述

  • 什么是决策树?
  • 最优划分属性(离散型)的选择
  • 决策树的过拟合处理
  • 连续属性处理

1. 什么是决策树?

  • 决策树通常用于分类预测问题,我们希望从给定的训练集学得一个模型用以对新示例进行分类。

  • 决策树由根结点至叶结点逐步生成,在生成过程中,主要解决两个问题

    ① 每步中最优划分属性的选择;

    ② 如何对最优划分属性进行划分(对于取值有限的离散型属性,可以直接根据属性值对样本进行划分;而连续属性则需要确定划分点),它属于“分而治之”策略。

  • 一棵决策树包含一个根节点、若干内部结点和若干叶节点。其中根节点和内部节点对应一个属性判断,叶节点对应判断的果。

  • 优点:计算复杂度不高,输出结果易于理解,对中间的缺失值不敏感,可以处理不相关属性数据;

  • 缺点:可能会产生过度匹配问题;

  • 适用数据类型:数值型和属性型。

2. 最优划分属性(离散型)的选择

有以下三种准则是用于最优划分属性的选择,它们都是在信息熵的基础上提出的,接下来我们首先介绍下信息熵的概念。

(0) 信息熵

信息熵(information entropy)是度量样本集合纯度的常用统计量。对于包含\(K\)类样本集合D,第\(k(k=1,\cdots,K)\)类样本所占比例为\(p_k\),则样本集合D对应的信息熵为

\[Ent(D)=-\sum_{k=1}^Kp_k\log_2(p_k). \]

\(Ent(D)\)越小,表示样本集合D的纯度越高,反之,说明集合D不确定性越大。

(1) 信息增益(ID3算法)

将集合D按照属性\(a\)(有V种取值)划分成V个子集,\(D^v(v=1,\cdots,V)\),则集合划分前的信息熵与划分后子集信息熵总和之间的差值称为属性\(a\)对集合D划分所获得的信息增益,考虑到各划分子集样本数量可能不一样,分别赋予各子集不同的权重\(|D^v|/|D|\),记作

\[Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v). \]

\(Gain(D,a)\)越大表示使用属性\(a\)划分所带来的“纯度提升”越大,即“不确定性降低幅度“越大。于是,对于待选属性集\(A\),最优划分属性为

\[a^*=\arg\max_{a\in A}Gain(D,a). \]

(2) 增益率(C4.5算法)

信息增益准则对可取值数目较多的属性有所偏好,比如将样本编号列也看做是样本的一个属性,那么该属性的信息增益必然是最大。为减小这种偏好所带来的不利影响,可采用增益率准则

\[Gain_{\_}ratio(D,a)=\frac{Gain(D,a)}{IV(a)}, \]

其中

\[IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|} \]

称为属性\(a\)的固有值(intrinsic value),\(a\)的取值数目越多,则\(IV(a)\)通常会越大。则最优划分属性为

\[a^*=\arg\max_{a\in A}Gain_{\_}ratio(D,a). \]

注意到,增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的属性,而是使用一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

(3) 基尼指数(CART算法:classification and regression tree)

类比于信息熵的概念,我们引出基尼值\(Gini\)的概念,它表示从集合D中随机抽取的两个样本属于不同类的概率

\[Gini(D)=1-\sum_{k=1}^Kp_k^2 \]

\(Gini(D)\)越小,表示样本集合D的纯度越高。于是属性\(a\)的基尼指数定义为,即各子集基尼数的加权和

\[Gini_{\_}index(D)=\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v) \]

则最优划分属性为

\[a^*=\arg\max_{a\in A}Gini_{\_}index(D,a). \]

3. 决策树的过拟合处理

在整个训练过程中,为尽可能正确地将训练样本分类,通常会造成决策树的分支过多,需要修剪掉一些枝以降低过拟合风险。如何判断树枝(结点)是否需要被修剪,原则是使得决策树的泛化性能提升,可利用预留出的测试样本来评估泛化性能。有预剪枝后剪枝两种剪枝策略:

  • 预剪枝:指在决策树生成过程中,对每个结点在划分前先进行评估,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将其作为叶结点。
  • 后剪枝:指先从训练集生成一棵完整的决策树,然后自下而上地对非叶结点进行评估,若该结点对应地子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

预剪枝不仅可以降低过拟合风险,还能显著减少决策树的训练和测试时间;但当前不能提升泛化性能的分支有可能在其基础上进行的后续划分导致性能显著提高;预剪枝基于”贪心“本质禁止这些分支展开,给决策树带来了欠拟合的风险。

后剪枝决策树通常比预剪枝决策树保留了更多的分支,其欠风险相对也会小些,泛化性能往往由于预剪枝决策树;但其训练时间会多于预剪枝决策树。

4. 连续属性处理

对于连续型属性,常将其离散化,采用二分法进行属性的划分。假设连续属性\(a\)在样本集合D中出现了n个不同的取值,将其从小到大排序\(\{a_1,\cdots,a_n\}\),取相邻两个值之间的中点作为待划分点,对应的带划分点集为

\[T_a=\{\frac{a_i+a_{i+1}}{2}|1\leq i \leq n-1\} \]

于是,我们就可以像离散变量一样的方式计算连续属性的信息增益

\[Gain(D,a)=\max_{t\in T_a}Gain(D,a,t)= Ent(D)-\max_{t\in T_a}\sum_{\lambda\in\{-,+\}}\frac{|D_t^{\lambda}|}{|D|}Ent(D_t^{\lambda}). \]

posted on 2020-05-17 21:56  chenxiaoyuan  阅读(457)  评论(0)    收藏  举报