经典机器学习算法(二):决策树

学习笔记,大佬勿喷

2.1 概述

决策树(decision tree): 是一个分类与回归的算法,在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。如下为是否喜欢打篮球的分类决策树:

1552006755581

决策树算法以树状结构表示实例分类的结果,每个决策点实行一个具有离散输出的测试函数记为分支,其组成如下;

  • 根结点
  • 非叶子结点(决策点):代表对实例特征的测试条件
  • 分支:代表每一个测试的结果
  • 叶子结点:代表决策树分类后所得的分类标记

决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。

  • 决策树学习的目标:根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。

  • 决策树学习的本质:从训练集中归纳出一组分类规则,或者说是由训练数据集估计条件概率模型。

  • 决策树学习的损失函数:正则化的极大似然函数

  • 决策树学习的测试:最小化损失函数

  • 决策树学习的目标:在损失函数的意义下,选择最优决策树的问题。

  • 决策树原理和问答猜测结果游戏相似,根据一系列数据,然后给出游戏的答案。


2.2 信息熵

2.2.1 熵与Gini系数

在化学中熵代表分子的混乱程度,同时解释就是当前的一个东西的纯度。信息熵 H ( X ) H(X) H(X) 就代表一个随机变量 X X X 发生的不确定性,如
如 下 有 6 次 实 验 中 随 机 变 量 A 、 B 的 取 值 A = { 1 , 2 , 3 , 4 , 5 , 6 } B = { 1 , 1 , 1 , 1 , 2 , 2 } A 的 混 乱 程 度 较 高 , 因 此 H ( A ) 较 大 B 的 混 乱 程 度 较 低 , 因 此 H ( B ) 较 小 如下有6次实验中随机变量A、B的取值 \\ A = \{1,2,3,4,5,6 \} \\ B = \{1,1,1,1,2,2 \} \\ A的混乱程度较高,因此H(A)较大\\ B的混乱程度较低,因此H(B)较小 6ABA={1,2,3,4,5,6}B={1,1,1,1,2,2}AH(A)BH(B)
构造一个函数分布 I ( X ) = − l n ( p ( X ) ) I(X) = -ln(p(X)) I(X)=ln(p(X)) ,将该分布的期望称之为熵:
H ( X ) = ∑ i = 1 n I ( x i ) p ( x i ) = − ∑ i = 1 n p ( x i ) l n ( p ( x i ) ) 一 个 事 件 x i 的 可 能 性 越 低 I ( x i ) 取 值 越 大 如 果 一 个 随 机 变 量 的 不 确 定 性 很 高 , 那 么 其 中 可 发 生 事 件 的 可 能 性 都 很 低 这 时 I ( X ) 的 期 望 必 定 很 大 H(X) = \sum^{n}_{i=1}I(x_i)p(x_i) = -\sum^{n}_{i=1}p(x_i)ln(p(x_i)) \\ 一个事件 x_i 的可能性越低 I(x_i)取值越大\\ 如果一个随机变量的不确定性很高,那么其中可发生事件的可能性都很低 \\ 这时I(X)的期望必定很大 H(X)=i=1nI(xi)p(xi)=i=1np(xi)ln(p(xi))xiI(xi)I(X)
除了熵之外,还可以用 G i n i 系 数 Gini系数 Gini来达到检测随机变量纯度的目的:
G i n i ( X ) = ∑ i = 1 n p ( x i ) ( 1 − p ( x i ) ) = 1 − ∑ i = 1 n p ( x i ) 2 Gini(X) = \sum^n_{i=1}p(x_i)(1-p(x_i)) = 1-\sum^n_{i=1}p(x_i)^2 Gini(X)=i=1np(xi)(1p(xi))=1i=1np(xi)2

2.2.2 信息增益

划分数据集的大原则是:将无序数据变得更加有序,但是各种方法都有各自的优缺点,信息论是量化处理信息的分支科学,在划分数据集前后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。

条件熵: H ( Y ∣ X ) H(Y|X) H(YX) 表示在一种随机变量划分X 的情况下随机变量Y的不确定性:
H ( Y ∣ X ) = ∑ i = 1 n p ( x i ) H ( Y ∣ X = x i ) H(Y|X) = \sum^{n}_{i=1}p(x_i)H(Y|X=x_i) H(YX)=i=1np(xi)H(YX=xi)
信息增益:信息增益是相对于分支特征而言的。分支特征 A A A对训练数据集 D D D的信息增益 G a i n ( D , A ) Gain(D,A) Gain(D,A),定义为集合D的经验熵 H ( D ) H(D) H(D)与分支 A A A给定条件下 D D D的经验条件熵​ H ( D ∣ A ) H(D|A) H(DA)之差,即:
G a i n ( D , A ) = H ( D ) − H ( D ∣ A ) H ( D ∣ A ) = p ( a i ) H ( D 1 ) + p ( a 2 ) H ( D 2 ) + . . . + p ( a n ) H ( D n ) H ( D i ) = H ( D ∣ A = a i ) ,   p ( a i ) = n a i n A Gain(D,A) = H(D) - H(D|A) \\ H(D|A) = p(a_i)H(D_1)+p(a_2)H(D_2)+...+p(a_n)H(D_n) \\ H(D_i)=H(D|A=a_i),\ p(a_i)=\frac{n_{a_i}}{n_A} Gain(D,A)=H(D)H(DA)H(DA)=p(ai)H(D1)+p(a2)H(D2)+...+p(an)H(Dn)H(Di)=H(DA=ai), p(ai)=nAnai

实例如下:

1552011158427

数据集 X X X的信息熵为:
H ( X ) = 0.940 H(X) = 0.940 H(X)=0.940
在数据集经过outlook特征分支后,其条件熵如下:
H ( X ∣ o u t l o o k ) =   P ( o u t l o o k = s u n n y ) × H ( X ∣ o u t l o o k = s u n n y ) +   P ( o u t l o o k = o v e r c a s t ) × H ( X ∣ o u t l o o k = o v e r c a s t ) +   P ( o u t l o o k = r a i n y ) × H ( X ∣ o u t l o o k = r a i n y ) H ( X ∣ o u t l o o k ) = 5 14 × 0.971 + 4 14 × 0 + 5 14 × 0.971 = 0.693 H(X|outlook) = \ P(outlook=sunny) \times H(X|outlook=sunny) \\ +\ P(outlook=overcast) \times H(X|outlook=overcast) \\ +\ P(outlook=rainy) \times H(X|outlook=rainy)\\ H(X|outlook) = \frac{5}{14}\times 0.971 +\frac{4}{14}\times 0 + \frac{5}{14}\times 0.971 = 0.693 H(Xoutlook)= P(outlook=sunny)×H(Xoutlook=sunny)+ P(outlook=overcast)×H(Xoutlook=overcast)+ P(outlook=rainy)×H(Xoutlook=rainy)H(Xoutlook)=145×0.971+144×0+145×0.971=0.693

故信息增熵为:
G a i n ( X , o v e r l o o k ) = H ( X ) − H ( X ∣ o v e r l o o k ) = 0.940 − 0.693 = 0.247 Gain(X,overlook)=H(X)-H(X|overlook)=0.940-0.693=0.247 Gain(X,overlook)=H(X)H(Xoverlook)=0.9400.693=0.247

2.2.3 信息增益率

信息增益值的大小相对于训练数据集而言的,并没有绝对意义,在分类问题困难时,也就是说在训练数据集信息熵 H ( X ) H(X) H(X)较大的时候,信息增益值会偏大,反之信息增益值会偏小,使用信息增益比可以对这个问题进行校正,这是特征选择的另一个标准。

信息增益率:特征 A A A对训练数据集 D D D的信息增益率 G a i n R ( D , A ) Gain_R(D,A) GainR(D,A)定义为其信息增益 G a i n ( D , A ) Gain(D,A) Gain(D,A) 与训练数据集 D D D的经验熵之比:
G a i n R ( D , A ) = G a i n ( D , A ) H ( D ) Gain_R(D,A) = \frac{Gain(D,A)}{H(D)} GainR(D,A)=H(D)Gain(D,A)


2.3 决策树的构造

2.3.1 决策树的构造原理

1)分支特征的选择:

决策树构造思想,实际上就是利用贪心策略寻找最纯净的划分方法,这个最纯净在数学上叫纯度,纯度通俗点理解就是目标变量要分得足够开(y=1的和y=0的混到一起就会不纯)。纯度的另一面也即不纯度,不纯度的选取有多种方法,每种方法也就形成了不同的决策树方法,比如ID3算法使用信息增益作为不纯度;C4.5算法使用信息增益率作为不纯度;CART算法使用基尼系数作为不纯度。

2)分支特征分割点的确定(如何分裂数据):

如何分裂数据也即分裂准则是什么?依然是通过不纯度来分裂数据的,通过比较划分前后的不纯度值,来确定如何分裂。


2.3.2 决策树构造算法

1)ID3算法:

使用信息增益作为分裂的规则,信息增益越大,则选取该分裂规则。多分叉树。信息增益可以理解为,有了x以后对于标签p的不确定性的减少,减少的越多越好,即信息增益越大越好。

1552013851748

2)C4.5算法:

使用信息增益率作为分裂规则(需要用信息增益除以,该属性本身的熵),此方法避免了ID3算法中的归纳偏置问题,因为ID3算法会偏向于选择类别较多的属性(形成分支较多会导致信息增益大)。多分叉树。连续属性的分裂只能二分裂,离散属性的分裂可以多分裂,比较分裂前后信息增益率,选取信息增益率最大的。

1552013940051

3)CART算法:

既可以做分类,也可以做回归,只能形成二叉树。

对于分类树(目标变量为离散变量):使用基尼系数作为分裂规则。比较分裂前的 g i n i gini gini和分裂后的 g i n i gini gini减少多少,减少的越多,则选取该分裂规则,这里的求解方法只能是离散穷举。下面这个红绿球的例子很好的说明了,如何根据损失函数最小(也就是基尼系数最小)来选取分裂规则。最后GIINs2更小,因此选择它作为分类规则。

1552014314654

**对于回归树(目标变量为连续变量):**使用最小方差作为分裂规则。只能生成二叉树。

1552014333749

4)算法对比:

  • ID3的缺点,倾向于选择水平数量较多的变量,可能导致训练得到一个庞大且深度浅的树;另外输入变量必须是分类变量(连续变量必须离散化);最后无法处理空值。

  • C4.5选择了信息增益率替代信息增益。

  • CART以基尼系数替代熵;最小化不纯度而不是最大化信息增益。

  • CART与逻辑回归的比较:

    1552014564583

    1552014583744

2.3.3 决策树的剪枝

由于决策树的深度过高会导致过拟合,所以需要对决策树进行剪枝:

预剪枝: 在构建决策树的过程中,提前停止;

后减枝: 决策树构建好后,才开始减枝,对各结点的损失函数进行评价,决定是否剪枝。
可 定 义 损 失 函 数 为 : C α ( T ) = C ( T ) + α ∣ T l e a f ∣ , 叶 子 结 点 越 多 , 损 失 越 大 可定义损失函数为:\\ C_\alpha(T) = C(T) + \alpha|T_{leaf}|,叶子结点越多,损失越大 Cα(T)=C(T)+αTleaf


2.4 随机森林

尽管有剪枝等等方法,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的缺点(可以理解成三个臭皮匠顶过诸葛亮)。

而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation: 从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器( I D 3 , C 4.5 , C A R T , S V M , L O G I S T I C ID3,C4.5,CART,SVM,LOGISTIC ID3,C4.5,CART,SVM,LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。

随机森林的运行机制如下:

  • 样本的随机:从样本集中用Bootstrap随机选取n个样本

  • 特征的随机:从所有属性中随机选取K个属性,选择最佳分割属性作为节点建立CART决策树(泛化的理解,这里面也可以是其他类型的分类器,比如SVM、Logistics)

  • 重复以上两步m次,即建立了m棵CART决策树

  • 这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)



参考文章

http://www.maiziedu.com/course/ml/

https://blog.csdn.net/jiaoyangwm/article/details/79525237

https://www.cnblogs.com/fionacai/p/5894142.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值