You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

257 lines
8.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 5.决策树——每次选一边
Decision tree
### 知识树
Knowledge tree
![1618575672562](assets/1618575672562.png)
### 一个小故事
A story
挑苹果:
![1618575710142](assets/1618575710142.png)
> 根据这些特征,如颜色是否是红色、硬度是否是硬、香味是否是香,如果全部满足绝对是好苹果,或者红色+硬但是无味也是好苹果,从上图可以看出来,只要做足够的循环判断即可得到结果。
如下图:
![1618576033128](assets/1618576033128.png)
> 一步步走下来,就能挑到好苹果。这就是决策树
1. 最顶端的叫根节点,所有样本的预测都是从根节点开始。
2. 每一个圆形节点表示判断,每个节点只对样本的某个属性进行判断。
3. 圆形节点是标记节点,走到圆形节点表示判断结束,将圆形节点中的标签作为对应的预测结果。
如何构建决策树:
1. 构建的决策树按顺序对每个特征进行判断(低效)
2. 每个判断节点都尽可能让一半进入A分支另一半进入B分支高效
引入新的知识,信息熵
### 信息熵
Information entropy
1. 每走一步,我们都在确定苹果的好坏。
2. 在根节点时,我们对苹果的好坏一无所知。
3. 经过对颜色的判断后如果是红色我们明白好坏的概率是1/2。虽然还包含了1/2的不确定性。
4. 如果苹果红色的前提下又硬我们100%确定它是好苹果。此时不确定性坍塌为0。
5. 这是一个减少不确定性的过程。
从整体来讲,我们希望决策树每走一步,不确定性都下降的快一些,让我们的判断步数无限小。
**什么是信息的不确定性?**
就是信息熵
在信息论与概率统计中entropy是表示随机变量不确定性的度量设X是一个取有限个值的离散随机变量其概率分布为
![1618576749908](assets/1618576749908.png)
则随机变量X的熵定义为
![1618576770871](assets/1618576770871.png)
> 面试可能会问到这个公式,还有交叉熵、相对熵
熵越大则随机变量的不确定性越大。其中0 ≤ H(P) ≤ log n
### 举例计算
Example
假设投色子6个的概率分别是1/6计算如下
![1618577639913](assets/1618577639913.png)
> 其中6个1/6log左边的六分之一加起来就是1
![1618577661694](assets/1618577661694.png)
> ![1618577700910](assets/1618577700910.png)
则最终=log6
这也解释了为什么上面H(P) ≤ log n
另外均由分布的时候熵最大因为所有可能都是一样的如上面的6个面都是1/6。
如果有1个坏苹果和9个好苹果时我们可以认为大部分都是坏苹果。内部并不混乱确定性很大熵很小。
### 信息增益
Information gain
表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
特征A对训练集D的信息增益g(D,A)定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差g(D, A) = H(D) - H(D|A)
当前的信息熵等于划分完(如划分成两个)的信息熵之和。
**信息增益算法**
输入训练数据集D和特征A
输出特征A对训练数据集D的信息
1. 计算数据集D的经验熵H(D)
![1618582986891](assets/1618582986891.png)
2. 计算特征A对数据集D的经验条件熵H(D|A)
![1618583056578](assets/1618583056578.png)
![1618583066653](assets/1618583066653.png)
3. 计算信息增益
![1618583156554](assets/1618583156554.png)
### 举个例子
Example
是否信贷
| ID | 年龄 | 有工作 | 有自己房子 | 信贷情况 | 类别 |
| ---- | ---- | ------ | ---------- | -------- | ---- |
| 1 | 青年 | 否 | 否 | 一般 | 否 |
| 2 | 青年 | 否 | 否 | 好 | 否 |
| 3 | 青年 | 是 | 否 | 好 | 是 |
| 4 | 青年 | 是 | 是 | 一般 | 是 |
| 5 | 青年 | 否 | 否 | 一般 | 否 |
| 6 | 中年 | 否 | 否 | 一般 | 否 |
| 7 | 中年 | 否 | 否 | 好 | 否 |
| 8 | 中年 | 是 | 是 | 好 | 是 |
| 9 | 中年 | 否 | 是 | 非常好 | 是 |
| 10 | 中年 | 否 | 是 | 非常好 | 是 |
| 11 | 老年 | 否 | 是 | 非常好 | 是 |
| 12 | 老年 | 否 | 是 | 好 | 是 |
| 13 | 老年 | 是 | 否 | 好 | 是 |
| 14 | 老年 | 是 | 否 | 非常好 | 是 |
| 15 | 老年 | 否 | 否 | 一般 | 否 |
对上表所给的训练数据集D根据信息增益准则选择最优特征。首先计算经验熵H(D)
![1618747519765](assets/1618747519765.png)
> 计算类别一共15个类别9个是6个否
然后计算各特征对数据集D的信息增益分别以A1,A2,A3,A4表示年龄、有工作、有自己房子和信贷情况4个特征
1. 首先计算年龄![1618747694405](assets/1618747694405.png)
> H(D)=0.971上面计算了H(D1)青年H(D2)中年H(D3)老年
2. 计算有工作
![1618747990121](assets/1618747990121.png)
> H(D)=0.971H(D1)是有工作H(D2)是无工作
3. 计算有无房子
![1618748039172](assets/1618748039172.png)
4. 计算信贷情况
![1618748063199](assets/1618748063199.png)
有无房子是作为信贷的第一个划分,下降的最快
### 信息增益比
Information gain ratio
**信息增益比:**
如果以信息增益为划分依据,存在偏向选择取值较多的特征,信息增益是对这一问题进行矫正。
**举例**
如上面的例子后面加入了身份证这个特征身份证又是唯一的算法对样本画了个15叉树一层就搞定了全部的分类。
这样会造成一个问题,划分会倾向于特征取值数目较多的,即分的更快。
但在预测集上就出现很大的问题了,即预测集的身份证肯定也是唯一的。
**定义:**
特征A对训练数据集D的信息增益比![1618748316870](assets/1618748316870.png)定义为其信息增益g(D,A)与训练数据集D关于特征A的经验熵H(D)之比:
![1618749594369](assets/1618749594369.png)
**计算**
如上面的年龄有3个类青年、中年、老年![1618749717493](assets/1618749717493.png)
信息增益比和信息增益的区别就是除以![1618749843112](assets/1618749843112.png)
### 决策树的构建
Build the decision tree
ID3算法
- 输入训练数据集D特征A阈值ε
- 输出决策树T
1. 若D中所有实例属于同一类![1618749968444](assets/1618749968444.png)则T为单节点数并将类![1618749968444](assets/1618749968444.png)作为该节点的类标记返回T
2. 若A = Ø则T为单节点树并将D中实例数最大的类![1618749968444](assets/1618749968444.png)作为该节点的类标记返回T
3. 否则按算法计算A中各特征对D的信息增益选择信息增益最大的特征Ag
4. 如果Ag的信息增益小于阈值ε则置T为单节点树并将D中实例数最大的类![1618749968444](assets/1618749968444.png)作为该节点的类标记返回T
5. 否则对Ag的每一个可能值ai依![1618750408613](assets/1618750408613.png)将D分割为若干非空子集Di将Di中实例最大的类作为标记构建子节点由节点及其子节点构成树T返回T
6. 对第i个子节点以Di为训练集以A - {Ag}为特征集递归地调用1~5步得到树Ti返回Ti。
C4.5算法大体相同只不过计算的是信息增益比而不是信息增益。我们通常也是用C4.5作为决策树的算法,其区别也就在于多了个分母。
### 总结
Summarization
1. 决策树的核心思想:以树结构为基础,每个节点对某特征进行判断,进入分支,直到到达叶节点。
2. 决策树构造的核心思想:让信息熵快速下降,从而达到最少的判断次数获得标签。
3. 判断信息熵下降速度的方法:信息增益。
4. 构建决策树算法ID3使用信息增益、C4.5(使用使用信息增益比)。
5. 信息增益会导致节点偏向选取取值角度的特征的问题。
> 关于第5点的补充统计学习和西瓜书都是给的这个解释但还有另一种解释就是信息增益导致大数问题——>概率是否准确的问题。