浅谈决策树

来源:互联网 发布:当网络写手挣钱吗 编辑:程序博客网 时间:2024/06/08 05:18

最近要学习xgboost,感觉之前对关于决策树的知识有些淡忘,因此写一份笔记,加深印象。

1. 决策树模型

决策树是一种基本的分类与回归方法,其模型呈现树形结构,既可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策树模型进行分类。决策树的学习通常包括3个步骤:特征选择,决策树生成和决策树的修剪。决策树的结点有两种,一种是内部结点,表示一个特征;另一种是叶结点,表示分类结果。
这里写图片描述

如图所示,图中圆和方框分别表示内部结点和叶结点。

2. 决策树的学习

决策树的本质是从训练数据集中归纳出一组分类规则,从而使生成的决策树与训练数据之间矛盾小且泛化能力强。决策树学习的策略是以损失函数为目标函数的最小化,主要算法是贪心算法。决策树学习算法共包含三个部分:特征选择,决策树的生成和决策树的剪枝。
特征选择:从所有特征中选择出最优特征,从而对结点进行分裂。
决策树生成:递归地进行特征选择,使得各个子集有一个在当前条件下最好的分类,直至所有训练数据子集被基本分类正确或者没有合适的特征为止。
剪枝:去除过于细分的叶结点,回退至父结点甚至更高的结点,然后将父结点或更高的结点更新为叶结点,从而防止过拟合。
接下来就针对这三点进行详细的介绍。

2.1 特征选择

通常特征选择的准则是信息增益或信息增益比。首先要知道的概念,熵是表示随机变量不确定性的度量,设X是一个取有限个值的离散随机变量,其概率分布为:

这里写图片描述

则随机变量X的熵的定义为:

这里写图片描述

若此时有两个随机变量(X, Y),其联合概率分布为:

这里写图片描述

此时我们引入条件熵的概念,条件熵H(Y | X)表示在已知随机变量X的条件下随机变量Y的不确定性,定义为X给定条件下Y的条件概率分布的熵对X的数学期望:

这里写图片描述

推导过程如下:

这里写图片描述

由于实际运用中的熵和条件熵均由数据的极大似然估计得到的,因此对应又称为经验熵和经验条件熵,如果出现0概率,则令0log0 = 0。已知了经验熵和经验条件熵我们就可以知道该条件的出现对分类结果的影响程度,于是将这两个量的差值定义为信息增益。假设特征A对训练数据集D的信息增益为g(D, A),则
g(D | A) = H(D) - H(D | A)
根据信息增益准则的特征选择方法为:对训练集或子集D,计算其每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。由于信息增益值的大小是相对于数据集而言的,比如数据集中有ID这一项,且每个ID都不相同,相当于一个ID对应一个类别,此时得到的信息增益会接近于1(信息增益最大值极限情况下为1),因此会被选为最有特征,但是明显这不是最优特征,因此提出了信息增益率,定义为:

这里写图片描述
这里写图片描述

其中Info被称为属性A的“固有值”。
基尼指数:CART决策树使用基尼指数来选择划分属性,基尼值的表示如下:

这里写图片描述
直观来说Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此,Gini(D)值越小则数据集D的纯度越高。属性a的基尼指数定义为

这里写图片描述

在划分属性时,选择使划分后基尼指数最小的属性作为最优特征。

2.2 决策树的生成

2.2.1 ID3算法

ID3算法实现的具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建决策树。由于此方法过于依赖数据集,因此容易产生过拟合。

2.2.2 C4.5算法

C4.5算法是对ID3算法的改进,主要包括以下几点:
(1)用信息增益率来选择属性
(2)在建树过程中对树进行了剪枝
(3)可处理非离散的数据
(4)能够处理不完整的数据

2.3 决策树的剪枝

用于解决生成决策树的过拟合问题,通过将生成的树进行简化处理称为剪枝。决策树的剪枝往往是通过最小化决策树整体的损失函数来实现的。我们定义决策树的损失函数为下图所示,即所有叶结点的经验熵再加上一个正则化项,

这里写图片描述

其中树T的叶结点个数为|T|,t为树T的一个叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个,k = 1,2,…,K,Ht(T)为叶结点t上的经验熵,α >= 0的参数。其中经验熵为

这里写图片描述

代入损失函数的第一项,记做

这里写图片描述

则损失函数可以简化为

这里写图片描述

剪枝就是当α确定时,选择损失函数最小的模型。当树复杂度越高,第一项会降低,但第二项会增大;当复杂度降低,第二项变小,但数据拟合程度变低,第一项会变大。因此,损失函数就是将数据拟合程度与树的规模进行平衡。具体实现如下

这里写图片描述

具体的实例可以参考李航老师的《统计学习方法》一书,文章中大部分内容也出自于此。

原创粉丝点击