机器学习算法——决策树

1.简述

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。把“决策树”这个概念进行分词,到底是“决策”在前,还是“树”在前呢,我理解的是“树”在前面,“决策”在后面,通过树形结构帮助我们做决策。

决策树是一种基本的分类与回归方法。

内部节点:内部节点表示在一个属性上的测试,每一个分支代表了一个属性上的测试(值)。叶子节点:对应从根节点到该叶节点所经历的路径所表示的对象的值。叶节点存放一个类别

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

决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。

2.特征的选择

对于一个混乱的系统而言,信息的混乱程度越大,我们的决策可能就越难。
当我们使用决策树这个办法帮我们做“决策”时,系统信息越混乱,我们需要的构建的“树”就会越“繁茂”,有更多的节点和分支。

而我们希望的是最快的得到决策的结果,这就要求这棵树要尽可能的矮,也就是希望系统信息的混乱程度小。对于一个确定的系统而言,特征的选择顺序可以是多样的,进而树形状和高度就是不同的。试想如果如果我们选择一个特征进行分类,把已知信息丢进去以后, 分类的结果和随机分类的结果无异,此时这棵树会平白高出一层来,而且没有对结果并没改进,所以一个特征分类能力评价标准就变成了这个特征能否系统信息的混乱程度降低。
信息增益

熵:表示随机变量不确定性的度量
信息增益:表示特征X的信息而使得类Y的信息的不确定性减少的程度。
信息增益比:以信息增益作为特征选择准则,会存在偏向于选择取值较多的特征的问题。可以采用信息增益比对这一问题进行校正。

信息增益
信息熵表示的是不确定度。均匀分布时,不确定度最大,此时熵就最大。当选择某个特征对数据集进行分类时,分类后的数据集信息熵会比分类前的小,其差值表示为信息增益。信息增益可以衡量某个特征对分类结果的影响大小。

ID3算法
ID3算法的核心是在决策树的各个结点上应用信息增益准则进行特征选择。具体做法是:

从根节点开始,对结点计算所有可能特征的信息增益,选择信息增益最大的特征作为结点的特征,并由该特征的不同取值构建子节点;
对子节点递归地调用以上方法,构建决策树;
直到所有特征的信息增益均很小或者没有特征可选时为止。

C4.5算法
C4.5算法与ID3算法的区别主要在于它在生产决策树的过程中,使用信息增益比来进行特征选择。

CART算法
分类与回归树(classification and regression tree,CART)与C4.5算法一样,由ID3算法演化而来。CART假设决策树是一个二叉树,它通过递归地二分每个特征,将特征空间划分为有限个单元,并在这些单元上确定预测的概率分布。

CART算法中,对于回归树,采用的是平方误差最小化准则;对于分类树,采用基尼指数最小化准则。

3.决策树的计算过程

训练阶段
从给定的训练数据集DB,构造出一棵决策树,

class = DecisionTree(DB)

分类
从跟节点开始,按照决策树都分类属性逐层往下划分,直到叶子节点,获得分类、决策的结果。

y= DecisionTree(x)

4.决策树剪枝

如果对训练集建立完整的决策树,会使得模型过于针对训练数据,拟合了大部分的噪声,即出现过度拟合的现象。为了避免这个问题,有两种解决的办法:
前置裁剪
前置裁剪 在构建决策树的过程时,提前停止。那么,会将切分节点的条件设置的很苛刻,导致决策树很短小。结果就是决策树无法达到最优。实践证明这种策略无法得到较好的结果。
后置裁剪
后置裁剪 决策树构建好后,然后才开始裁剪。
采用两种方法:
1)用单一叶节点代替整个子树,叶节点的分类采用子树中最主要的分类;
2)将一个字数完全替代另外一颗子树。后置裁剪有个问题就是计算效率,有些节点计算后就被裁剪了,导致有点浪费。

决策树算法的优点

  • 易于理解和实现、数据的准备比较简单
  • 相对短的时间内能够对大型数据源做出可行且效果良好的结果
  • 能够同时处理数据类型和常规属性
    -易于通过静态测试来对模型进行测评
  • 对缺失值不敏感

决策树算法的缺点

  • 对于那些各类别样本数量不一致的数据,在决策树当中信息增益的结果偏向于那些有更多数值的特征。
  • 忽略了数据集中属性直接面对相关性
  • 对连续性字段比较难预测

你可能感兴趣的:(机器学习算法——决策树)