第十七、十八、十九讲 决策树

本文详细介绍了决策树的构造过程,包括选择属性作为节点的依据,如信息熵和基尼指数。讨论了过拟合现象及预剪枝、后剪枝策略。对比了ID3、C4.5和CART算法,强调了CART算法在处理连续值和二叉树构建上的优势。最后,以泰坦尼克乘客生存预测为例,展示了决策树在实际问题中的应用,包括数据清洗、特征选择、模型训练和评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

决策树就是将经验进行总结,在做决策树的时候,会经历两个阶段:构造和剪枝
构造的过程就是选择什么属性作为节点的过程,分为根节点、内部节点和叶节点,节点之间存在父子关系。
剪枝就是给决策树瘦身,实现目标是,不需要太多判断也能得到不错的结果,是为了防止“过拟合”现象的发生。
在这里插入图片描述
左侧为欠拟合,右侧为过拟合
造成过拟合的原因之一是训练集中样本量较小。,决策树选择的属性过多,模型的“泛化能力”差。
剪枝可以分为“预剪枝”和“后剪枝”。
预剪枝:在决策树构造过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,即划分没有意义,则当前节点为叶节点。
后剪枝:在生成决策树之后进行剪枝,从叶节点开始,逐层向上进行评估,如果剪掉子节点树,在分类准确性上差别不大,或是能带来准确性的提升,就可以进行剪枝,用子树叶子节点代替,类标记为子节点树最频繁的那个类。

例:如何判断是否去打篮球
打篮球的数据集如下:
在这里插入图片描述
接下来构造决策树。
1、将哪个属性作为根节点。
有两个指标:纯度和信息熵
(1)纯度
决策树的构造过程即为寻找纯净划分的过程,纯度,就是让目标分量的分歧最小。
例如:
集合1:六次都去打篮球;
集合2:四次去,两次不去;
集合3:三次去,三次不去。
按纯度指标来说,集合1>2>3。
(2)信息熵
信息的不确定度。
公式如下:
在这里插入图片描述
某个事件的不确定性越大时,所包含的信息量就越大,信息熵就越高。
例如:
集合1:五次去打篮球,一次不去;
集合2:三次去,三次不去。

假设,类别1为打篮球,类别2为不去,则根据信息熵公式可计算出,集合1信息熵为0.65,集合2信息熵为1.
即,信息熵越大,纯度越低。当集合中的样本均匀混合时,信息熵最大,纯度最低。

构造决策树,根据纯度来构建,经典“不纯度”的指标有三种:信息增益(ID3算法)、信息增益率(C4.5算法)以及基尼指数(Cart算法)。
1、ID3算法
信息增益就是划分可以带来纯度的提高,信息熵的下降。计算公式是:父亲节点的信息熵减去所有子节点的归一化信息熵,信息增益的公式为:

在这里插入图片描述
例如:
D为晴天,D1为刮风,D2为不刮风。
在这里插入图片描述
则D作为节点的信息增益为:
在这里插入图片描述
基于ID3的算法原则,完整计算此数据集,训练集中的7个数据,3个打篮球,4个不打,所以根节点的信息熵为:
在这里插入图片描述
若以天气作为属性的划分,则三个节点的信息熵为
在这里插入图片描述
D1晴天,D2阴天,D3小雨。
则它们作为子节点的归一化信息熵为:3/70.918+2/71.0+2/7*1.0=0.965;
则,天气作为属性节点的信息增益为,Gain(D,天气)=0.985-0.965=0.020
同理,可计算以其他属性作为根节点的信息增益:
Gain(D,温度)=0.128
Gain(D,湿度)=0.020
Gain(D,刮风)=0.020

可以看出,温度作为属性的信息增益最大,由于在ID3算法中,以增益最大的属性作为父节点,可以得到纯度高的决策树
在这里插入图片描述
然后将D1{1-,2-,3+,4+}进行进一步分裂,完整的决策树如下:
在这里插入图片描述
ID3算法规则相对简单,但倾向于选择取值比较多的属性,有些属性对分类任务没有太大作用,仍然可能被选为最优属性。
在ID3算法基础上进行改进的C4.5算法
1、采用信息增益率选择属性;
2、采用悲观剪枝提升泛化能力;
3、离散化处理连续属性;
4、处理缺失值。

ID3算法:方法简单,但对噪声敏感,训练数据若有少量错误,可能会造成分类错误。
C4.5在ID3的基础上,用信息增益率代替信息增益,解决了噪声敏感的问题,而且可以对构造树进行剪枝、处理连续数值及数值缺失等情况,但需要对数据集进行多次扫描,算法效率相对较低。

总结:

在这里插入图片描述

思考题:

用ID3算法给出好苹果的决策树。

在这里插入图片描述
根节点的信息熵:Entropy(D)=1
以“红”作为属性划分,子节点的归一化信息熵为:0,信息增益为:1-0=1
以‘大’作为属性划分,子节点的归一化信息熵为:1,信息增益为1-1=0
因此,选择“红”作为父节点,纯度很高,不需要再进行划分。

CART,一棵是回归树,另一棵是分类树。
Classification And Regression Tree, 分类回归树。
ID3和C4.5算法既可生成二叉树,又可以生成多叉树,而CART算法只支持二叉树。
分类树与回归树

在这里插入图片描述
用该数据构造决策树,若基于数据判断职业身份,就属于分类树,因为是从几个类别中进行选择。若给定数据预测这个人的年龄,那就是回归树。回归树可以处理离散的数据,输出样本类别,而回归树可以对连续型的数据进行预测,输出数值。

CART分类树的工作流程
决策树的核心是寻找纯净的划分,CART属性选择的指标是基尼系数。基尼系数反应了样本的不确定度,基尼系数越小,则样本间的差异越小,不确定程度低。分类的过程是不确定度降低的过程。选择基尼系数最小的属性作为属性划分。
基尼系数
假设t为节点,则改节点的基尼系数计算公式为:
在这里插入图片描述
即节点系数t的基尼系数是1减去t属于各类别的概率的平方和。
例子:
集合1:6个都去打篮球;
集合2:3个去,3个不去。
则集合1的基尼系数为1-1=0,集合2的基尼系数为1-(0.50.5+0.50.5)=0.5,即集合1的基尼系数小,样本较稳定。
基于基尼系数,对特征属性进行二元分裂:
在这里插入图片描述
D的基尼系数等于子节点D1和D2的归一化基尼系数之和,即
在这里插入图片描述
则节点D的基尼系数为0.25。
用CART算法创建分类树****
在python的sklearn中,可以使用DecisionTreeClassifier类,默认情况下criterion参数为gini,即默认采用CART分类树。
基于iris数据集,构造CART分类树代码如下:

import sklearn as skl
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
#准备数据集
iris=load_iris() 
#获取特征集和分类标识
features=iris.data 
labels=iris
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值