决策树准确率低原因_百面机器学习笔记 | 第三章:经典算法:决策树

决策树准确率低原因_百面机器学习笔记 | 第三章:经典算法:决策树_第1张图片

决策树,是一种自上而下,对样本数据进行树形分类的过程。

分类过程:由结点和有向边组成。结点分为内部结点和叶结点,其中每一个内部结点表示一个特征或属性,叶结点表示类别。从顶部根结点开始,所有样本聚在一起。经过根结点的划分,样本被分到不同的子结点中,再根据子结点的特征进一步划分,直至所有样本都被归为某一个类别(叶结点)中。

决策树被广泛地应用于分类和回归问题,是一种基础的有监督学习模型。在市场营销、生物医药等领域尤其受欢迎。这是因为树形结构与销售、诊断等场景下的决策过程十分相似。将决策树应用集成学习的思想可以得到随机森林、梯度提升决策树(GBDT)等模型。

它具有简单直观、解释性强等特点。

一般而言,决策树的生成包含了三个过程:特征选择、树的构造、树的剪枝三个过程。


决策树有哪些常用的启发函数?

决策树的目标是从一组样本数据中,根据不同的特征和属性,建立一棵树形的分类结构。

我们既希望它能你和训练数据,达到良好的分类效果,同时又希望控制其复杂度,使得模型具有一定的泛化能力。

从若干不同的决策树中选取最优的决策树是一个NP问题,在实际中我们通常会采用启发式学习的方法去构建一棵满足启发式条件的决策树。

常见的决策树算法有ID3、C4.5、CART,它们构建树所使用的启发式函数各是什么?除了构建准则之外,它们之间的区别与联系是什么?

分析:首先,回顾一下这几种决策树构造时的使用的准则。

[1] ID3 最大信息增益

对于样本集合D,类别数为K,数据集D的经验熵表示为:

其中,

是样本集合D中属于第 k 类的样本子集,
表示该子集的元素个数,|D| 表示样本集合的元素个数。

然后,计算某个特征A对于集合D的经验条件熵H(D|A)为

其中,

表示D中特征A取第i个值的样本子集,
表示
中属于第k类的样本子集。

于是,信息增益

可以表示为二者之差,可得:

举个例子,这是一个女孩相亲的典型决策情况:

决策树准确率低原因_百面机器学习笔记 | 第三章:经典算法:决策树_第2张图片

假设共有5个人追求场景中的女孩,年龄有两个属性(老,年轻),长相有三个属性(帅,一般,丑),工资有三个属性(高,中等,低),会写代码有两个 属性(会,不会),最终分类结果有两类(见,不见)。

我们根据女孩的主观意愿可以得到下表:

决策树准确率低原因_百面机器学习笔记 | 第三章:经典算法:决策树_第3张图片

在这个问题中,

,

根据公式,可以计算出四个分支结点的信息熵为:

同理,

根据信息增益的计算公式,可以得到各个特征的信息增益:

显然,“写代码”的信息增益最大,所有的样本根据此特征,可以直接被分到叶结点(即见或不见),完成决策树的生长。当然,在实际应用中,往往不能通过一个特征就完成构建,需要在经验熵非0的类别中继续生长。

[2] C4.5 最大信息增益比

特征A对于数据集D的信息增益比定义为:

其中,

称为数据集D关于A的取值熵。针对上述问题,我们可以根据上式求出数据集关每个特征的取值熵为:

决策树准确率低原因_百面机器学习笔记 | 第三章:经典算法:决策树_第4张图片

于是,就可以计算出各个特征的信息增益比为:

5384a8c745a948e969d87f59e7aac470.png

信息增益比最大的仍是特征“写代码”,但通过信息增益比,特征“年龄”对应的指标上升了,而特征“长相”和特征“工资”却有所下降。

[3] CART 最大基尼指数

Gini描述的是数据的纯度,与信息熵含义类似。

CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。

但是与ID3、C4.5不同的是,CART是一棵二叉树,采取二元分割法,每一步将数据按照特征A的取值切成两份,分别进入左右子树。

特征A的Gini指数定义为:

根据之前的那个例子,应用CART分类准则,计算出各个特征的Gini指数。

决策树准确率低原因_百面机器学习笔记 | 第三章:经典算法:决策树_第5张图片

在“年龄”“长相”“工资”“写代码”四个特征中,我们可以很快地发现特征“写代 码”的Gini指数最小为0,因此选择特征“写代码”作为最优特征,“写代码=会”为最 优切分点。按照这种切分,从根结点会直接产生两个叶结点,基尼指数降为0,完 成决策树生长。

从这三种决策树构造准则出发,我们可以总结一下三者之间的差异

首先,ID3是采用信息增益作为评价标准,除了“会写代码”这一逆天特征外, 会倾向于取值较多的特征。

因为,信息增益反映的是给定条件以后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条
件熵越小,信息增益越大。这在实际应用中是一个缺陷。比如,我们引入特征“DNA”,每个人的DNA都不
同,如果ID3按照“DNA”特征进行划分一定是最优的(条件熵为0),但这种分类的泛化能力是非常弱的。

因此,C4.5实际上是对ID3进行优化,通过引入信息增 益比,一定程度上对取值比较多的特征进行惩罚, 避免ID3出现过拟合的特性,提 升决策树的泛化能力。

其次,从样本类型的角度,ID3只能处理离散型变量,而C4.5和CART都可以 处理连续型变量。

C4.5处理连续型变量时,通过对数据排序之后找到类别不同的 分割线作为切分点,根据切分点把连续属性
转换为布尔型,从而将连续型变量转换多个取值区间的离散型变量。而对于CART,由于其构建时每次
都会对特征进行二值划分,因此可以很好地适用于连续性变量。

再次,从应用角度,ID3和C4.5只能用于分类任务,而CART(Classification and Regression Tree,分类回归树)从名字就可以看出其不仅可以用于分类,也可以应用于回归任务(回归树使用最小平方误差准则)。

此外,还有一些其他的细节区别。

ID3对样本特征缺失值比较敏感,而C4.5和CART可以对缺失值进行不同方式的处理。

ID3和C4.5可以在每个结点上产生出多叉分支,且每个特征在层级之间不会复用,而CART每个结点只会产生两个分支,因此最后会形成一颗二叉树,且每个特征可以被重复使用。

ID3和C4.5通过剪枝来权衡树的准确性与泛化能力,而CART 直接利用全部数据发现所有可能的树结构进行对比。


如何对决策树进行剪枝?

为什么要对决策树进行剪枝呢?

因为一棵完全生长的决策树会面临一个很严重的问题,也就是过拟合。比如我们在分类中有一个特征是人类的DNA,但是由于每一个人的DNA都不同,所以完全生长的决策树对应每一个叶结点中只会包含一个样本,这会导致决策树是过拟合的。这样在预测时,在测试集上的效果会很差。因此需要剪枝,提升模型的泛化能力。

再回到问题上,就是如何对决策树进行剪枝呢?通常有两种方法,预剪枝和后剪枝。

这两种方法是如何进行的呢?它们又各有什么优缺点?

预剪枝

预剪枝是在生成决策树的过程中提前停止树的增长。其核心思想是在树中结点进行扩展之前,先计算当前的划分是否能带来模型繁华能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类别的样本同时存在于结点中,按照多数投票的原则半段该结点所属类别。具体地,有几种方法:

(1)当树到达一定深度的时候,停止树的生长。

(2)当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。

(3)计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继续扩展。

预剪枝具有思想直接、算法简单、效率高等特点,适合解决大规模问题。但如何准确地估计何时停止树的生长(即上述方法中的深度或阈值),针对不同问题会有很大差别,需要一定经验判断。且预剪枝存在一定局限性,有欠拟合的风险,虽然当前的划分会导致测试集准确率降低,但在之后的划分中,准确率可能会有显著上升。

后剪枝

后剪枝是在已生成的过拟合决策树上进行剪枝,得到简化版的剪枝决策树。后剪枝的核心思想是让算法生成一棵完全生长的决策树,然后从最底层向上计算是否剪枝

剪枝过程将子树删除,用一个叶子结点替代,该结点的类别同样按照多数投票的原则进行判断。同样地,后剪枝也可以通过在测试集上的准确率进行判断,如果剪枝过后准确率有所提升,则进行剪枝。相比于预剪枝,后剪枝方法通常可以得到泛化能力更强的决策树,但时间开销会更大。

常见的后剪枝方法包括错误率降低剪枝(Reduced Error Pruning,REP)、悲观剪枝(Pessimistic Error Pruning,PEP)、代价复杂度剪枝(Cost Complexity Pruning,CCP)、最小误差剪枝(Minimum Error Pruning,MEP)、CVP(Critical Value Pruning)、OPP(Optimal Pruning)等方法。

剪枝过程在决策树模型中占据着极其重要的地位。有很多研究表明,剪枝比树的生成过程更为关键。对于不同划分标准生成的过拟合决策树,在经过剪枝之 后都能保留最重要的属性划分,因此最终的性能差距并不大。

重点是要理解剪枝方法的理论,在实际应用中根据不同的数据类型、规模,决定使用何种决策树以及对应的剪枝策略,灵活变通,找到最优选择。

你可能感兴趣的:(决策树准确率低原因,决策树法属于系统分析方法)