机器学习之决策树

Posted tankeyin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之决策树相关的知识,希望对你有一定的参考价值。

1 比特化(Bits)

假设现在随机变量X具有m个值,分别为: V~1~,V~2~,....,V~m~;并且各个值出现的概率:
P(X=V1)=p1,P(X=V2)=p2, P(X=V3)=p3 .....P(X=Vm)=pm
可以使用这些变量的期望来表示每个变量需要多少个比特位来描述信息:
技术图片

2 信息熵

技术图片
H(X)就叫做随机变量X的信息熵。

2.1 信息量

指的是一个样本/事件所蕴含的信息,如果一个事件的概率越大,那么就
可以认为该事件所蕴含的信息越少。极端情况下,比如:“太阳从东方升起”,因为是确定事件,所以不携带任何信息量。

2.2 信息熵的意义

信息熵就是用来描述系统信息量的不确定度。
一个系统越是有序,信息熵就越低,一个系统越是混乱,信息熵就越高,所以信息熵被认为是一个系统有序程度的度量。

High Entropy(高信息熵):表示随机变量X是均匀分布的,各种取值情况是等概率出现的。
Low Entropy(低信息熵):表示随机变量X各种取值不是等概率出现。可能出现有的事件概率很大,有的事件概率很小。

2.3 条件熵

给定条件X的情况下,所有不同x值情况下Y的信息熵的平均值叫做条件熵。
技术图片
技术图片

3 决策树的概念

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构建决策树来进行分析的一种方式,是一种直观应用概率分析的一种图解法;决策树是一种预测模型,代表的是对象属性与对象值之间的映射关系;决策树是一种树形结构,其中每个内部节点表示一个属性的测试,每个分支表示一个测试输出,每个叶节点代表一种类别;决策树是一种非常常用的有监督的分类算法。

决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。

决策树分为两大类:分类树和回归树,前者用于分类标签值,后者用于预测连续值,常用算法有ID3、C4.5、CART等

3.1 决策树的构建

决策树算法的重点就是决策树的构造;决策树的构造就是进行属性选择度量,确定各个特征属性之间的拓扑结构(树结构);构建决策树的关键步骤就是分裂属性,分裂属性是指在某个节点按照某一类特征属性的不同划分构建不同的分支,其目标就是让各个分裂子集尽可能的‘纯‘(让一个分裂子类中待分类的项尽可能的属于同一个类别)。

构建步骤如下:

  1. 将所有的特征看成一个一个的节点;
  2. 遍历每个特征的每一种分割方式,找到最好的分割点;将数据划分为不同的子节点,eg: N1、N2....Nm;计算划分之后所有子节点的‘纯度‘信息;
  3. 对第二步产生的分割,选择出最优的特征以及最优的划分方式;得出最终的子节点: N1、N2....Nm:
  4. 对子节点N1、N2....Nm分别继续执行2-3步,直到每个最终的子节点都足够‘纯‘。

    3.2 决策树的特征属性

    属性是离散值,而且不要求生成的是二叉决策树,此时一个属性就是一个分支。
    属性是离散值,而且要求生成的是二叉决策树,此时使用属性划分的子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
    属性是连续值,可以确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。

    3.3 决策树分割属性

    决策树算法是一种“贪心”算法策略,只考虑在当前数据特征情况下的最好分割方式,不能进行回溯操作。

对于整体的数据集而言,按照所有的特征属性进行划分操作,对所有划分操作的结果集的“纯度”进行比较,选择“纯度”越高的特征属性作为当前需要分割的数据集进行分割操作,持续迭代,直到得到最终结果。决策树是通过“纯度”来选择分割特征属性点。

3.4 决策树量化纯度

决策树的构建是基于样本概率和纯度进行构建操作的,那么进行判断数据集是否“纯”可以通过三个公式进行判断,分别是Gini系数、熵(Entropy)、错误率,一般情况使用熵公式。
技术图片

当计算出各个特征属性的量化纯度值后使用信息增益度来选择出当前数据集的分割特征属性;如果信息增益度的值越大,表示在该特征属性上会损失的纯度越大 ,那么该属性就越应该在决策树的上层,计算公式为:
技术图片
Gain为A为特征对训练数据集D的信息增益,它为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差。

3.5 决策树的停止条件

一般情况有两种停止条件:

  • 当每个子节点只有一种类型的时候停止构建。
  • 当前节点中记录数小于某个阈值,同时迭代次数达到给定值时,停止构建过程,此时使用max(p(i))作为节点的对应类型。

方式一可能会使树的节点过多,导致过拟合(Overfiting)等问题;比较常用的方式是使用方式二作为停止条件。

3.6 决策树算法效果的评估

决策树的效果评估和一般的分类算法一样,采用混淆矩阵来进行计算准确率、召回率、精确率等指标。

也可以采用叶子节点的纯度值总和来评估算法的效果,值越小,效果越好。
技术图片
决策树的损失函数(该值越小,算法效果越好)。
技术图片

4 ID3算法

ID3算法是决策树的一个经典的构造算法,内部使用信息熵以及信息增益来进行构建;每次迭代选择信息增益最大的特征属性作为分割属性。
优点:
决策树构建速度快;实现简单;
缺点:

  1. 计算依赖于特征数目较多的特征,而属性值最多的属性并不一定最优
  2. ID3算法不是递增算法
  3. ID3算法是单变量决策树,对于特征属性之间的关系不会考虑
  4. 抗噪性差
  5. 只适合小规模数据集,需要将数据放到内存中

5 C4.5算法

在ID3算法的基础上,进行算法优化提出的一种算法;使用信息增益率来取代ID3算法中的信息增益,在树的构造过程中会进行剪枝操作进行优化;能够自动完成对连续属性的离散化处理;C4.5算法在选中分割属性的时候选择信息增益率最大的属性,涉及到的公式为:
技术图片
优点:

  1. 产生的规则易于理解
  2. 准确率较高
  3. 实现简单

缺点:

  1. 对数据集需要进行多次顺序扫描和排序,所以效率较低
  2. 只适合小规模数据集,需要将数据放到内存中。

6 CART算法

使用基尼系数作为数据纯度的量化指标来构建的决策树算法就叫做CART(Classification And Regression Tree,分类回归树)算法。CART算法使用GINI增益作为分割属性选择的标准,选择GINI增益最大的作为当前数据集的分割属性;可用于分类和回归两类问题。强调:CART构建是二叉树
技术图片

7 分类树和回归树

分类树采用信息增益、信息增益率、基尼系数来评价树的效果,都是基于概率值进行判断的;而分类树的叶子节点的预测值一般为叶子节点中概率最大的类别作为当前叶子的预测值。

回归树中,叶子节点的预测值一般为叶子节点中所有值的均值来作为当前叶子节点的预测值。所以在回归树中一般采用MSE作为树的评价指标,即均方差。一般情况,使用CART算法构建回归树。

8 决策树的优化策略

8.1 剪枝优化

前置剪枝:在构建决策树的过程中,提前停止。结果是决策树一般比较小,实践证明这种策略无法得到比较好的结果。

后置剪枝:在决策树构建好后,然后再开始裁剪,一般使用两种方式:

  1. 用单一叶子节点代替整个子树,叶节点的分类采用子树中最主要的分类;
  2. 将一个子树完全替代另外一棵子树;

后置剪枝的主要问题是计算效率问题,存在一定的浪费情况。

剪枝过程
对于给定的决策树T0

  1. 计算所有内部非叶子节点的剪枝系数;

  2. 查找最小剪枝系数的节点,将其子节点进行删除操作,进行剪枝得到决策树Tk;如果存在多个最小剪枝系数节点,选择包含数据项最多的节点进行剪枝操作;
  3. 重复上述操作,直到产生的剪枝决策树Tk只有1个节点;
  4. 得到决策树T0 T1 T2....Tk;
  5. 使用验证样本集选择最优子树Ta(使用原始损失函数考虑)。

其中,剪枝前后的损失函数分别为loss(R)和loss(r),剪枝系数α为:
技术图片技术图片

9 总结

算法 支持模型 树结构 特征选择 连续值处理 缺失值处理 剪枝特征属性多次使用
ID3 分类 多叉树 信息增益 不支持 不支持 不支持
C4.5 分类 多叉树 信息增益率 支持 支持 支持
CART 分类、回归 二叉树基尼系数、均方差 支持 支持 支持 支持

以上是关于机器学习之决策树的主要内容,如果未能解决你的问题,请参考以下文章

机器学习之监督学习-分类模型决策树的基本概念

机器学习之决策树

机器学习之决策树

机器学习之决策树

机器学习之决策树算法

python机器学习之决策树