决策树

本文深入探讨了决策树的基础,包括信息熵、信息增益和分裂标准。介绍了ID3、C4.5和CART三种算法,以及如何防止过拟合的剪枝方法。此外,还讨论了决策树的组合技术,如Bagging、Boosting,特别是Random Forest和GBDT,及其在提升模型性能中的作用。

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

信息论基础


设随机变量取有限个值,其概率分布为 P(X=xi)=pi,i=1,2,...,n 则随机变量 X 的熵的定义为

H(X)=i=1npilogpi
对数以 2 e为底时,熵的单位分别为比特(bit)或纳特(nat).由定义可知熵与X的取值无关,而与X的分布有关,所以熵记作 H(p) ,即

H(p)=i=1npilogpi

条件熵
随机变量 (X,Y) 联合分布为 P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m ,在已知 X 的前提下Y的不确定性成为条件熵 H(Y|X) ,定义为
给定 X 的条件下,Y的条件概率分布熵对 X 的数学期望
H(Y|X)=i=1npiH(Y|X=xi)
这里 pi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据估计(如极大似然估计)得到时,对应的熵和条件熵分别是经验熵和经验条件熵。

信息增益
表示得知 X 的信息而使Y的信息的不确定性减少的程度。特征 A 对训练数据集D的信息增益 g(D,A) ,定义集合 D 的经验熵与给定
特征A的条件下 D 的经验条件熵H(D|A)之差,即

g(D,A)=H(D)H(D|A)

GINI指数
主要是度量数据划分或训练数据集D的不纯度为主。GINI值越小,表明样本的纯净度越高(即该样本只属于同一类的概率越高)。

基本问题

  • 分裂准则
  • 误差分析
  • 如何防止过拟合,早停止,剪枝

分裂标准

使用纯度来作为分裂(split)准则,即训练方法,而不是一般的分类回归问题的最小均方误差、极大似然函数,其原因是:

误差分析(Measuring Error)

通过误差分析可以评估模型性能的好坏。常见的分类问题的误差分析方法有:误分率(misclassication rate),期望损失(expected loss), 归一化的极大似然函数(normalized negative log-likelihood), 也就是交叉熵( cross-entropy).
对于分类树的误差分析使用交叉熵,回归树使用军方误差。

过拟合

剪枝方法

三种算法

,根据不同的划分准则分为以ID3(及其改进版C4.5)和CART两种。

ID3算法

输入:训练数据集 D ,特征集A,阈值 ϵ ;
输出:决策树 T .

  1. D中所有实例属于同一类 Ck ,则 T 为单节点树,并将类Ck作为该节点的类标记,返回 T ;
  2. A=,则 T 为单节点树,并将D中实例数最大的类 Ck 作为该节点的类标记,返回 T ;
  3. 否则,计算A中个特征对 D 的信息增益,选择信息增益最大的特征Ag;

    • 如果 T 的信息增益小于阈值ϵ,则置 T 为单节点树,并将D中实例数最大的类 Ck 作为该节点的类标记,返回 T ;
    • 否则,对A的每一可能值 ai ,依 Ag=ai D 分割为若干非空子集Di,将 Di 中实例个数最大的类作为类标记,构建子节点,由结点其子节点构成树 T ,并返回T;
    • 对第 i 个子节点,以Di为训练集,以 A{Ag} 为特征集,递归地调用1~5步,得到子树 Ti ,返回 Ti ;
    • C4.5算法

      ID3算法偏向选择取值较多的特征,如存在唯一标识属性ID,则ID3会选择将其作为分裂属性,但是这种划分没有意义,C4.5中使用增益比来惩罚这种属性,
      首先定义分裂信息,表示为

      split_infoA(D)=j=1v|Dj||D|log(|Dj||D|)
      信息增益比定义为
      gain_ratio(A)=gain(A,D)split_infoA(D)

      C4.5用信息增益比作为分裂属性,算法的其他步骤与ID3类似,不再赘述。

      CART

      ID3算法和C4.5算法虽然可以从训练样本集中尽可能多地挖掘信息,但其生成的决策数分支、规模较大,CART算法的二分法可以简化决策树的规模,提高生成决策树的效率。
      对于分类树,用基尼系数(Gini index)最小化准则,进行特征选择。对于回归树,用平方误差最小化准则进行特征选择。

      比较

      效率

      决策树组合

      该部分内容主要是将Bagging、Boosting这两种统计学习方法应用到多决策树的组合中,关于Bagging 、Boosting可参考我的博文BaggingBosting

      Bagged Tree

      Random Forest

      与Bagged tree不同的是每次对树的划分时,RF (Random Forest)是从M个特征中随机抽取P个作为依据,而Bagging方法是使用所有的M个特征。在Bagged trees中考虑所有的特征作为划分依据,这样可能造成它们选取的较强特征是相似的,那么这些树的相关性就比较高,不能很好地降低模型方差。Random Forest在此基础上进行了改进,每次划分时,随机抽取所有特征的一部分作为划分依据,这样得到的模型更具稳定性和可靠性。
      软件
      R 中的randomForest包,可用来进行Bagging和RandomForest实验。

      Boosting Tree

      提升方法实际是采用加法模型(基函数的线性组合)与前向分步算法,以决策树为弱学习器的提升方法为提升树。
      正则化方法:限制决策树的数量。
      软件
      R 包gbm

      boost.boston =gbm(medv~.,data=Boston [train ,], distribution="gaussian",n.trees =5000 , interaction.depth =4)

      其中,distribution指明训练数据集的分布,”gaussian”表示误差函数为均方误差,”bernoulli”表示0-1逻辑回归,其误差函数为交叉熵,”adaboost” 表示0-1输出的AdaBoost指数误差函数。n.trees 表示采用的树的数量,控制了模型的复杂度,是一种正则化手段;interaction.depth 表示每棵树的深度,之所以用interaction这个词是指所选特征之间的交互作用,通过设置改变量限制了模型特征之间的交互阶。对于输入和输出之间只存在低阶交互的情景,可设置interaction.depth为1,2等这样较小的值,对于高阶交互情景需要设置较大的值。但通常我们是不知道实际输入和输出之间的关系的,所以需要通过模型选择技术(如交叉验证)来设置这些参数。

      GBDT

      梯度提升树(Gradient Boost Decision Tree,GBDT)是弱学习器为决策树的梯度提升(Gradient Boost)算法。
      提升树利用加法模型和前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失时,每一步的优化较简单,但对于一般的损失函数,往往每一步的优化就不容易了。针对这一问题,提出梯度提升算法,利用最速下降法的近似方法。

      参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值