机器学习算法/模型——决策树(1)基本理论和代码实例


一棵决策树(Decision Tree)是一个树结构(可以是二叉树或非二叉树),每个非叶节点对应一个特征,该节点的每个分支代表这个特征的一个取值,而每个叶节点存放一个类别或一个回归函数。

决策树树模型由一组 if-then-else 规则构成。
决策树的构造算法被称为递归分区法。

1. 本质和概述

1.1 本质

核心:一组嵌套的判定规则

决策树算法是,通过决定性特征学习数据集中的规则,对未知数据集进行划分的算法;其中叶子节点为决策(分类)结果,非叶子节点为选择进行划分的特征(决定性特征、最优特征)。
在这里插入图片描述

1.2 概念/术语

  • 拆分值
    一个预测变量值,它将一组记录分为两部分,使得一部分中的预测变量小于拆分 值,而另一部分中的预测变量大于拆分值。

  • 节点
    节点是拆分值的图形化表示(或规则表示)。

  • 非叶子节点(含根节点) = 决策节点 = 特征 = 条件判断

  • 叶子节点 = 分类/决策结果
    一组 if-then 规则的终点,或一个树分支的终点

  • 损失
    在拆分过程的某一阶段中误分类的个数。损失越大,不纯度越高。

  • 不纯度 = 熵= 不确定性 = 异质性
    不纯度:表示在数据的一个细分中发现多个类混杂的程度。细分中混杂的类越多,该细分的不纯度就越高(种类越少纯度越高)
    熵:是信息论中描述事件结果的不确定性的指标。
    熵是纯度的对立面,跟不纯度表达的是同一个意思。(熵 = 不确定性 = 不纯度

  • 递归拆分
    反复对数据进行划分和细分,目的是使每个最终细分内的结果尽可能同质。
    每个递归构建的新的分裂点(节点)都会不断地降低不纯度(熵),最终在叶子节点上,不纯度降为0

  • 剪枝
    为了降低过拟合,对一棵完全长成树逐步剪枝的过程。

分裂点阈值的确定

决策树本质就是想在每个特征上找一个阈值,根据这些阈值来对数据分类。这个阈值是通过遍历来找到的。

2. 常用算法:分裂点选择依据

决策树的构造过程是一个迭代的过程。每次迭代中,采用不同特征作为分裂点,来将样本数据划分成不同的类别。被用作分裂点的特征叫做分裂特征。

选择分裂特征的目标,是让各个分裂子集尽可能地“纯”,即尽量让一个分裂子集中的样本都属于同一类别。(种类越少纯度越高——越往下纯度越高)

如何选择分裂特征的使用先后顺序?
如何使得各个分裂子集“纯?

经典算法大致有 ID3、C4.5 和 CART,其中用到的关键指标分别是:信息增益、信息增益率和基尼系数。

注:基尼系数和熵是类似的概念,只不过量化的公式不同。

2.0 信息熵

信息熵在机器学习中也叫做经验熵,因为熵的计算是依据样本数据而来。

  • 信息量
    信息的大小跟随机事件的概率有关。
    越小概率的事情发生了产生的信息量越大;
    越大概率的事情发生了产生的信息量越小
  • 不纯度/复杂度
    信息熵还可以作为一个系统复杂程度的度量。
    如果系统越复杂,出现不同情况的种类越多,那么他的信息熵是比较大的。
    如果一个系统越简单,出现情况种类很少(极端情况为1种情况,那么对应概率为1,那么对应的信息熵为0),此时的信息熵较小。
  • 信息熵

当前样本集合 Y 的信息熵的定义式为:
在这里插入图片描述
其中,i=1,2,…k 为当前样本集合 Y的 k 个可能结果;pi 为集合 Y 中第 k 类样本所占的比例。

当样本只属于某一类时熵最小,当样本均匀的分布于所有类中时熵最大。因此,如果能找到一个分裂让熵最小,这就是我们想要的最佳分裂。

【大白话理解】
Y 在机器学习中可以表示不同的属性值也可以表示不同的标签值;
整个式子是集合中所有种类的熵(信息量)之总和;
属性或者标签有几个 类别(n) 就有几个熵的和;


问:如何理解 ?或者说 熵的公式的来源是什么?

答:可以看成 sum( p * log( 1 p \frac{1}{p} p1) ) 更好理解,其中 p 代表事件发生的概率 ,log( 1 p \frac{1}{p} p1) 表示该事件的储存空间!例如:

一个随机变量有8种可能,相当于8个事件,如果是0和1表示,一共需要 log2(8)=3 bit

换句话说,如果一个事件的概率是1/8,需要 log2(8)=3 bit

再换句话说,如果一个事件的概率是p,需要 log2( 1 p \frac{1}{p} p1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值