决策树算法

本文介绍了决策树的基本原理,包括如何利用信息熵和信息增益来选择特征,以及ID3和C4.5算法的区别。此外,还讨论了决策树的训练过程、过拟合问题以及剪枝策略,强调了决策树在处理非线性问题和特征筛选中的优势,常被用作集成学习的基础模型。

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

1、什么是决策树?

    决策树是一种树形的判定结构,从根节点到每个叶节点是一个完整的判定路径。每个分支节点会对样本的某一个特征进行检测,将样本分配到子节点中,不同子节点对应着不同的特征取值。当一个预测样本进来时,从树根开始,检测样本的特征,按照取值传到对应子树中,在子树中进行同样的操作,这样一级一级最后到达叶子节点,叶子节点的类标记或者取值则为最后的预测结果。

    相当于使用数据的特征,在样本特征空间中按照特征的不同取值,对特征空间进行划分,然后在对应的子空间内,如果是分类则使用多数表决决定子空间所属的类;如果是回归,则取平均值作为预测结果。那么首先需要解决的问题是:如何选择特征进行分裂?


2、特征的选择问题

    很显然,选取的这个特征,如果按照它进行分裂,则希望这棵树的误差越小越好。什么叫误差越小越好?就是说,对于分类,每棵子树中尽量都是纯的、属于同一个类别,这样采用多数表决时少数类的比例少,因为使用多数类作为结果,这样误分错误就会小。对于回归,每棵树中的数值尽量集中,这样方差就会小。在回归时直接求总方差,对每个特征进行划分,然后求各个子树的方差总和,选择最小的特征划分作为划分特征。但是对于分类,就没有这么容易了,怎样度量每棵子树中的类别纯度呢?

    在信息论中有一个概念叫做信息熵,度量数据的不确定性。一颗子树预测目标,在子树中所占比例为,则它的信息为                                                                     

,对整体的不确定则可以通过加权平均求得:

                                                                 

    上面的式子就是信息熵的求法,通过代入一些假设数据可以很好的理解它的特性。如果只有两类,i=0,1,那么当这两类分布平均时,信息熵取得最大值,只有当分布出现极端情况,完全偏向一类时,信息熵为0最小。也就是说数据分布越趋于一致时,则信息熵越小,这正好满足了上面对特征选择的要求。


    在特征选择的过程中,计算对每个特征进行划分情况下的信息熵,它的计算方法是,将样本数据分配到不同子树中,然后计算每个子树中目标特征的信息熵,然后其这些子树信息熵的加权平均。公式如下:

                                                        

   上式即为条件熵,其中,为分裂特征取值为的比例,为取值为对应子树的信息熵。通过对数据集分类前后信息熵减少大小衡量数据趋向一致性的程度,信息熵的减小计算公式如下:

                                                    

   上式即为互信息或信息增益,在知道条件A的情况下,信息的减少程度。D为数据集,其中H(D)为分裂前数据集的信息熵,H(D|A)为经过特征分裂后的数据信息。


    但是在使用信息增益选择特征的过程中容易出现一个问题,比如对学生进行分类,如果存在学号或者身份证这个属性,那个按照学号或者身份证编号对学生进行划分,每个子树只会有一个学生,此时的信息为0,虽然这样会的划分对于训练数据集来说误差为0,但是这种划分是没有意义的,如果来了又来了一个学生,对于这个没有的学号或者身份证编号又怎么划分呢?很显然,这是一种过拟合的情况,对于训练数据集拟合效果很好,但是在测试数据上效果不好。为了避免这种情况,又出现了一种改良版,求出信息增益后,再除以分裂特征在数据集上的信息熵,公式如下:

                                                   

    上式即为信息增益比,g(D,A)为信息增益,为特征在数据集上的信息熵,通过在原有的信息增益的基础上,对特征加一个惩罚项,除以特征的信息熵,避免了选择具有多取值的特征。但是这种算法依旧有问题,可能会选择具有特征信息熵小,而信息增益也小的特征。因此通常的做法是,在求出所有特征的信息增益后,在信息增益大于均值的信息增益中求信息增益比选择特征。这个好比是跑步选择用动员,有些人跑得快,但是跑得不够长,只能跑10米;有些人跑得长,但是跑得慢,跑1km需要一个小时,那这时就使用平均速度,找出那些平均速度大的人,但是大也得有限制,必须能够跑100米或者100以上的。选特征也是这样,既要信息增益比高,还需要信息增益大于均值水平。


3、决策树的训练

    上面使用信息增益选择特征创建决策树的算法称为ID3算法,采用信息增益比选择特征创建决策树的算法称为C4.5算法。整体流程是一样的,只不过特征的选取方法不一样而已。


输入:训练数据集D,特征A

输出:决策树


1)如果D中所有实例属于同一类Ck,则构建单结点树T,并将类Ck作为该结点的类标记,返回T;

2)如A为空,则构建单结点树T,并将D中实例最多的类别作为该结点的类标记,返回T;

3)如果A非空,则计算训练数据集D在A中各特征的信息增益或者信息增益比,选择信息增益或增益比最大的特征Ag;

4)如果信息增益或信息增益比小于阈值,则构建单结点树T,并将D中实例最多的类作为该结点的类标记,返回T;

5)否则,按照特征Ag的不同取值,将训练集D划分为不同的训练子集D1,D2,...,Dk;

6)然后对每一个训练子集以特征为A-{Ag},递归的构建决策树。


    采用上述方式训练的决策树对训练数据集表现较好的性能,但是在测试数据集上效果欠佳,也就是说模型过拟合了。因为在训练的过程中,计算信息增益时,只是针对局域训练数据集,求信息增益,尽量拟合训练数据集,并没有考虑整体的情况。因此需要对上面生成的决策树进行剪枝,从整体上选择最优的模型,既然要进行剪枝,那么需要知道剪枝的优化目标是什么?

    决策树的损失函数:

                                       

     上式即为添加了惩罚项的决策树的损失函数,|T|为叶子结点个数,为叶子结点中样本个数,为第t个叶子结点对应的信息熵,α为惩罚因子,平衡树的整体复杂度。α越小,决策树越复杂;α月越大,决策树结构越简单。

      对每一个叶子结点,尝试回缩到父节点,计算以父节点为叶子结点构建的决策树的损失函数,如果回缩后的损失函数减少,则对决策树进行剪枝。然后重复上述计算,直至每个叶子结点都无法再次剪枝。


4、总结

    决策树能够处理非线性问题,是个天然的多分类算法,输入数据要求低,对缺失值不敏感。树的构建过程很快,预测计算速度也快,因为对特征构建树形的决策结构,因此具有较好的解释能力且易于理解。在创建决策树时采用信息熵选择特征进行分裂,这个过程也可以用于特征筛选,与预测变量具有强关联性的特征具有较大的信息增益。决策树相对于其它的算法,在测试数据集上的准确率不高,一般不单独使用。通常是作为融合模型的基础,比如GBDT、随机森林等算法的基础模型就是使用的决策树。













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值