机器学习之决策树简介

来源:互联网 发布:微信公众号绑定域名 编辑:程序博客网 时间:2024/06/06 08:55

综述

  • 一种非常常用的机器学习算法,属于监督学习,可以用于分类和回归。
  • 每个内部节点表示在一个属性上的测试,每个分支代表当前测试的输出。每个叶节点代表类别。
  • 根据属性的值分类。得到的新节点是根据属性分后的实例
  • 当新节点内,所有的实例都是同一个标记的时候,停止分类
  • 自顶向下,基本思想是以信息熵为度量,构造一棵熵值下降最快的树,直到熵的值最终为0。
  • 可能是最常使用的数据挖掘算法,主要有ID3,X4.5,CART
  • 可能会过度预测,看情况进行剪枝

算法构造

流程图的树结构,对属性测试,判断,然后输出。
判断生成的子节点是否满足停止分割的条件。
节点:属性
分支:根据属性的值的情况,决定分支的个数。

算法流程

决策树本质是个递归过程。判属性–>创分支–>选属性–>递归结束条件。
用伪代码总结执行步骤如下

伪代码:    if 符合结束条件 return 类标签    else        计算/寻找最适合的特征        划分分支        创建新子集            for 每个子集                调用本段代码并增加返回结果到分直接点中        return 分支节点      

这里需要注意递归结束条件的判定。西瓜书上写的有点乱,我就以我自己的理解总结一下这些条件

样本/属性情况 属性取值 操作 有样本有属性 样本不全是同一类 继续执行算法 有样本无属性 样本都是同一类 结束算法 有样本无属性 样本不全是同一类 多数表决 无样本有属性 根据父节点情况判断 由父节点判断 无样本无属性 None None

在算法的构造过程中,选择最优特征至关重要

我们处理数据集的最大原则是将混乱的数据变得有序,所以,在选择属性/节点的时候,选择能把数据冷静下来的属性。
这里我们为了衡量混乱程的,引入熵的概念。
熵:衡量信息大小的概念。一条信息含有信息量的大小,跟他的不确定性直接相关。
信息的度量=不确定性的多少。变量的不确定性越大,熵越大。

节点的选择

ID3算法

如上述,为了使信息混乱程度尽快降低,在选择属性的时候,总是要选择具有最大混乱程度的属性,这样才能尽快降低混乱程度。
用信息增益来衡量降低混乱程度的能力。划分数据集的最大原则是让数据变得更加有序
熵的计算如下公式:
信息增益 = 系统熵 - 条件熵
整个系统的熵定义为:
这里写图片描述
条件熵:
假如使用属性A进行分类,计算每个A可能取值的信息熵。计算公式和系统熵类似。最后分别乘以取得的概率,并求和

特征t的信息增益 = 该节点内总的熵 - 特征t给定条件下的经验条件的熵。
信息增益的计算
遍历当前节点的所有特征,并选择信息增益最大的特征作为当前的分裂特征。

信息增益法,对于属性可取值数目较多的属性,比较偏好

C4.5算法

是在ID3算法上的改进,用信息增益率来衡量。
信息增益率:
信息增益和他的条件熵的比值

这个算法对于属性取值可能较少的属性,比较偏好

CART算法

从数据集中随机抽取两个样本,计算相同/不同的概率。
集中反映了集合的纯度。类似经济学上的基尼系数。
基尼系数越高,两极分化(不纯)越高
基尼系数越低,总体一致性越高。
gini系数:随机抽取两个样本,其类别标记不一样的概率。
1 - sum(p**2)

决策树的优化

决策树非常强大,如果不加限制的运行,甚至可以分到非常的细化,导致过拟合,泛化能力降低。解决这个问题的方法是剪枝和随机森林。

剪枝处理

过度拟合问题。决策树的分支过多。该模型变得过度针对于某一类数据,这时候需要对决策树进行剪枝处理

  • 预剪枝
    在决策树生成的过程中,对节点进行估计,如果当前节点的划分不能提高决策树的泛化能力,就停止剪枝。
    通过验证集中的数据准确率,评价是否能带来准确率的提升。
    许多的叶节点没有展开,可能出现欠拟合的风险。

  • 后剪枝
    先从训练集中生成一颗完整的决策树,自底向上对非叶节点考察,如果把当前节点替换为叶子节点能带来决策树泛化性能提升,就把当前节点替换为叶节点。
    挨个考察非叶节点,将其替换为叶节点,比较验证精度,如果有提升,就直接替换成叶节点,继续判断下一非叶节点
    开销更大,但是效果比较好

评价

决策树最大的优点是可以很轻易的对一个受训模型解释。

  • 计算简单,便于理解,中间值缺失不敏感
  • 过拟合,需要优化/剪枝处理
  • 使用标称和数值型

进阶

随机森林见后续博文

简介熵

熵,是用来衡量一个系统混乱程度的指标,熵越大越混乱。
定义熵的公式如所示,但是如何理解呢?
通俗一点:

  • 概率越小的事情,熵越大
  • 概率越大的事情,熵越小

比如:
今天太阳从东边出来了,这个事件并没有什么稀奇的,概率百分百,熵非常小
今天月亮居然是红色的!这个事情就很有搞头了,概率即低的事件,信息量很大

两个不相关事件发生,他们所包含的信息量:
h = h1 + h2
这两个事件发生的概率:
p = p1 * p2
所以h和p之间的关系一定是对数关系
h = -log(p)
熵衡量的是一个系统内所以的信息,:
H = -sum(p*log(p))

0 0
原创粉丝点击