决策树

作者: sumpig | 来源:发表于2019-02-20 22:06 被阅读0次

决策树是一种基本的 分类回归 方法。
学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。
决策树学习通常包括3个步骤:特征选择决策树的生成决策树的修剪
相关算法实现有 ID3,C4.5,CART。


一、模型

用决策树分类,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时,每一个子结点对应着改特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点。最后将实例分到叶节点的类中。

决策树学习的损失函数通常是正则化的极大似然函数。


二、特征选择

如果一个特征具有更好的分类能力,使得各个子集在当前条件下有最好的分类,那么就应该选择这个特征。信息增益 就能够很好地表示这一直观的准则。

信息增益

理解信息增益,需要先理解 条件熵 的定义。

熵(entropy)是表示变量不确定性的度量。

设 X 是一个取有限个值的离散随机变量,其概率分布为
P(X=x_i)=p_i,i=1,2,...,n
则随机变量 X 的熵定义为
H(X)=-\sum_{i=1}^np_ilogp_i
上式中以 2 为底或以 e 为底,这时熵的单位分别称作比特或纳特。

熵越大,随机变量的不确定性就越大。

设有随机变量(X,Y),其联合概率分布为
P(X=x_i,Y=y_j)=p_{ij}, i=1,2,...,n; j=1,2,...,m
条件熵 H(Y|X) 表示在已知随机变量 X 的条件下随机变量 Y 的不确定性。H(Y|X)=\sum^n_{i=1}p_iH(Y|X=x_i)
这里,p_i=P(X=x_i),i=1,2,...,n.

信息增益 表示得知 特征X 的信息而使得 类Y 的信息的不确定性减少的程度。

特征A 对训练数据集 D 的信息增益 g(D,A), 定义为 集合D的经验熵 H(D) 与特征A给定条件下D的经验条件熵 H(D|A) 之差,即
g(D,A)=H(D)-H(D|A)

根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

信息增益的算法

设训练数据集为 D|D| 表示其样本容量。
设有 K 个类 C_k|C_k| 表示为属于类 C_k 的样本个数,k=1,2,...,K
设特征 An 个不同的取值,根据特征 A 的取值将 D 分为 n 个子集 D_1,D_2,...,D_n|D_i|D_i 的样本个数。
子集 D_i 中属于 C_k 的样本的集合为 D_{ik}|D_{ik}|D_{ik} 的样本个数。

(1) 计算数据集 D 的经验熵 H(D)
H(D)=-\sum^K_{k=1}\frac{|C_k|}{D}log_2\frac{|C_k|}{D}

(2) 计算特征 A 对数据集 D 的经验条件熵 H(D|A)
H(D|A)=\sum^n_{i=1}\frac{D_i}{D}H(D_i)=-\sum^n_{i=1}\frac{D_i}{D}\sum^K_{k=1}\frac{D_{ik}}{D_i}log_2\frac{|D_{ik}|}{|D_i|}
其中 H(D_i)
H(D_i)=-\sum^K_{k=1}\frac{D_{ik}}{D_i}log_2\frac{|D_{ik}|}{|D_i|}

(3) 计算信息增益
g(D,A)=H(D)-H(D|A)

信息增益比

特征 A 对训练数据集 D 的信息增益比 g_R(D,A) 定义为其信息增益 g(D,A) 与训练数据集 D 的经验熵 H(D) 之比:
g_R(D,A)=\frac{g(D,A)}{H(D)}


三、决策树的生成

ID3 算法

ID3 算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策空间。

ID3 算法只有树的生成,容易产生过拟合。

C4.5 算法

C4.5 算法对 ID3 算法做了改进,C4.5 在生成过程中,用信息增益比来选择特征。


四、决策树的剪枝

剪枝是决策树算法对付 过拟合 的主要方法。基本策略有 预剪枝后剪枝

预剪枝

预剪枝是指在决策树生成过程中,对每个结点在划 分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
预剪枝降低了过拟合的风险,显著减少了决策树的训练时间开销和测试时间开销,但可能带来欠拟合的风险 。

后剪枝

后剪枝则是先从训练集生成一棵完整的决策树, 然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树.但其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

剪枝往往通过极小化决策树整体的损失函数来实现。

设树 T 的叶结点个数为 |T|t 是树 T 的叶节点,该结点有 N_t 个样本点,其中 k 类的样本点有 N_tk 个,k=1,2,...,KH_t(T) 为叶结点 t 上的经验熵,a \ge 0 为参数,则决策树学习的损失函数可以定义为
C_a(T)=\sum^{|T|}_{t=1}N_tH_t(T)+a|T|
其中经验熵为
H_t(T)=-\sum_k\frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t}
在算是函数中,令
C(T)=-\sum^{|T|}_{t=1}\sum_{k=1}^KN_{tk}log\frac{N_{tk}}{N_t}
这时有
C_a(T)=C(T)+a|T|

上式中,C(T) 表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T| 表示模型复杂度。参数 a \ge 0 控制两者之间的影响。较大的 a 促使选择较简单的模型,较小的 a 促使选择较复杂的模型。a=0 意味着只考虑模型与训练数据的拟合程度,不考虑模型复杂度。

树的剪枝算法

(1) 计算每个结点的经验熵。
(2) 递归的从树的叶结点向上回缩。
设一组叶结点回缩到其父结点之前与之后的整体树分别为 T_BT_A,其对应的损失函数值分别是 C_a(T_B)C_a(T_A),如果
C_a(T_A) \le C_a(T_B)
则进行剪枝,即将父结点变为新的叶结点。
(3) 返回 (2) 。直至不能继续为止,得到损失函数最小的子树 T_a


五、CART 算法

CART 算法由以下两步组成:
(1) 决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大。
(2) 决策树剪枝:用于验证数据集对已生成的数进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

分类树的生成

分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。

基尼指数

分类问题中,假设有 K 个类,样本点属于第 k 类的概率为 p_k,则概率分布的基尼指数定义为
Gini(p)=\sum^K_{k=1}p_k(1-p_k)=1-\sum^K_{k=1}p^2_k

对于给定的样本集合 D,其基尼指数为
Gini(D)=1-\sum^K_{k=1}(\frac{|C_k|}{D})^2
这里,C_kD 中属于第 k 类的样本子集,K 是类的个数。

如果样本集合 D 根据特征 A 是否取某一可能值 a 被分割成 D_1 和 D_2 两部分,则在特征 A 的条件下,集合 D 的基尼指数定义为
Gini(D,A)=\frac{|D_1|}{D}Gini(D_1)+\frac{|D_2|}{D}Gini(D_2)

基尼指数 Gini(D,A) 表示经 A=a 分割后集合 D 的不确定性。基尼指数值越大,样本集合的不确定性就越大。

CART 生成算法

(1) 设结点的训练数据集为 D,计算现有特征对该数据集的基尼指数。此时,对每一个特征 A,对其可能取的每个值 a,根据样本点对 A=a 的测试为“是”或“否”将 D 分割成 D_1D_2 两部分,计算 A=a 时的基尼指数。
(2) 在所有可能的特征 A 以及它们所有可能的切分点 a 中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。
(3) 对两个子结点递归地调用 (1),(2),直至满足停止条件。
(4) 生成 CART 决策树。

CART 剪枝

(1) 设 k=0T=T_0
(2) 设 a=+\infty
(3) 自下而上地对各内部结点 t 计算 C(T_t)|T_t| 以及
g(t)=\frac{C(t)-C(T_t)}{|T_t|-1}\\ a=min(a,g(t))
这里,T_t 表示以 t 为根结点的子树,C(T_t) 是对训练数据的预测误差,|T_t|T_t 的叶结点个数。
(4) 自上而下地访问内部结点 t,如果有 g(t)=a,进行剪枝,并对叶结点 t 以多数表决法决定其类,得到树 T
(5) 设 k=k+1,a_k=a,T_k=T
(6) 如果 T 不是由根结点单独构成的树,则回到步骤(4)。
(7) 采用交叉验证法在子树序列 T_0,T_1,...,T_n 中选取最优子树 T_a


六、补充

连续值处理

对连续属性的划分,最简单的策略是采用二分法对连续属性进行处理。

(1) 将连续属性的 n 个数值排序。
(2) 取两两数的平均值为划分点,共 n-1 个。
(3) 分别求每个划分点下的经验熵 H(D_t^{-})H(D_t^+)
(4) 求每个划分点的信息增益
g(D,a,t) = H(D) - \sum_{\lambda\in (-,+)}\frac{|D^\lambda _t |}{|D|}H(D^\lambda _t )
(5) 找出所有划分点的最大信息增益,和其对应的划分点。

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

缺失值处理

相关文章

  • 机器学习6-决策树

    一. 决策树概述 1.1 什么是决策树 决策树输入: 测试集决策树输出: 分类规则(决策树) 1.2 决策树算法概...

  • 决策树

    1、决策树 决策树学习通常包括3个步骤: 特征选择。 决策树生成。 决策树剪枝。 决策树的学习目标是:根据给定的训...

  • 决策树

    决策树 决策树模型与学习 特征选择 决策树的生成 决策树的剪枝 CART 算法 决策树模型呈树形结构,在分类问题中...

  • 决策树算法总结

    目录 一、决策树算法思想 二、决策树学习本质 三、总结 一、决策树(decision tree)算法思想: 决策树...

  • 机器学习 - 决策树算法[一]

    1 决策树模型与学习 1.1 决策树模型 决策树定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由...

  • 机器学习系列(三十六)——回归决策树与决策树总结

    本篇主要内容:回归决策树原理、回归树学习曲线、决策树总结 回归决策树原理 回归决策树树是用于回归的决策树模型,回归...

  • [机器学习]决策树

    决策树 @(技术博客)[机器学习, 决策树, python] 学习决策树首先要搞清楚决策树是什么(what),在弄...

  • 经典机器学习系列之【决策树详解】

      这节我们来讲说一下决策树。介绍一下决策树的基础知识、决策树的基本算法、决策树中的问题以及决策树的理解和解释。 ...

  • 第5章 决策树

    内容 一、决策树内容简介 二、决策树的模型与学习 三、特征选择 四、决策树生成 五、决策树剪枝 六、CART算法 ...

  • 决策树与随机森林

    PART I 决策树 (Decision Tree) 决策树基本知识 决策树何时停止生长:(I) all leaf...

网友评论

      本文标题:决策树

      本文链接:https://www.haomeiwen.com/subject/xrekyqtx.html