【统计机器学习】决策树

决策树是一种基于训练数据构建的分类模型,通过信息增益或信息增益比选择特征,采用ID3、C4.5等算法生成。为了避免过拟合,采取决策树剪枝,调整损失函数以平衡模型复杂度与泛化能力。CART算法也在其中起到重要作用。

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

决策树是一类基本的分类与回归方法。

学习时,利用训练数据,根据损失函数最小化原则建立决策树模型。预测时,对新的数据,根据决策树模型进行分类。

决策树学习通常包含3个步骤:特征选择、决策树的生成、决策树的剪枝

决策树模型

定义: 决策树是对实例进行分类的树形结构。由节点node和有向边edge组成。节点分为内部节点和叶节点。内部节点表示一个特征,叶节点表示一个类。

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

决策树学习

给定训练集
D={(x1,y1),(x2,y2),...,(xN,yN)}D=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}D={(x1,y1),(x2,y2),...,(xN,yN)},其中xi=(xi1,xi2,...,xin)x_i=(x_i^1,x_i^2,...,x_i^n)xi=(xi1,xi2,...,xin)为输入实例(特征个数)。y为类别。

学习的目标是根据训练数据简历一个决策树模型,能够对实例进行正确分类。

决策树本质是从训练数据集中归纳出一组分类规则。我们需要的是一个与训练集矛盾较小,又能具有很好的泛化能力。

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

决策树可能出现过拟合情况,需要进行剪枝

1.特征选择

特征选择在于选择对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。

信息增益

熵是表示随机变量不确定性的度量。

设X是表示取有限个值的离散随机变量,其概率分布为p(X=xi)=pip(X=x_i)=p_ip(X=xi)=pi
则随机变量X的熵定义为
H(X)=−∑i=1npilog⁡piH(X)=- \sum _{i=1}^{n} p_i \log p_iH(X)=i=1npilogpi

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

条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。
H(Y∣X)=−∑i=1npiH(Y∣X=xi)H(Y|X)=- \sum _{i=1}^{n} p_i H(Y|X=x_i)H(YX)=i=1npiH(YX=xi)

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

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

根据信息增益准则的特征选择方法是:对训练集D,计算其每个特征的信息增益,比较其大小,选择信息增益最大的特征

信息增益比

在使用信息增益的时候,经验熵较大的话,信息增益值会偏大。使用信息增益比可以对这一问题进行校正。类似于标准化的思想。

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

2.决策树的生成

首先介绍ID3的生成算法,再介绍C4.5的生成算法。这些都是经典算法

ID3算法

ID3算法的核心是在决策树各个节点上使用信息增益来选择特征,递归构建决策树。

具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息特征最大的特征作为节点的特征,由给节点的不同取值建立子节点。再对子节点递归地使用上面的方法来建立决策树。直到所有特征的信息增益都很小或者没有特征可以选择为止,最后得到一个决策树。

ID3算法相当于用极大似然法进行概率模型的选择。

算法
输入:训练集D,特征集A,阈值ϵ\epsilonϵ
输出:决策树T

  1. 若D中所有实例属于同一类CkC_kCk,则T为单节点树,把类CkC_kCk作为该节点的类标记,返回T
  2. 若A为∅\varnothing,则T为单节点树,把D中实例树最多的类CkC_kCk作为该节点的类标记,返回T
  3. 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征AgA_gAg
  4. 如果AgA_gAg的信息增益小于阈值ϵ\epsilonϵ,则T为单节点树,把D中实例树最多的类CkC_kCk作为该节点的类标记,返回T
  5. 否则,对AgA_gAg的每一个取值aia_iai,依Ag=aiA_g=a_iAg=ai将D划分为若干非空子集DiD_iDi,把DiD_iDi中实例树最多的类作为标记,构建子节点,返回树T
  6. 对第i个子节点,以DiD_iDi为训练集,以A−AgA-A_gAAg为特征集,递归调用1-5,得到子树TiT_iTi,返回TiT_iTi

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

C4.5算法

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

3.决策树的剪枝

决策树的生成过程可能出现过拟合现象,构建过于复杂的树,降低泛化能力。

解决方法是考虑降低决策树的复杂度,对已生成的树进行简化,称为剪枝。

决策树的剪枝往往是通过极小化决策树模型整体的损失函数(loss function)来实现。

损失函数

设树T的叶节点个数为∣T∣|T|T,t是树T的叶节点,该叶节点有NtN_tNt个样本点,其中k类有NtkN_{tk}Ntk个,Ht(T)H_t(T)Ht(T)为叶节点T上的经验熵,α⩾0\alpha\geqslant0α0为参数,用来调节模型复杂度。
则决策树的损失函数定义为:
Cα(T)=∑t=1∣T∣NtHt(T)+α∣T∣C_{\alpha}(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|Cα(T)=t=1TNtHt(T)+αT

其中第一项表示表示对训练集的拟合程度,第二项用于控制模型复杂度。α\alphaα较大倾向于选择简单的模型,α\alphaα较大倾向于选择复杂的模型

下面介绍剪枝算法

算法
输入:生成算法产生的整个树T,参数α\alphaα
输出:修剪后的子树TαT_{\alpha}Tα

  1. 计算每个节点的经验熵
  2. 递归地从树的叶节点向上回缩 设一组叶节点回缩到其父节点前后的的整体树分别为TBT_BTBTAT_ATA,其对应的损失函数分别为Cα(TB)C_{\alpha}(T_B)Cα(TB)Cα(TA)C_{\alpha}(T_A)Cα(TA),若Cα(TA)⩽Cα(TB)C_{\alpha}(T_A)\leqslant C_{\alpha}(T_B)Cα(TA)Cα(TB),则进行剪枝,即将父节点变为新的叶节点
  3. 返回2 知道不能继续为止 得到损失函数最小的子树TαT_{\alpha}Tα

CART算法


需要补充 暂时先不写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值