今天开始进入决策树的算法部分,首先介绍一下这部分涉及到的知识点。
一、大纲
1、信息熵
决策树在生成过程中,对于评判是否要对树进行划分的关键指标。即树生成时的决策根本。
2、决策树
之前提过KD树的划分标准。02 KNN算法 - KD Tree KD树是基于一个划分的标准(中位数),最后构建起了整个KD树。决策树同样也是一个树形结构,同样需要某些决策指标来构建起决策树。最后帮助我们实现回归或分类的目标。
3、决策树优化
和KD树一样,决策树模型生成以后同样会存在欠拟合和过拟合的问题。如何解决这些问题就是决策树优化需要考虑的。
4、剪枝
防止决策树过拟合的过程,实际生产过程中剪枝的操作用的很少,但面试可能会提问,了解即可。
5、决策树可视化
导入一些新的模块,最后将决策树展现在用户面前。
二、决策树的直观理解
![](https://img.haomeiwen.com/i3153092/6667ec89d88876e5.png)
根据一个人是否有房产、婚姻情况、年收入情况判断一个人是否有能力偿还债务。
根据样本构建出一个模型:
![](https://img.haomeiwen.com/i3153092/c5953761aef94108.png)
相比Logistic模型、回归模型中参数的理解,决策树是一个解释性更强的模型。
三、比特化
数据:BACADCBD...
这里ABCD出现的概率都是1/4,等概率。
即P(X=A) =P(X=B) =P(X=C) =P(X=D) =1/4
令A-00 B-01 C-10 D-11(等概率,用两个比特位表示4个变量即可)
BACADC = 01001011100111
E = 1×1/4 *4 = 1
(每个变量占用一个比特位,出现概率是1/4,一共4个变量,平均每个变量占1个比特位)
如果X变量出现概率不同:
即P(X=A)=1/2; P(X=B) = 1/4; P(X=C) =P(X=D) =1/8;
用更少的比特位描述出现概率更大的事件,能够让总的比特位数量最少:
令A-0 B-10 C-110 D-111
E=1×1/2 + 2×1/4 + 3×1/8 + 3×1/8 = 1.75
平均每个变量占1.75个比特位。其他任何一种编码方式最终得到的期望都会大于1.75,耗费了多余的计算机资源。
还可以用下面的公式表示平均每个变量占用的比特位数量:
![](https://img.haomeiwen.com/i3153092/11c9660863f9d75b.png)
p
-log2p
所以,m个变量在不同的出现概率p1~pm时,平均每个变量占用的比特位公式如下:
![](https://img.haomeiwen.com/i3153092/9ec0604f6e4050d0.png)
四、信息熵
信息熵是描述一个信息量的指标。如果一个事件发生的概率越大,那么认为该事件蕴含的信息越少。
当一个事件百分百确定的时候,我们得不到其他推论。那么认为信息量为0。
只有当事件的出现存在概率性,说明有额外的信息影响事件发生,那么针对这些信息我们才需要推理判断 。
信息熵是系统有序程度的度量,一个系统越是有序,信息熵就越低。信息熵就是用来描述系统信息量的不确定度。
信息熵 = 比特化随机变量X占用比特位的数学期望
![](https://img.haomeiwen.com/i3153092/eac0785562d50968.png)
五、条件熵
回顾H(X)的概念,并看下面的例子:
![](https://img.haomeiwen.com/i3153092/3e235d1756b0328d.png)
令L(S) = -P(S) × log2(S)
H(X) = L(X=数学) + L(X=IT) + L(X=英语)
= -0.5 × log2(0.5) - 0.25 × log2(0.25) - 0.25×log2(0.25)
= 0.5 + 0.5 + 0.5 = 1.5
H(Y) = L(Y = M) + L(Y = F)
= -0.5 × log2(0.5) - 0.5 × log2(0.5)
= 0.5 + 0.5 = 1
H(X, Y) = L(X=数学, Y=M) + L(X=IT, Y=M) + L(X=英语, Y=F) +
L(X=数学, Y=F) = -0.25 × log2(0.25) × 4 = 2
看明白上面的例子后,接下来引入条件熵的概念:
给定条件X的情况下,随机变量Y的信息熵就是条件熵。
给定条件X的情况下,所有不同x值情况下,Y的信息熵的平均值,叫做条件熵。
当专业X为数学时,Y的信息熵的值为:H(Y|X=数学)
怎么计算H(Y|X=数学)?先把数学相关的项提取出来:
![](https://img.haomeiwen.com/i3153092/f7191124e6132985.png)
现在姓别出现的概率都是2/4,根据公式:
p
-log2p
![](https://img.haomeiwen.com/i3153092/bdfae24ad453a82f.png)
-log2(0.5)=1:单个性别的信息熵。
H(Y|X=数学) = -0.5 × log2(0.5) × 2 = 1
H(Y|X=数学) 是 H(Y|X) 的一部分,H(Y|X)还包括H(Y|X=IT)、H(Y|X=英语) 根据上述的方式能够依次计算出H(Y|X=IT)、H(Y|X=英语) 的值。
回顾一下定义:
给定条件X的情况下,所有不同x值情况下,Y的信息熵的平均值,叫做条件熵。
![](https://img.haomeiwen.com/i3153092/c55975f999c3b21d.png)
![](https://img.haomeiwen.com/i3153092/990081798eb2ae26.png)
以下log表示log2
条件熵 H(X/Y)
= H(X/Y=M)×P(Y=M) + H(X/Y=F)×P(Y=F) 即加权平均熵
= [L(X=数学/Y=M)+L(X=数学/Y=M)]×P(Y=M) + H(X/Y=F)×P(Y=F)
= [-0.5 × log(0.5) × 2] × 0.5 + H(X/Y=F)×P(Y=F)
= 0.5 + H(X/Y=F)×P(Y=F) = 0.5 + 0.5 = 1
= H(X, Y) - H(Y)
条件熵 H(Y/X)
= H(Y/X=数学)×P(X=数学)+H(Y/X=IT)×P(X=IT)+H(Y/X=英语)×P(X=英语)
= [-0.5 × log(0.5) × 2] × 0.5+H(Y/X=IT)×P(X=IT)+H(Y/X=英语)×P(X=英语)
= 0.5 + 0 + 0 = 0.5
= H(X, Y) - H(X)
条件熵的另一个公式: H(Y/X) = H(X, Y) - H(X)
事件(X,Y)发生所包含的熵,减去事件X单独发生的熵,即为事件X发生前提下,Y发生“新”带来的熵。
结合概率论中的Venn图思考上面公式的意义:
![](https://img.haomeiwen.com/i3153092/e726a7b98082ed11.png)
最后给出一个推导公式:
![](https://img.haomeiwen.com/i3153092/7303beaf8a655cbb.png)
网友评论