决策树

简介: 一、决策树概念  决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。

一、决策树概念

  决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

  算法模型如下:

    

 

  决策树是一个递归的过程,在决策树的基本算法中,三种情况导致递归返回:1)、当前节点包含的样本全属于同一类别,无需划分。2)、当前属性集为空,或是所有样本在所有属性上取值相同,无需划分。3)、当前节点包含的样本集合为空,不能划分。

二、划分选择

2.1、ID3决策树(信息增益)

  ID3决策树学习算法是以信息增益为准则来选择划分属性。

  信息熵是度量样本集合纯度最常用的一种指标。样本集合D的信息熵定义为:

    

  Ent(D)的值越小,说明D的纯度越高。一个属性a对样本集D进行划分所获得的“信息增益”为:

    

  一般而言,信息增益越大,意味着用属性a进行划分所获得的纯度提升越大,所以上述算法的第8行信息增益中最大的那个属性。

例子:西瓜数据集2.0,包含17个训练样例,为二分类问题,用以学习一棵能预测没剖开的是不是好瓜的决策树。

    

首先在表中可以看到,17个样本,其中正例有8个,反例有9个。所以样本集D的信息熵为

    

然后统计当前属性集合{色泽、根蒂、敲声、纹理、脐部、触感}中每个属性的信息增益,以属性“色泽”为例,该值可能有三个取值:青绿、乌黑、浅白。分别计算出每个属性的信息增益,比如青绿有6个,其中3个正例,3个反例。计算的结果如下:

        

于是可以计算出色泽的信息增益为:

    

类似的可以计算出其他属性五个属性的信息增益分别为:

    

可以看出,属性纹理的信息增益最大,于是它被划分为划分属性,基于纹理的划分结果如下,各个分支节点所包含的样例子集显示在节点中。

    

然后对每一个分支进行进一步划分,比如第一个分支节点,有1,2,3,4,5,6,8,10,15等9个样例,可用的属性集合为{色泽,根蒂,敲声,脐部,触感}等,用同样的方法计算出该子集的所有属性的信息增益:

  

可以看出根蒂、脐部、触感三个属性的信息增益一致,可任选一个作为划分属性,同理,得到的最终的树结果。

    

ID3算法的缺点:

  • ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息,泛化能力较弱,无法对新样本进行有效预测。
  • ID3算法只能对描述属性为离散型属性的数据集构造决策树。

2.2、C4.5决策树(增益率)

  C4.5算法是利用增益率来选择最优的划分属性。克服了用信息增益来选择属性时偏向选择值多的属性的不足,增益率的定义如下:

     

IV(a)称为属性a的固有值,属性a的可能取值数目越多,其值就会越大。但是增益率会对可取值数目较少的属性有所偏好,所以C4.5并不是直接选取增益率最大的候选划分属性,而是使用一个启发式的方法:先从候选属性中找出信息增益高于平均水平的属性,再选择最高的。

C4.5可以处理连续型的数据。

2.3、CART决策树(基尼指数)

  CART决策数使用基尼指数来选择划分属性,数据集D的纯度可用基尼值来度量,定义如下:

    

直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,Gini(D)的值越小,则数据集D的纯度越高。属性a的基尼指数的定义为:

    

一般会选取所有的属性中基尼指数最小的属性作为最优划分属性。

三、剪枝处理

为了防止过拟合,采取剪枝处理。基本策略有预剪枝和后剪枝。

3.1、预剪枝

  预剪枝是指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树返回性能的提升,则停止划分并将当前节点标记为叶节点。

例子:对于西瓜数据集,双横线的上部为训练集,下部为验证集。

    

首先根据信息增益的方法进行属性划分,对于没有剪枝的情况如下图所示:

    

然后利用留出法,将验证集利用上述决策树进行验证,发现{4,5,8}被标记为好瓜,其余4个被标记为坏瓜。所以验证集的精度为3/7=0.429.

如果利用剪枝的方法,在用属性脐部划分之后,被分为了{1,2,3,14}、{6,7,15,17}、{10,16}的训练样例。这三个节点分别被标记为好瓜、好瓜、坏瓜。同理,验证集中有{4,5,8,11,12}五个样例分类正确,此时的精度为5/7=0.714。因为0.714>0.429,所以需要用"脐部"进行属性划分。与此类似,对节点2的色泽属性进行精度验证,此时的精度为0.571,因为0.571<0.714,所以不需要再进行划分。精度三再对根蒂进行属性划分的精度计算,发现精度为0.714, 因为0.714不大于0.714,所以也不需要再进行划分。剪枝后的图为:

    

3.2、后剪枝

  后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上的对非叶节点进行考察,若该节点对应的子树替换为叶节点能够带来决策树泛化性能提升,则将该子树替换为也节点。

由之前的完整的决策树的验证机精度为0.429.首先对节点6纹理,替换成叶节点后,该节点的类别被标记为“好瓜”,验证集的精度变为0.571>0.429,所以需要进行剪枝,此时的纹理节点就变为好瓜(叶节点)。同理往上走,节点5色泽,变为叶节点,标记为“好瓜”,此时的验证集为0.517,并没有性能提升,所以不需要剪枝。这时候再转向其他子树,节点2色泽变为叶节点后,标记为“好瓜”,此时的验证集精度为0.714>0.571,所以需要进行剪枝。同理,对于节点3和节点1变为叶节点后,验证集的精度分别为0.714和0.429并没有带来性能的提升,于是它们被保留。故最后的精度为0.712,生成的剪枝后的决策树为:

    

当神已无能为力,那便是魔渡众生
目录
相关文章
|
4月前
|
机器学习/深度学习 算法
决策树及随机森林学习总结
决策树及随机森林学习总结
54 4
|
6月前
|
机器学习/深度学习 算法 前端开发
决策树与随机森林算法在分类问题中的应用
本文探讨了决策树和随机森林两种监督学习算法,它们在分类任务中表现出强大的解释性和预测能力。决策树通过特征测试进行分类,构建涉及特征选择、树生成和剪枝。随机森林是集成学习方法,通过构建多棵决策树并汇总预测结果,防止过拟合。文中提供了Python代码示例,展示如何使用sklearn构建和应用这些模型,并讨论了参数调优和模型评估方法,如交叉验证和混淆矩阵。最后,强调了在实际问题中灵活选择和调整模型参数的重要性。
194 4
|
机器学习/深度学习 存储
随机森林是什么?
随机森林(Random Forest)是将多个决策树(Decision Tree)组合在一起形成一个强大的分类器或回归器,是一种集成学习(Ensemble Learning)方法。 随机森林的主要思想是通过随机选择样本和特征来构建多个决策树,并通过集成这些决策树的预测结果来达到更准确的分类或回归结果。具体步骤如下:
|
7月前
|
机器学习/深度学习 数据采集 并行计算
决策树
分类决策树
49 0
|
7月前
|
机器学习/深度学习 数据采集 算法
实现机器学习算法(如:决策树、随机森林等)。
实现机器学习算法(如:决策树、随机森林等)。
57 0
|
7月前
|
机器学习/深度学习 算法 数据库
决策树与随机森林算法
决策树和随机森林都是用于分类和回归的的算法。决策树的原理是通过一系列的问题进行if、else的推导。随机森林是集合学习算法,即把很多的机器学习算法综合在一起组成一个更大的模型。
110 0
|
机器学习/深度学习 人工智能 算法
连载|决策树(下)
连载|决策树(下)
|
机器学习/深度学习 算法