决策树

1 解决什么问题

  • 分类、预测、决策问题

  • 预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。

  • 决策树的学习本质上就是从训练数据集中归纳出一组分类规则

  • 例1:钻井问题(可手算;逆决策)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 例2:预测问题
    在这里插入图片描述
    用于预测贷款用户是否具有偿还贷款的能力。贷款用户主要具备三个属性:是否拥有房产,是否结婚,平均月收入。每一个内部节点都表示一个属性条件判断,叶子节点表示贷款用户是否具有偿还能力。例如:用户甲没有房产,没有结婚,月收入 5K。通过决策树的根节点判断,用户甲符合右边分支 (拥有房产为“否”);再判断是否结婚,用户甲符合左边分支 (是否结婚为否);然后判断月收入是否大于 4k,用户甲符合左边分支 (月收入大于 4K),该用户落在“可以偿还”的叶子节点上。所以预测用户甲具备偿还贷款能力。

  • 例3:分类问题
    决策树进行空间划分的一个例子。在这里有红色和蓝色两类训练样本,用下面两条平行于坐标轴的直线可以将这两类样本分开,这个划分方案对应的决策树如下图所示:
    在这里插入图片描述

2 决策树建立

  • 通过特征选择、剪枝,介绍如何根据已有的样本数据建立一棵决策树。即构建决策树的三要素:

    • 特征选择:信息增益、信息增益率
    • 决策树生成:ID3、C4.5、Cart树等等
    • 决策树剪枝: 解决过拟合。分为先剪枝、后剪枝
  • 构造决策树的基本算法
    (1) ID3算法 (Iterative Dichotomiser 3):使用信息增益进行特征选择
    (2)C4.5算法(ID3 算法的改进):使用信息增益率进行特征选择,克服了信息增益选择特征的时候偏向于特征个数较多的不足。
    (3)CART算法(分类回归树) : 既可以用于分类(分类树),也可以用于回归(回归树)。利用 CART 构建回归树用到树的剪枝技术,用于防止树的过拟合。

  • 使用递归程序建树
    递归的终止通常有两个:
    一是所有训练数据子集被基本正确分类。
    二是没有合适的特征可选,即可用特征为0,或者可用特征的信息增益或信息增益比都很小了。

在这里插入图片描述

2.1 特征选择

  • 选择一个合适的特征作为判断节点,可以快速的分类,减少决策树的深度。决策树的目标就是把数据集按对应的类标签进行分类。
  • 最理想的情况是,通过特征的选择能把不同类别的数据集贴上对应类标签。
  • 特征选择的目标使得分类后的数据集比较纯。如何衡量一个数据集纯度,这里就需要引入数据纯度函数。下面将介绍两种表示数据纯度的函数信息增益、基尼指数

2.1.1 信息增益

  • 信息熵:表示的是不确定度。均匀分布时,不确定度最大,此时熵就最大。

  • 信息增益:当选择某个特征对数据集进行分类时,分类后的数据集信息熵会比分类前的小,其差值表示为信息增益。信息增益可以衡量某个特征对分类结果的影响大小。

  • 例1:在样本数据集 D 中,混有 c 种类别的数据。构建决策树时,根据给定的样本数据集选择某个特征值作为树的节点。

    • 在数据集中,可以计算出该数据中的信息熵:
      在这里插入图片描述其中 D 表示训练数据集,c 表示数据类别数,Pi 表示类别 i 样本数量占所有样本的比例。

    • 对应数据集 D,选择特征 A 作为决策树判断节点时,在特征 A 作用后的信息熵的为 Info(D),计算如下:
      在这里插入图片描述其中 k 表示样本 D 被分为 k 个部分。

    • 信息增益表示数据集 D 在特征 A 的作用后,其信息熵减少的值。公式如下:
      在这里插入图片描述
      对于决策树节点最合适的特征选择,就是 Gain(A) 值最大的特征。

    2.1.2 基尼指数

基尼指数是另一种数据的不纯度的度量方法,其公式为:

在这里插入图片描述

其中 c 表示数据集中类别的数量,Pi 表示类别 i 样本数量占所有样本的比例。 从该公式可以看出,当数据集中数据混合的程度越高,基尼指数也就越高。当数据集 D 只有一种数据类型,那么基尼指数的值为最低 0。

如果选取的属性为 A,那么分裂后的数据集 D 的基尼指数的计算公式为:
在这里插入图片描述
其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。

对于特征选取,需要选择最小的分裂后的基尼指数。也可以用基尼指数增益值作为决策树选择特征的依据。公式如下:
在这里插入图片描述
在决策树选择特征时,应选择基尼指数增益值最大的特征,作为该节点分裂条件。

2.2 剪枝

  • 在分类模型建立的过程中,很容易出现过拟合的现象。过拟合是指在模型学习训练中,训练样本达到非常高的逼近精度,但对检验样本的逼近误差随着训练次数而呈现出先下降后上升的现象。过拟合时训练误差很小,但是检验误差很大,不利于实际应用。
  • 决策树的过拟合现象可以通过剪枝进行一定的修复。剪枝分为预先剪枝和后剪枝两种。

预先剪枝

  • 指在决策树生长过程中,使用一定条件加以限制,使得产生完全拟合的决策树之前就停止生长。
  • 预先剪枝的判断方法也有很多,比如信息增益小于一定阀值的时候通过剪枝使决策树停止生长。但如何确定一个合适的阀值也需要一定的依据,阀值太高导致模型拟合不足,阀值太低又导致模型过拟合。

后剪枝

  • 是在决策树生长完成之后,按照自底向上的方式修剪决策树。
  • 后剪枝有两种方式,一种用新的叶子节点替换子树,该节点的预测类由子树数据集中的多数类决定。

另一种用子树中最常使用的分支代替子树。预先剪枝可能过早的终止决策树的生长,后剪枝一般能够产生更好的效果。但后剪枝在子树被剪掉后,决策树生长的一部分计算就被浪费了。

2.3 ID3算法:使用信息熵增益作为划分准则

  • ID3算法采用香农熵作为度量信息度量方式,并且按照信息增益划分数据集,选择具有最高的信息增益进行划分。香农熵定义为信息的期望值计算公式如下:
  • 算法步骤
    (1)如果所有的属性都被用于划分,直接结束
    (2)计算所有特征的信息增益,选择信息增益较大的(如a节点)值对应的特征进行分类
    (3)如果使用a节点作为划分节点没有划分完成,接下来使用除去a节点之外的其他特征节点中信息增益较大的进一步进行建立决策树。(递归建立决策树)
  • 算法停止条件
    (1)如果属性都用于划分,直接结束;如果还有没有被划分的节点,使用多数表决。
    (2)如果所有样本都已经分类,直接结束。
    (3)定义最大不纯度进行度量
    (4)定义叶子节点的数目
    (5)定义分支节点包含的样本个数
  • 算法改进
    信息增益率——C4.5算法:在ID3算法基础上提出了信息增益率
    信息增益率改进:由于信息增益偏向特征取值较多的不足之处,所以使用信息增益率进一步划分决策树

2.4 C4.5算法:使用信息增益率作为划分准则

  • C4.5算法首先定义了“分裂信息”,其定义可以表示成:
    在这里插入图片描述

  • 然后,增益率被定义为:
    在这里插入图片描述
      
      gain(A):分割前的信息增益, split_info(A):分裂信息值。

  • C4.5选择具有最大增益率的属性作为分裂属性,其具体应用与ID3类似。

2.4 CART 模型:使用Gini系数作为划分准则

3 算法分析

  • 不稳定性(Instability)

决策树虽然功能强大,但也有一些局限性。首先,决策树的决策边界都是正交直线(所有的切分都和某一个坐标轴垂直),这使得它们对数据集的旋转很敏感。例如,下图显示了简单的线性可分数据集,在左侧,决策树很容易将其切分。但是在右侧,数据集旋转45°,决策树出现了不必要的绕弯弯。尽管二者都很好地拟合了训练集,很明显右侧的模型难以很好地一般化。一个解决方案是使用PCA,它可以使训练集旋转到最好的方向。

在这里插入图片描述
此外,决策树对训练数据集微小的变动也会很敏感。

随机森林通过许多决策树的预测平均值,可以避免这一不稳定性。

4 例子

例1:ID3算法(SNS社区中不真实账号检测)

为了简单起见,我们假设训练集合包含10个元素:
在这里插入图片描述
其中s、m和l分别表示小、中和大。

设L、F、H和R表示日志密度、好友密度、是否使用真实头像和账号是否真实,下面计算各属性的信息增益。

在这里插入图片描述在这里插入图片描述
因此日志密度的信息增益是0.276。

用同样方法得到H和F的信息增益分别为0.033和0.553。

因为F具有最大的信息增益,所以第一次分裂选择F为分裂属性,分裂后的结果如下图表示:
在这里插入图片描述
在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就可以得到整个决策树。

  上面为了简便,将特征属性离散化了,其实日志密度和好友密度都是连续的属性。对于特征属性为连续值,可以如此使用ID3算法:

  先将D中元素按照特征属性排序,则每两个相邻元素的中间点可以看做潜在分裂点,从第一个潜在分裂点开始,分裂D并计算两个集合的期望信息,具有最小期望信息的点称为这个属性的最佳分裂点,其信息期望作为此属性的信息期望。

例2:

https://blog.csdn.net/pc_zkr/article/details/83020585

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值