决策树(上)
作者:互联网
本篇随笔是数据科学家学习第七周的内容,主要参考资料为:
极客时间-数据分析实战45讲之决策树上中下
上面这个图就是一棵典型的决策树。我们在做决策树的时候,会经历两个阶段:
-
- 构造
- 剪枝
-
- 选择哪个属性/特征作为根节点?
- 选择哪些属性/特征作为内部节点?
- 什么时候停止并得到目标状态,即叶节点 — 最终决策结果
-
- 过拟合,这个概念你一定要理解,它指的就是模型的训练结果“太好了”,以至于在实际应用的过程中,会存在“死板”的情况,导致分类错误。
- 欠拟合,和过拟合就好比是下面这张图中的第一个和第三个情况一样,训练的结果“太好“,反而在实际应用过程中会导致分类错误。
造成过拟合的原因之一就是因为训练集中样本量较小。如果决策树选择的属性过多,构造出来的决策树一定能够“完美”地把训练集中的样本分类,但是这样就会把训练集中一些数据的特点当成所有数据的特点,但这个特点不一定是全部数据的特点,这就使得这个决策树在真实的数据分类中出现错误,也就是模型的“泛化能力”差。
泛化能力指的分类器是通过训练集抽象出来的分类能力,也可以理解是举一反三的能力。如果我们太依赖于训练集的数据,那么得到的决策树容错率就会比较低,泛化能力差。因为训练集只是全部数据的抽样,并不能体现全部数据的特点。
剪枝:为了保证模型有足够的泛化能力,分类树需要进行剪枝。剪枝分为预剪枝和后剪枝。
- 后剪枝:
![](https://www.icode9.com/i/l/?n=18&i=i-beta/1402654/201912/1402654-20191221121751218-771680108.png)
从上图这个数据集看,我们需要确定将哪一个条件作为根节点,哪一个作为中间节点。哪个条件作为根节点。所以需要通过2个指标度量:
-
- 纯度-让目标变量的分歧最小
- 信息熵(entropy)-信息的不确定性
-
- 集合1: Entropy(t) = -1/6log2 1/6 - -5/6log2 5/6 = 0.65
- 集合2: Entropy(t) = -3/6log2 3/6 - -3/6log2 3/6 = 1
信息熵越大,纯度越低;当集合中样本均匀混合时,信息熵最大,纯度最低。上述信息熵公式是下面各分类算法的基础。
基于上述纯度和信息熵的定义,我们会使用到如下3种指标:
-
- 信息增益— ID3算法
- 信息增益率 — C4.5算法
- 基尼指数 — Cart算法
- 信息增益— ID3算法
-
- 计算根节点的信息熵(注意根节点是“是否打篮球”的结果,因为我们还不知道用哪个属性作为根节点— 也是我们要求解的过程)
- 计算某一个节点(某一列)下每个属性的信息熵
- 计算这个节点归一化信息熵
- 计算Gain(D,a)
- 按上述步骤,遍历所有的节点(所有的列/所有的属性)后,得到每个列的Gain,取最大值的节点为当前节点。
- 按上述步骤,计算出所有的节点。
-
- 计算根节点的信息熵(注意根节点是“是否打篮球”的结果,因为我们还不知道用哪个属性作为根节点— 也是我们要求解的过程)
-
- 计算某一个节点(某一列)下每个属性的信息熵(假设计算第一列天气— 以天气作为属性的划分)
那么会有三个叶子节点 D1、D2 和 D3,分别对应的是晴天、阴天和小雨。我们用 + 代表去打篮球,- 代表不去打篮球。那么第一条记录,晴天不去打篮球,可以记为 1-,于是我们可以用下面的方式来记录 D1,D2,D3
D1(天气 = 晴天)={1-,2-,6+}
D2(天气 = 阴天)={3+,7-}
D3(天气 = 小雨)={4+,5-} 我们先分别计算三个叶子节点的信息熵:-
- 计算这个节点归一化信息熵
-
- 计算Gain(D,a)
-
- 按上述步骤,遍历所有的节点(所有的列)后,得到每个列的Gain,取最大值的节点为当前节点。
![](https://www.icode9.com/i/l/?n=18&i=i-beta/1402654/201912/1402654-20191222123624184-620812381.png)
-
- 然后我们要将上图中第一个叶节点,也就是 D1={1-,2-,3+,4+}进一步进行分裂,往下划分,计算其不同属性(天气、湿度、刮风)作为节点的信息增益,可以得到:
1.计算父节点-- 即温度为高的节点的信息熵为:
Ent(D) = - (2/4log2 2/4 + 2/4log2 2/4) = - (-1) = 1
2.如果以天气作为接下来的属性划分节点,则天气和数据集分为“晴” - (1-,2-),“阴”(3+),“下雨”(4+)—— 注意只在上述D1的数据集中划分,则天气的归一化信息熵为:
2/4(2/2log2 2/2) + 1/4(1/1log2 1/1) + 1/4(1/1log2 1/1) = 2/4(0) + 1/4(0) + 1/4(0) = 0.
3.接下来以此类推,即:决定了湿度是温度为高的子节点后,需要决定温度为“中”的子节点是什么;然后是温度为低的子节点...我们能看到湿度,或者天气为 D1 的节点都可以得到最大的信息增益,这里我们选取湿度作为节点的属性划分。同理,我们可以按照上面的计算步骤得到完整的决策树,结果如下:
![](https://www.icode9.com/i/l/?n=18&i=i-beta/1402654/201912/1402654-20191222123656215-928652897.png)
下篇继续介绍C4.5和Cart算法。
标签:打篮球,信息熵,Gain,决策树,节点,属性 来源: https://www.cnblogs.com/favor-dfn/p/12076601.html