决策树的一些理解

几个概念

在信息论里面,熵是对不确定性的测量。但是在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。
1948年,香农引入了信息熵,将其定义为离散随机事件出现的概率,一个系统越是信息量低,信息熵就越低,反之一个系统越是信息量高,它的信息熵就越高。所以信息熵可以被认为是系统有序化程度的一个度量。
信息熵就是用来描述信息源(量)的不确定度,变量的不确定性越大(不确定性越大,其信息量也就越大),熵也就越大

H ( x ) = E [ l ( x i ) ] = E [ log ⁡ ( 2 , 1 / P ( x i ) ) ] = − ∑ P ( x i ) log ⁡ ( 2 , P ( x i ) ) ( i = 1 , 2 , . . n ) H(x)=E\left[l\left(x_{i}\right)\right]=E\left[\log \left(2,1 / P\left(x_{i}\right)\right)\right]=-\sum P\left(x_{i}\right) \log \left(2, P\left(x_{i}\right)\right)(i=1,2, . . n) H(x)=E[l(xi)]=E[log(2,1/P(xi))]=P(xi)log(2,P(xi))(i=1,2,..n)

条件熵

H(Y|X) = H(X,Y)-H(X)

在这里插入图片描述

上图代表(x,y)发生所包含的熵
在这里插入图片描述

H(Y|X) = H(X,Y)-H(X)可以这么理解:
(x,y)发生所包含的熵,减去X单独发生所包含的熵,等于 在X发生的前提下,Y发生“新”带来的熵;上式定义为x发生前提下,Y的熵;
H(Y|X) = H(X,Y)-H(X)可以转化为下式子:
− ∑ x ⋅ y p ( x , y ) log ⁡ p ( x , y ) + ∑ x P ( x ) log ⁡ P ( x ) -\sum_{x \cdot y} p(x, y) \log p(x, y)+\sum_{x} P(x) \log P(x) xyp(x,y)logp(x,y)+xP(x)logP(x)
= − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) + ∑ x ∈ X P ( x ) log ⁡ P ( x ) =-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log p(x, y)+\sum_{x \in X} P(x) \log P(x) =xXyYp(x,y)logp(x,y)+xXP(x)logP(x)
= − ∑ x , y P ( x , y ) log ⁡ P ( x , y ) + ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ P ( x ) =-\sum_{x, y} P(x, y) \log P(x, y)+\sum_{x \in X} \sum_{y \in Y} p(x, y) \log P(x) =x,yP(x,y)logP(x,y)+xXyYp(x,y)logP(x)
= − ∑ x , y P ( x , y ) log ⁡ P ( x , y ) + ∑ x , y p ( x , y ) log ⁡ p ( x ) =-\sum_{x, y} P(x, y) \log P(x, y)+\sum_{x, y} p(x, y) \log p(x) =x,yP(x,y)logP(x,y)+x,yp(x,y)logp(x)
= − ∑ x , y p ( x , y ) log ⁡ p ( x , y ) p ( x ) =-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)} =x,yp(x,y)logp(x)p(x,y)
= − ∑ x , y P ( x , y ) log ⁡ p ( y ∣ x ) = H ( Y ∣ X ) =-\sum_{x, y} P(x, y) \log p(y | x) =H(Y|X) =x,yP(x,y)logp(yx)=H(YX)

信息增益

预备知识

假设训练数据集为D,|D|表示样本个数,样本的总类别为K个(注意:这里不是样本总数!), ∣ C k ∣ |C_k| Ck(K=1,2,…K),为第k类的样本个数,有 ∑ k ∣ C k ∣ = ∣ D ∣ \sum_{k}\left|C_{k}\right|=|D| kCk=D;
设特征A有N个不同的取值 { a 1 , a 2 , ⋯   , a n } \left\{a_{1}, a_{2}, \cdots, a_{n}\right\} {a1,a2,,an}
根据A的特征取值将D划分为n个子集: D 1 , D 2 ⋯ D n D_{1}, D_{2} \cdots D_{n} D1,D2Dn,
注意:这里的经验熵(信息熵)是和类相关的:
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|} H(D)=k=1KDCklog2DCk, ∣ D i ∣ \left|D_{i}\right| Di D i D_{i} Di的样本个数,且: ∑ i ∣ D i ∣ = ∣ D ∣ \sum_{i}\left|D_{i}\right|=|D| iDi=D,
记子集 D i D_{i} Di中属于类 C k C_{k} Ck的样本集合为 D i k D_{i k} Dik,即: D i k = D i ∩ C k D_{i k}=D_{i} \cap C_{k} Dik=DiCk, ∣ D i k ∣ \left|D_{i k}\right| Dik D i k D_{i k} Dik的样本个数,
举个例子:
C 1 C_1 C1=9 (出去打网球 这种类别), C 2 C_2 C2 = 5(不出去打网球 这种类别);
样本总数 ∣ D ∣ |D| D=14;
以天气这个特征(A)为例,A假设分为三类 { a 1 , a 2 , a 3 } \left\{a_{1}, a_{2}, a_{3}\right\} {a1,a2,a3},分别对应{suny,overcast(阴天),windy},所对应的三个子集为 D 1 , D 2 , D 3 D_{1}, D_{2},D_{3} D1,D2,D3,分别对应为5,4,5;
D 1 D_1 D1里面有些是出去打网球的,有些是不出去打网球的, D i k D_{i k} Dik表示特征里面的第i这个子集当中k这个类别它的样本个数;
由上面的式子可以知道:
特征A对数据集D的经验条件熵 H ( D ∣ A ) H(D|A) H(DA)为:(注意:这是与特征相关的!!!)
H ( D ∣ A ) = − ∑ i , k p ( D k , A i ) log ⁡ p ( D k ∣ A i ) H(D | A)=-\sum_{i, k} p\left(D_{k}, A_{i}\right) \log p\left(D_{k} | A_{i}\right) H(DA)=i,kp(Dk,Ai)logp(DkAi)
= − ∑ i , k p ( A i ) p ( D k ∣ A i ) log ⁡ p ( D k ∣ A i ) = − ∑ i = 1 n ∑ k = 1 K p ( A i ) p ( D k ∣ A i ) log ⁡ p ( D k ∣ A i ) = − ∑ i = 1 n p ( A i ) ∑ k = 1 K p ( D k ∣ A i ) log ⁡ p ( D k ∣ A i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ log ⁡ ∣ D i k ∣ ∣ D i ∣ \begin{array}{l}{=-\sum_{i, k} p\left(A_{i}\right) p\left(D_{k} | A_{i}\right) \log p\left(D_{k} | A_{i}\right)} \\ {=-\sum_{i=1}^{n} \sum_{k=1}^{K} p\left(A_{i}\right) p\left(D_{k} | A_{i}\right) \log p\left(D_{k} | A_{i}\right)} \\ {=-\sum_{i=1}^{n} p\left(A_{i}\right) \sum_{k=1}^{K} p\left(D_{k} | A_{i}\right) \log p\left(D_{k} | A_{i}\right)} \\ {=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D |} \sum_{k=1}^{K} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} \log \frac{\left|D_{i k}\right|}{\left|D_{i}\right|}}\end{array} =i,kp(Ai)p(DkAi)logp(DkAi)=i=1nk=1Kp(Ai)p(DkAi)logp(DkAi)=i=1np(Ai)k=1Kp(DkAi)logp(DkAi)=i=1nDDik=1KDiDiklogDiDik
信息增益: g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A) = H(D) - H(D|A) g(D,A)=H(D)H(DA)

  • 总结:
    打个比方, 总的样本数可以按照某个类别分为两类,A类9,B类5
    另一方面,总的样本数可以按照某个特征可以分为3(分别为1,2,3类)类,分别为5,4,5
    在这里插入图片描述
信息增益的理解

通过上面可以知道,信息熵是代表随机变量的复杂度(不确定度),条件熵代表在某一个条件下,随机变量的复杂度(不确定度),
而信息增益恰好是:信息熵-条件熵=H(Y)-H(Y|X)。

换句话说,信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。

在决策树算法中,我们的关键就是每次选择一个特征,特征有多个,那么到底按照什么标准来选择哪一个特征。
这个问题就可以用信息增益来度量。如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。

在这里插入图片描述

信息增益率(C4.5)

g R ( D , A ) = g ( D , A ) H A ( D ) g_{R}(D, A)=\frac{g(D, A)}{H_{A}(D)} gR(D,A)=HA(D)g(D,A)
注意:其中的HA(D),对于样本集合D,将当前特征A作为随机变量(取值是特征A的各个特征值),求得的经验熵。

基尼系数(CART算法–分类树)

定义:基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。

    注意: Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。

Gini ⁡ ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 \operatorname{Gini}(\mathrm{p})=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2} Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
说明:

  1. pk表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-pk)

  2. 样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和

  3. 当为二分类是,Gini§ = 2p(1-p)

以二分类为例,基尼系数指的是得到2次不同类别的概率!

决策树评价与剪枝

在这里插入图片描述

在这里插入图片描述
假设训练数据集为D,|D|表示样本个数,样本的总类别为K个(注意:这里不是样本总数!), n k n_k nk(K=1,2,…K),为第k类的样本个数,有 ∑ k ∣ n k ∣ = ∣ D ∣ \sum_{k}\left|n_{k}\right|=|D| knk=D;
叶子是分类结果的一个判断依据;(叶子节点没有子节点!!!如上图所示)
1.如果某类样本 n j = n n_{j}=n nj=n,而 n 1 , … , n j − 1 , n j + 1 , … , n K = 0 \mathrm{n}_{1}, \ldots, \mathrm{n}_{\mathrm{j}-1}, \mathrm{n}_{\mathrm{j}+1}, \ldots, \mathrm{n}_{\mathrm{K}}=0 n1,,nj1,nj+1,,nK=0,此时该节点为“纯节点”(最终结果就是只有一类,样本全是这一类)
2.如果样本数目 n 1 = n 2 = … = n k = n / K \mathrm{n}_{1}=\mathrm{n}_{2}=\ldots=\mathrm{n}_{\mathrm{k}}=\mathrm{n} / \mathrm{K} n1=n2==nk=n/K,称该样本为“均节点”;(此时不容易猜测类别)
3.对所有叶结点的熵求和,该值越小说明对样本的分类越精确;
各叶结点包含的样本数目不同,可使用样本数加权求熵和;
4.评价函数
C ( T ) = ∑ t ∈ l e a f N t ⋅ H ( t ) C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t) C(T)=tleafNtH(t)
其中,N(t)为当前结点的样本个数,H(t)为当前结点的熵
由于评价函数越小越好,所以又可以称之为“损失函数”
在这里插入图片描述

剪枝

预剪枝

1.事先给定一个结点包含多少个样本
2.给定书的高度
3.给定一个熵值

后剪枝

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

假设结点2的 N 2 N_2 N2=37,H(2)=0.900;
剪枝后的C(T):
C ( T ) = c ( r ) + α ∣ T ∣ = 37 ∗ 0.900 + α C(T)=c(r)+ \alpha|T|=37*0.900 + \alpha C(T)=c(r)+αT=370.900+α
剪枝后的|T|取1,叶子节点此时为1,即为它本身;
剪枝之前的C(T):
C ( T ) = C ( R ) + α ⋅ N R C(T)=C(R)+\alpha \cdot N_{R} C(T)=C(R)+αNR
N R N_R NR为子树的叶结点个数,这里为以2结点为根结点的子树的结点个数;
其中C®:
C ( R ) = ∑ i = 1 N R N t H ( t ) C(R)=\sum_{i=1}^{N_{R}} N_{t} H(t) C(R)=i=1NRNtH(t)
注:以2结点为根结点的子树而言,这里的 N R N_R NR=3; N t N_t Nt为这三个叶子节点中每个叶子节点所包含的样本数,H(t)可以计算出来或者已知;
如果C( r) = 10,C( R)=100, α \alpha α = 10000,此时C( r)+ α \alpha α = 10010 (这个值比较小), C ( R ) + α ⋅ N R C(R)+\alpha \cdot N_{R} C(R)+αNR=140000+100
如果C( r) = 10,C( R)=1, α = 1 × 1 0 − 4 \alpha=1 \times 10^{-4} α=1×104 ,此时C( r)+ α \alpha α = 10 + 1 × 1 0 − 4 10 + 1 \times 10^{-4} 10+1×104, C ( R ) + α ⋅ N R C(R)+\alpha \cdot N_{R} C(R)+αNR= 1 + 14 × 1 × 1 0 − 4 1 + 14 \times 1 \times 10^{-4} 1+14×1×104(这个值比较小)

C ( r ) + α = C ( R ) + N R ⋅ α C(r)+\alpha=C(R)+N_{R} \cdot \alpha C(r)+α=C(R)+NRα
α = C ( r ) − C ( R ) N R − 1 \alpha=\frac{C(r)-C(R)}{N_{R}-1} α=NR1C(r)C(R), α ∈ ( 0 , + ∞ ) \alpha \in(0,+\infty) α(0,+),上面这个式子成立时,其意义为:剪掉这个枝与不剪掉这个枝其损失值是一样的!

  • 剪枝思路
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

由完全树T0开始,剪枝部分结点得到T1,再次剪枝得到T2…直到仅剩树根的树Tk;
在验证数据集上对这K个数分别评价,选择损失函数最小的树 T α T_{\alpha} Tα

在这里插入图片描述

先剪掉最小的 α \alpha α,再减去次小的 α \alpha α所对应的子树;依次类推,最后直到根节点;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值