决策树
一棵决策树(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