决策树(decision tree)

决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树。

在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。

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

下图为决策树示意图,圆点——内部节点,方框——叶节点
在这里插入图片描述

决策树学习的目标:根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。

决策树学习的本质:从训练集中归纳出一组分类规则,或者说是由训练数据集估计条件概率模型。

决策树学习的损失函数:正则化的极大似然估计函数

决策树学习的测试:最小化损失函数

决策树学习的目标:在损失函数的意义下,选择最优决策树的问题。

一、决策树的学习算法

特征选择 ——> 决策树的生成 ——> 决策树的剪枝

特征选择:熵、条件熵、信息增益、信息增益比、基尼指数

决策树的生成:ID3、C4.5、CART

决策树的剪枝:预剪枝、后剪枝

二、特征选择 

特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。

1、熵

 在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。熵越大,随机变量的不确定性就越大。

设X是一个取有限个值的离散随机变量,其概率分布为

则随机变量X的熵定义为 

 决策树(decision tree)_第1张图片

熵只依赖于X的分布,与X的取值无关,所以也可以将X的熵记作

决策树(decision tree)_第2张图片

2、条件熵

条件熵(conditional entropy)表示在已知随机变量X的条件下随机变量Y的不确定性,定义为X 给定条件下Y 的条件概率分布的熵对X 的数学期望:

 当熵和条件熵中的概率是通过训练集得到时,所对应的熵与条件熵分别称为经验熵和经验条件熵

决策树(decision tree)_第3张图片3、信息增益 

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

决策树(decision tree)_第4张图片根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。 

信息增益的算法:

决策树(decision tree)_第5张图片

决策树(decision tree)_第6张图片以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题 ,所以引入了西信息增益比问题。

4、信息增益比 

决策树(decision tree)_第7张图片当特征的可取值个数较大时,H_{A}(D)较大,那么信息增益比较小,因此信息增益比倾向于选择可取值个数较小的特征,解决了采用信息增益进行特征选择时面临的过拟合问题。 

5、基尼指数

决策树(decision tree)_第8张图片对于分类任务而言,基尼指数越小,对应特征对训练样本的分类能力越强。 

三、决策树的生成

1、ID3算法 

ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。

具体办法:

从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子节点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止,最后得到一颗决策树。 

决策树(decision tree)_第9张图片决策树(decision tree)_第10张图片 2、C4.5算法

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

3、CART算法 

决策树(decision tree)_第11张图片四、决策树的剪枝

首先剪枝(pruning)的目的是为了避免决策树模型的过拟合。因为决策树算法在学习的过程中为了尽可能的正确的分类训练样本,不停地对结点进行划分,因此这会导致整棵树的分支过多,也就导致了过拟合

决策树的剪枝往往通过极小化决策树整体的损失函数(loss function)或代价函数(cost function)来实现。

决策树(decision tree)_第12张图片 决策树的剪枝策略最基本的有两种:预剪枝(pre-pruning)和后剪枝(post-pruning):

1、预剪枝

预剪枝就是在决策树生成过程中提前停止树的增长的一种剪枝算法。主要思路是在决策树结点分裂之前,计算当前结点划分能否提升模型泛化能力,如果不能,则决策树在该结点停止生长。 

2、后剪枝

后剪枝就是先构造一颗完整的决策树,然后自底向上的对非叶结点进行考察,若将该结点对应的子树换为叶结点能够带来泛华性能的提升,则把该子树替换为叶结点。

对比预剪枝和后剪枝,能够发现,后剪枝决策树通常比预剪枝决策树保留了更多的分支,一般情形下,后剪枝决策树的欠拟合风险小,泛华性能往往也要优于预剪枝决策树。但后剪枝过程是在构建完全决策树之后进行的,并且要自底向上的对树中的所有非叶结点进行逐一考察,因此其训练时间开销要比未剪枝决策树和预剪枝决策树都大得多。

3、CART剪枝

决策树(decision tree)_第13张图片

五、决策树的优缺点

优点:

1、决策树算法易理解,机理解释起来简单。

2、决策树算法可以用于小数据集。

3、决策树算法的时间复杂度较小,为用于训练决策树的数据点的对数。

4、相比于其他算法智能分析一种类型变量,决策树算法可处理数字和数据的类别。

5、能够处理多输出的问题。

6、对缺失值不敏感。

7、可以处理不相关特征数据。

8、效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

缺点:

1、对连续性的字段比较难预测。

2、容易出现过拟合。

3、当类别太多时,错误可能就会增加的比较快。

4、在处理特征关联性比较强的数据时表现得不是太好。

5、对于各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。 

你可能感兴趣的:(#,监督学习,决策树,算法)