机器学习:决策树与集成学习 1

机器学习:决策树与集成学习 1

决策树

决策树是一类常见的机器学习算法,也可以指学习得到的树模型。
决策树是基于树结构来进行决策的,一棵决策树包括一个根节点,若干内部节点和若干叶子节点。每个部分对应的功能:

  1. 根节点:样本全集
  2. 叶节点:决策结果
  3. 内部节点:属性测试

决策树的生成(划分选择)

决策树的生成是一个递归的过程。决策树的内部节点划分选择是一个属性测试的过程,节点的划分选择主要有三种方法:ID3、C4.5、CART

ID3

ID:Dterative Dichotomiser 迭代二分类器
介绍ID3之前,先回顾奥卡姆剃刀原理:相同性能的模型,优先选择更简单的模型。由此,我们总结:同等条件下,越是小型的决策树,越是优于大的决策树。

在信息论中,信息熵越大,样本纯度越低。
ID3的节点划分思想就是:以信息增益来进行特征选择,选择信息增益最大的特征来进行分裂。ID3决策树的生成过程就是使数据集D纯度提升的过程。
算法特点:自顶向下,贪婪搜索。

算法步骤:

  1. 初始化特征集合和数据集
  2. 数据集沿着信息熵逐渐减小的方向划分,对应特征沿着条件熵逐渐减小的方向进行属性选择。具体操作方法为:选择信息增益最大的特征作为当前的决策节点
  3. 更新数据集和特征集。删除上一步使用的特征,并按照特征属性值来划分不同分治的数据子集。
  4. 重复步骤1、2、3,直到数据子集只包含一个特征属性,则将对应的分支节点设置为叶子节点。

划分标准:信息增益
数据集的信息熵计算:
数据集D,类别子集 C k C_k Ck,信息熵: H ( D ) = − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ∗ l o g 2 ∣ C k ∣ ∣ D ∣ ) H(D)=-\sum_{k=1}^{K}(\frac{|C_k|}{|D|}*log_2\frac{|C_k|}{|D|}) H(D)=k=1K(DCklog2DCk)

数据集某一特征属性的信息熵的计算:
数据集中含有特征A的样本子集 D A D_A DA,特征A对应数据集D的条件熵:
H ( D ∣ A ) = ∑ i = 1 n D i D ∗ H ( D i ) = − ∑ i = 1 n ( ∑ k = 1 K ( ∣ D i k ∣ ∣ D i ∣ ∗ l o g 2 ∣ D i k ∣ ∣ D i ∣ ) ) H(D|A) = \sum_{i=1}^n\frac{D_i}{D}*H(D_i)=-\sum_{i=1}^n(\sum_{k=1}^K(\frac{|D_{ik}|}{|D_i|}*log_2\frac{|D_{ik}|}{|D_i|})) H(DA)=i=1nDDiH(Di)=i=1n(k=1K(DiDiklog2DiDik))
其中 D i D_i Di表示特征A第 i i i个取值的样本子集,特征A有 n n n个取值。

则特征A在数据集D中的信息增益为:
G a i n ( D , A ) = H ( D ) − H ( D ∣ A ) Gain(D, A)=H(D)-H(D|A) Gain(D,A)=H(D)H(DA)

信息增益表示得到特征A的信息而使样本集不确定性减少的程度,信息增益越大,表示用特征A进行节点分裂使数据集获得的“纯度提升越大”,这也是为什么ID3在进行分支节点划分时选择信息增益最大的特征作为决策属性。

ID3的缺点

  1. ID3没有剪枝策略,容易过拟合---->模型泛化能力差。
  2. 对能够取值较多的特征属性有所偏好。
  3. 只能用于处理离散分布的特征。
  4. 没有考虑缺失值处理。

C4.5

C4.5特点
克服了ID3对能够取值较多的特征的偏重的缺点,引入信息增益率进行节点划分。

C4.5思想
C4.5 相较于ID3的改进:

  1. 引入悲观剪枝的策略进行后剪枝。
  2. 引入信息增益率作为分支节点的划分标准。
  3. 连续特征离散化,例如特征A连续取值为1,2,3,4,5,共5个取值,则有划分点1.5,2.5,3.5,4.5,共4=5-1个划分点,然后计算每种划分方式能够获得的信息增益大小,选择信息增益最大的点作为该连续特征的二元离散分类点。注意:连续值需要先进行排序操作,会消耗时间和内存。
  4. 对缺失值的处理:
    (1)特征值缺失的情况下,进行划分特征的选择,即如何计算信息增益率:
    –> 对于具有缺失特征,用没有缺失的样本子集的所占比重来折算。
    (2)计算完信息增益率后,需要进行决策树的生成,那么对于缺失该特征的样本该如何处理?即到底该将该样本划分到哪个子节点?
    –> 将样本同时划分到所有子节点,不过要调整样本的权重,即以不同的概率划分到不同的子节点中。

C4.5划分标准
核心思想:利用信息增益率来克服信息熵增益的缺点。信息增益率的计算:
G a i n r a t i o ( D ∣ A ) = G a i n ( D , A ) H A ( D ) Gain_{ratio}(D|A)=\frac{Gain(D,A)}{H_A(D)} Gainratio(DA)=HA(D)Gain(D,A),其中 H A ( D ) = − ∑ i = 1 n ( ∣ D i ∣ ∣ D ∣ ∗ l o g 2 ∣ D i ∣ ∣ D ∣ ) H_A(D)=-\sum_{i=1}^n(\frac{|D_i|}{|D|}*log_2\frac{|D_i|}{|D|}) HA(D)=i=1n(DDilog2DDi) 表示特征A的信息熵。

需要说明的是,信息增益率对于可取值数目较少的特征有所偏好。
解决该问题的一个启发式方法:(1)选择信息增益高于均值的属性,信息增益偏好取值多的特征,(2)再选择信息增益率高的属性,因为信息增益率偏好取值少的特征,(3)再将前面两步选择出来的特征进行中和。

剪枝策略
为什么要剪枝呢?因为生成的决策树容易过拟合,导致模型的泛化能力较差。
常见的剪枝策略包括预剪枝和后剪枝。

预剪枝
预剪枝是在节点划分前确定节点是否继续增长,早停增长的主要方法有:

  1. 节点内数据样本数量低于某一阈值
  2. 所有节点特征都已经分裂
  3. 节点划分前准确率比划分后准确率要高

预剪枝的优点主要有:降低过拟合,减少训练时间,缺点是可能会导致欠拟合。

后剪枝
后剪枝是在决策树生成之后,再用递归的方式对每一个非叶子节点,比较将其设置成叶子节点后,依据准确率的变化决定是否进行剪枝处理。
决策树后剪枝的优点是欠拟合风险小,泛化性能优于预剪枝。缺点是训练时间久。

C4.5的缺点

  1. C4.5是多叉树,没有二叉树的效率高
  2. C4.5和ID3只能用于分类问题,不能用于回归问题
  3. C4.5和ID3都是熵模型,熵中含有对数运算,连续值的处理还需要进行排序,以上操作会增大时间和内存开销。
  4. 需要整个数据集都在内存上驻留。

CART

Classification and Regression Tree 分类回归树
前面介绍的ID3和C4.5都是多叉树,分支多,规模大。
CART树采用二分法,是二叉树。
CART早在1993年就已经形成了很完备的知识体系。

CART思想
CART决策树的生成包括分裂、剪枝和树的选择。
分裂过程是一个二叉递归划分的过程,其输入和预测的特征可以是连续的,也可以是离散的,CART没有停止准则,会一直分裂下去。
剪枝是采用代价复杂度进行剪枝处理的。
树的选择是通过单独的测试集进行树的选择。

CART与C4.5 的区别

  1. C4.5是多叉树,运算速度慢,CART是二叉树,运算速度快。
  2. C4.5只能用于分类问题,CART可用于分类和回归问题。
  3. CART中的Gini系数减少了log运算
  4. CART用代理测试集来估计缺失值,C4.5则是以不同概率将样本(有缺失值的样本)划分到不同子节点。
  5. CART是基于代价复杂度进行剪枝处理的,C4.5采用的是悲观剪枝策略。

CART节点划分标准
在熵模型中,有大量的对数运算,CART采用基尼系数进行节点属性的选择,在简化模型(没有对数运算)的同时,还保留了熵模型的优点。

在熵模型中,一个特征的信息增益(率)越大,模型纯度提升越大,而基尼指数刚好相反,一个特征的基尼指数越小,模型的不纯度越小,也就是纯度越好,则该特征越适合用于节点分裂。(这里会有一些绕)

基尼指数理解:数据集中随机两个样本,类别标记不一致的概率。

基尼值:
G i n i ( D ) = ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ( 1 − ∣ C k ∣ ∣ D ∣ ) ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D)=\sum_{k=1}^{K}(\frac{|C_k|}{|D|}(1-\frac{|C_k|}{|D|}))=1-\sum_{k=1}^{K}(\frac{|C_k|}{|D|})^2 Gini(D)=k=1K(DCk(1DCk))=1k=1K(DCk)2
D D D表示数据集, C k C_k Ck表示样本子集
基尼系数:
G i n i ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ G i n i ( D i ) Gini(D|A)=\sum_{i=1}^{n}\frac{|D_i|}{|D|}Gini(D_i) Gini(DA)=i=1nDDiGini(Di)

二分类时:
G i n i ( D ∣ A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D|A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(DA)=DD1Gini(D1)+DD2Gini(D2)

有上面公式可以看到,在平方运算和二分类情况下,基尼系数模型的运算更加简单,性能也和熵模型非常接近。那么,基尼系数模型和熵模型的性能差距有多大呢?
我们知道对数运算的一阶泰勒展开为: l n ( x ) = − 1 + x + o ( x ) ln(x)=-1+x+o(x) ln(x)=1+x+o(x), 所以信息熵的计算公式可以写为:
H ( x ) = − ∑ k = 1 K ( p k ∗ l n p k ) ≈ ∑ k = 1 K p k ( 1 − p k ) H(x) = -\sum_{k=1}^{K}(p_k*ln p_k)\approx\sum_{k=1}^{K}p_k(1-p_k) H(x)=k=1K(pklnpk)k=1Kpk(1pk)
因此,基尼指数可以理解为熵模型的一阶泰勒展开。

CART缺失值处理
使用代理测试来处理缺失值

CART剪枝策略
基于代价复杂度的剪枝策略,进行后剪枝

CART处理类别不平衡
不管数据集失衡多么严重,CART树都能够自动消除类别不平衡。

CART回归树
处理回归问题与分类问题的一些不同:

  1. 连续值处理
    CRAT采用基尼系数的大小来度量特征的各个划分点。
  2. 预测方式
    在分类问题时,预测的类别是叶子节点中概率最大的节点对应的类别,而在处理回归问题时,预测的输出值是所有叶子节点的均值或者中位数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值