[机器学习][理论知识][实践]决策树

1比特化

现在有一组由X变量组成的序列: BACADDCBAC…;如果现在希望将这个序列 转换为二进制来进行网络传输,那么我们得到一个得到一个这样的序列: 01001000111110010010…
结论: 在这种情况下,我们可以使用两个比特位来表示一个随机变量。

ABCD
00011011

P(X=A)=1/4
P(X=B)=1/4
P(X=C)=1/4
P(X=D)=1/4
而当X变量出现的概率值不一样的时候,对于一组序列信息来讲,每个变量平均 需要多少个比特位来描述呢??
P(X=A)=1/2
P(X=B)=1/4
P(X=C)=1/8
P(X=D)=1/8

ABCD
010110111

E = 1 ∗ 1 / 2 + 2 ∗ 1 / 4 + 3 ∗ 1 / 8 + 3 ∗ 1 / 8 = 1.75 E = − log ⁡ 2 ( 1 2 ) ∗ 1 2 − log ⁡ 2 ( 1 4 ) ∗ 1 4 − log ⁡ 2 ( 1 8 ) ∗ 1 8 − log ⁡ 2 ( 1 8 ) ∗ 1 8 = 1.75 E = 1*1/2+2*1/4+3*1/8+3*1/8=1.75\\ E = -\log_2(\frac{1}{2})*\frac{1}{2}-\log_2(\frac{1}{4})*\frac{1}{4}-\log_2(\frac{1}{8})*\frac{1}{8}-\log_2(\frac{1}{8})*\frac{1}{8}=1.75 E=11/2+21/4+31/8+31/8=1.75E=log2(21)21log2(41)41log2(81)81log2(81)81=1.75

1.1一般化比特化

假设现在随机变量X具有m个值,分别为: V1,V2,…,Vm;并且各个值出现的概率 如下表所示;那么对于一组序列信息来讲,每个变量平均需要多少个比特位来描 述呢??
P(X=V1)=p1
P(X=V2)=p2
P(X=V3)=p3

P(X=Vm)=pm
可以使用这些变量的期望来表示每个变量需要多少个比特位来描述信息:
E ( X ) = − p 1 log ⁡ 2 ( p 1 ) − p 2 log ⁡ 2 ( p 2 ) − . . . − p m log ⁡ 2 ( p m ) = − ∑ i = 1 m p i log ⁡ 2 ( p i ) E(X)=-p_1\log_2(p_1)-p_2\log_2(p_2)-...-p_m\log_2(p_m)=-\sum_{i=1}^mp_i\log_2(p_i) E(X)=p1log2(p1)p2log2(p2)...pmlog2(pm)=i=1mpilog2(pi)

2信息熵(Entropy)

H(X)就叫做随机变量X的信息熵;
H ( X ) = − ∑ i = 1 m p i log ⁡ 2 ( p i ) H(X) = -\sum_{i=1}^mp_i\log_2(p_i) H(X)=i=1mpilog2(pi)

信息量:指的是一个样本/事件所蕴含的信息,如果一个事件的概率越大,那么就 可以认为该事件所蕴含的信息越少。极端情况下,比如:“太阳从东方升起”, 因为是确定事件,所以不携带任何信息量。

信息熵:1948年,香农引入信息熵;一个系统越是有序, 信息熵就越低,一个系统越是混乱,信息熵就越高,所以 信息熵被认为是一个系统有序程度的度量。

信息熵就是用来描述系统信息量的不确定度。

High Entropy(高信息熵):表示随机变量X是均匀分布的,各种取值情况是等概 率出现的。

Low Entropy(低信息熵):表示随机变量X各种取值不是等概率出现。可能出现 有的事件概率很大,有的事件概率很小。

2.1信息熵(Entropy)案例

赌马比赛中,有两组赛马共八匹,获胜的概率如下:

第一组第二组
P(X=A)1/413/20
P(X=B)1/45/20
P(X=C)1/41/20
P(X=D)1/41/20

在比赛前,对于第一组而言,我们只知道A/B/C/D获胜的概率是一样的,我们是判断不出来任何偏向的;但是对于第二组而言,我们很清楚的就能够判断A会获胜。

2.2条件熵H(Y|X)

给定条件X的情况下,随机变量Y的信息熵就叫做条件熵。

专业性别
MATHM
ITM
ENGLISHF
MATHF
MATHM
ITM
ENGLISHF
MATHF

P(X =数学)=0.5
P(Y = M) = 0.5
P(X =数学,Y = F)= 0.25
P(Y = M | X = 英 语 )= 0
H(X)=1.5
H(Y)=1
给定条件X的情况下,所有不同x值情况下Y的信息熵的平均值叫做条件熵。
H ( Y ∣ X ) = ∑ j = 1 P ( X = v j ) H ( Y ∣ X = v j ) H(Y|X)=\sum_{j=1}P(X=v_j)H(Y|X=v_j) H(YX)=j=1P(X=vj)H(YX=vj)

V j V_j Vj P ( X = v j ) P(X=v_j) P(X=vj) H ( Y ∥ X = v j ) H(Y\|X=v_j) H(YX=vj)
MATH0.51
IT0.250
ENGLISH0.250

H(Y|X)=0.51+0.250+0.25*0=0.5

给定条件X的情况下,所有不同x值情况下Y的信息熵的平均值叫做条件熵。另外 一个公式如下所示:
H(Y|X)=H(X,Y)-H(X)
事件(X,Y)发生所包含的熵,减去事件X单独发生的熵,即为在事件X发生的前提 下,Y发生“新”带来的熵,这个也就是条件熵本身的概念。

3什么是决策树

  • 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构建决策树来 进行分析的一种方式,是一种直观应用概率分析的一种图解法;决策树是一种预 测模型,代表的是对象属性与对象值之间的映射关系;决策树是一种树形结构, 其中每个内部节点表示一个属性的测试,每个分支表示一个测试输出,每个叶节 点代表一种类别;决策树是一种非常常用的有监督的分类算法
  • 决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照 其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。
  • 决策树分为两大类:分类树和回归树,前者用于分类标签值,后者用于预测连续 值,常用算法有ID3、C4.5、CART等

4决策树构建过程

  • 决策树算法的重点就是决策树的构造;决策树的构造就是进行属性选择度量,确定各个特征 属性之间的拓扑结构(树结构);构建决策树的关键步骤就是分裂属性,分裂属性是指在某个节 点按照某一类特征属性的不同划分构建不同的分支,其目标就是让各个分裂子集尽可能的’纯 '(让一个分裂子类中待分类的项尽可能的属于同一个类别)。
  • 构建步骤如下:
    • 将所有的特征看成一个一个的节点;
    • 遍历当前特征的每一种分割方式,找到最好的分割点;将数据划分为不同的子节点,eg: N1、 N2…Nm;计算划分之后所有子节点的’纯度’信息;
    • 使用第二步遍历所有特征,选择出最优的特征以及该特征的最优的划分方式;得出最终的子节点: N1、 N2…Nm
    • 对子节点N1、N2…Nm分别继续执行2-3步,直到每个最终的子节点都足够’纯’。
      22

5决策树特征属性类型

根据特征属性的类型不同,在构建决策树的时候,采用不同的方式,具体如下:

  • 属性是离散值,而且不要求生成的是二叉决策树,此时一个属性就是一个分支
  • 属性是离散值,而且要求生成的是二叉决策树,此时使用属性划分的子集进行测试,按照 “属于此子集”和“不属于此子集”分成两个分支
  • 属性是连续值,可以确定一个值作为分裂点split_point,按照>split_point和 <=split_point生成两个分支

6决策树分割属性选择

  • 决策树算法是一种“贪心”算法策略,只考虑在当前数据特征情况下的最好分割 方式,不能进行回溯操作。
  • 对于整体的数据集而言,按照所有的特征属性进行划分操作,对所有划分操作的 结果集的“纯度”进行比较,选择“纯度”越高的特征属性作为当前需要分割的 数据集进行分割操作,持续迭代,直到得到最终结果。决策树是通过“纯度”来 选择分割特征属性点的。

7决策树量化纯度

决策树的构建是基于样本概率和纯度进行构建操作的,那么进行判断数据集是否 “纯”可以通过三个公式进行判断,分别是Gini系数、熵(Entropy)、错误率,这 三个公式值越大,表示数据越“不纯”;越小表示越“纯”;实践证明这三种公 式效果差不多,一般情况使用熵公式
G i n i = 1 − ∑ i = 1 n P ( i ) 2 H ( E n t r o p y ) = − ∑ i = 1 n P ( i ) log ⁡ 2 ( P ( i ) ) E r r o r = 1 − m a x i = 1 n { P ( i ) } Gini = 1-\sum_{i=1}^nP(i)^2\\ H(Entropy) = -\sum_{i=1}^nP(i)\log_2(P(i))\\ Error = 1-max_{i=1}^n\{P(i)\} Gini=1i=1nP(i)2H(Entropy)=i=1nP(i)log2(P(i))Error=1maxi=1n{P(i)}
当计算出各个特征属性的量化纯度值后使用信息增益度来选择出当前数据集的分割特征属性;如果信息增益度的值越大,表示在该特征属性上会损失的纯度越大 ,那么该属性就越应该在决策树的上层,计算公式为:
G a i n = Δ = H ( D ) − H ( D ∣ A ) Gain = \Delta=H(D)-H(D|A) Gain=Δ=H(D)H(DA)
Gain为A为特征对训练数据集D的信息增益,它为集合D的经验熵H(D)与特征A给 定条件下D的经验条件熵H(D|A)之差

8决策树算法的停止条件

决策树构建的过程是一个递归的过程,所以必须给定停止条件,否则过程将不会 进行停止,一般情况有两种停止条件:

  • 当每个子节点只有一种类型的时候停止构建
  • 当前节点中记录数小于某个阈值,同时迭代次数达到给定值时,停止构建过程,此时使用 max(p(i))作为节点的对应类型
    方式一可能会使树的节点过多,导致过拟合(Overfiting)等问题;比较常用的方式是使用 方式二作为停止条件

9决策树算法效果评估

决策树的效果评估和一般的分类算法一样,采用混淆矩阵来进行计算准确率、召 回率、精确率等指标
也可以采用叶子节点的纯度值总和来评估算法的效果,值越小,效果越好
C ( T ) = ∑ t = 1 l e a f D t D H ( t ) C(T)=\sum_{t=1}^{leaf}\frac{D_t}{D}H(t) C(T)=t=1leafDDtH(t)
决策树的损失函数(该值越小,算法效果越好)
l o s s = ∑ t = 1 l e a f D t D H ( t ) loss = \sum_{t=1}^{leaf}\frac{D_t}{D}H(t) loss=t=1leafDDtH(t)

10决策树直观理解结果计算示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值