机器学习(三)-决策树

信息熵(Entropy)

  • H ( X ) H(X) H(X)就叫做随机变量X的信息

    H ( x ) = − ∑ i = 1 m p i l o g 2 ( p i ) H(x)=-\sum_{i=1}{m}p_ilog_2(p_i) H(x)=i=1mpilog2(pi)

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

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

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

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

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

条件熵H(Y|X)

  • 给定条件X的情况下,所有不同x值情况下Y的信息熵的平均值叫做条件熵。另外一个公式如下所示:

    H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(Y|X)=H(X,Y)-H(X) H(YX)=H(X,Y)H(X)

  • 事件(X,Y)发生所包含的熵,减去事件X单独发生的熵,即为在事件X发生的前提下,Y发生“新”带来的熵,这个也就是条件熵本身的概念。

  • H ( Y ∣ X ) = ∑ j = 1 P ( X = v j ) H ( Y ∣ X = v j ) = ∑ x P ( x ) H ( Y ∣ x ) = ∑ x p ( x ) ( − ∑ y p ( y ∣ x ) l o g ( p ( y ∣ x ) ) ) = − ∑ x ∑ y p ( x ) p ( y ∣ x ) l o g ( p ( y ∣ x ) ) = − ∑ x ∑ y p ( x , y ) l o g ( p ( x , y ) p ( x ) ) = − ∑ x ∑ y p ( x , y ) l o g ( p ( x , y ) ) − [ − ∑ x ( ∑ y p ( x , y ) ) l o g ( p ( x ) ) ] = H ( X , Y ) − [ − ∑ x p ( x ) l o g ( p ( x ) ) ] = H ( X , Y ) − H ( X ) \begin{aligned} H(Y|X)=&\sum_{j=1}P(X=v_j)H(Y|X=v_j)=\sum_xP(x)H(Y|x)\\ =&\sum_xp(x)(-\sum_yp(y|x)log(p(y|x)))=-\sum_x\sum_yp(x)p(y|x)log(p(y|x))\\ =&-\sum_x\sum_yp(x,y)log(\frac{p(x,y)}{p(x)})\\ =&-\sum_x\sum_yp(x,y)log(p(x,y))-[-\sum_x(\sum_yp(x,y))log(p(x))]\\ =&H(X,Y)-[-\sum_xp(x)log(p(x))]=H(X,Y)-H(X) \end{aligned} H(YX)=====j=1P(X=vj)H(YX=vj)=xP(x)H(Yx)xp(x)(yp(yx)log(p(yx)))=xyp(x)p(yx)log(p(yx))xyp(x,y)log(p(x)p(x,y))xyp(x,y)log(p(x,y))[x(yp(x,y))log(p(x))]H(X,Y)[xp(x)log(p(x))]=H(X,Y)H(X)

决策树

什么是决策树

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

决策树的构建过程

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

决策树分割属性选择

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

决策树量化纯度

  • 当计算出各个特征属性的量化纯度值后使用信息增益度来选择出当前数据集的分割特征属性;如果信息增益度的值越大,表示在该特征属性上会损失的纯度越大,那么该属性就越应该在决策树的上层,计算公式为:

    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)之差

决策树算法的停止条件

  • 决策树构建的过程是一个递归的过程,所以必须给定停止条件,否则过程将不会进行停止,一般情况有两种停止条件:
    • 当每个子节点只有一种类型的时候停止构建
    • 当前节点中记录数小于某个阈值,同时迭代次数达到给定值时,停止构建过程,此时使用max(p(i))作为节点的对应类型
  • 方式一可能会使树的节点过多,导致过拟合(Over fitting)等问题;比较常用的方式是使用方式二作为停止条件

决策树算法效果评估

  • 决策树的效果评估和一般的分类算法一样,采用混淆矩阵来进行计算准确率、召回率、精确率等指标

  • 也可以采用叶子节点的纯度值总和来评估算法的效果,值越小,效果越好

  • 决策树的损失函数(该值越小,算法效果越好

    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)

决策树生成算法

  • 建立决策树的主要是以下三种算法
    • ID3
    • C4.5
    • CART(Classification And Regression Tree)

ID3算法

  • ID3算法是决策树的一个经典的构造算法,内部使用信息熵以及信息增益来进行构建;每次迭代选择信息增益最大的特征属性作为分割属性

    H ( D ) = − ∑ i = 1 n P ( i ) l o g 2 ( P ( i ) ) H(D)=-\sum{i=1}{n}P(i)log_2(P(i)) H(D)=i=1nP(i)log2(P(i))

    G a i n = Δ = H ( D ) − H ( D ∣ A ) Gain=\Delta=H(D)-H(D|A) Gain=Δ=H(D)H(DA)

ID3算法优缺点:

  • 优点:

    • 决策树构建速度快;实现简单;
  • 缺点:

    • 计算依赖于特征数目较多的特征,而属性值最多的属性并不一定最优
    • ID3算法不是递增算法
    • ID3算法是单变量决策树,对于特征属性之间的关系不会考虑
    • 抗噪性差
    • 只适合小规模数据集,需要将数据放到内存中

C4.5算法

  • ID3算法的基础上,进行算法优化提出的一种算法(C4.5);现在C4.5已经是特别经典的一种决策树构造算法;使用信息增益率来取代ID3算法中的信息增益,在树的构造过程中会进行剪枝操作进行优化;能够自动完成对连续属性的离散化处理;C4.5算法在选中分割属性的时候选择信息增益率最大的属性,涉及到的公式为:

    H ( D ) = − ∑ i = 1 n P ( i ) l o g 2 ( P ( i ) ) H(D)=-\sum{i=1}{n}P(i)log_2(P(i)) H(D)=i=1nP(i)log2(P(i))

    G a i n = Δ = H ( D ) − H ( D ∣ A ) Gain=\Delta=H(D)-H(D|A) Gain=Δ=H(D)H(DA)

    G a i n r a t i o ( A ) = G a i n ( A ) H ( A ) Gain_ratio(A)=\frac{Gain(A)}{H(A)} Gainratio(A)=H(A)Gain(A)

C4.5算法优缺点

  • 优点:
    • 产生的规则易于理解
    • 准确率较高
    • 实现简单
  • 缺点:
    • 对数据集需要进行多次顺序扫描和排序,所以效率较低
    • 只适合小规模数据集,需要将数据放到内存中

CART算法

  • 使用基尼系数作为数据纯度的量化指标来构建的决策树算法就叫做CART(Classification And Regression Tree,分类回归树)算法CART算法使用**GINI增益**作为分割属性选择的标准,选择GINI增益最大的作为当前数据集的分割属性;可用于分类和回归两类问题。强调备注:CART构建是二叉树

    G i n i = a − ∑ i = 1 n P ( i ) 2 Gini=a-\sum_{i=1}^nP(i)^2 Gini=ai=1nP(i)2

    G a i n = Δ = G i n i ( D ) − G i n i ( D ∣ A ) Gain=\Delta=Gini(D)-Gini(D|A) Gain=Δ=Gini(D)Gini(DA)

分类树算法总结

  • ID3C4.5算法均只适合在小规模数据集上使用
  • ID3C4.5算法都是单变量决策树
  • 当属性值取值比较多的时候,最好考虑C4.5算法,ID3得出的效果会比较差
  • 决策树分类一般情况只适合小数据量的情况(数据可以放内存)
  • CART算法是三种算法中最常用的一种决策树构建算法。
  • 三种算法的区别仅仅只是对于当前树的评价标准不同而已,ID3使用信息增益C4.5使用信息增益率CART使用基尼系数
  • CART算法构建的一定是二叉树,ID3C4.5构建的不一定是二叉树。

决策树优化

决策树优化策略

  • 剪枝优化

    • 决策树过渡拟合一般情况是由于节点太多导致的,剪枝优化对决策树的正确率影响是比较大的,也是最常用的一种优化方式。
  • Random Forest

    • 利用训练数据随机产生多个决策树,形成一个森林。然后使用这个森林对数据进行预测,选取最多结果作为预测结果。

剪枝

决策树的剪枝

  • 决策树的剪枝是决策树算法中最基本、最有用的一种优化方案,主要分为两大类:

    • 前置剪枝:在构建决策树的过程中,提前停止。结果是决策树一般比较小,实践证明这种策略无法得到比较好的结果。
    • 后置剪枝:在决策树构建好后,然后再开始裁剪,一般使用两种方式:1)用单一叶子节点代替整个子树,叶节点的分类采用子树中最主要的分类;2)将一个子树完全替代另外一棵子树;后置剪枝的主要问题是计算效率问题,存在一定的浪费情况。
  • 后剪枝总体思路(交叉验证)

    • 由完全树T0开始,剪枝部分节点得到T1,在此剪枝得到T2…直到仅剩树根的树Tk
    • 验证数据集上对这k+1个树进行评价,选择最优树Ta(损失函数最小的树)

决策树的剪枝

  • 对于给定的决策树T0

    • 计算所有内部非叶子节点的剪枝系数
    • 查找最小剪枝系数的节点,将其子节点进行删除操作,进行剪枝得到决策树Tk;如果存在多个最小剪枝系数节点,选择包含数据项最多的节点进行剪枝操作
    • 重复上述操作,直到产生的剪枝决策树Tk只有1个节点
    • 得到决策树T0T1T2…Tk
    • 使用验证样本集选择最优子树Ta
  • 使用验证集选择最优子树的标准,可以使用原始损失函数来考虑: 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)

决策树剪枝损失函数及剪枝

  • 原始损失函数 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)

  • 叶节点越多,决策树越复杂,损失越大;修改添加剪枝系数,修改后的损失函数为: l o s s α = l o s s + α ∗ l e a f loss_{\alpha}=loss+\alpha * leaf lossα=loss+αleaf

  • 考虑根节点为r的字数,剪枝前后的损失函数分别为loss®和loss®,当着两者相等的时候,可以求得剪枝系数

    l o s s α ( r ) = l o s s ( r ) + α loss_{\alpha}(r)=loss(r)+\alpha lossα(r)=loss(r)+α

    l o s s r ( R ) = l o s s + α ∗ R l e a f loss_{r}(R)=loss+\alpha *R_{leaf} lossr(R)=loss+αRleaf

    α = l o s s ( r ) − l o s s ( R ) R l e a f − 1 \alpha=\frac{loss(r)-loss(R)}{R_{leaf}-1} α=Rleaf1loss(r)loss(R)

分类树和回归树的区别

  • 分类树采用信息增益、信息增益率、基尼系数来评价树的效果,都是基于概率值进行判断的;而分类树的叶子节点的预测值一般为叶子节点中概率最大的类别作为当前叶子的预测值。

  • 在回归树种,叶子节点的预测值一般为叶子节点中所有值的均值来作为当前叶子节点的预测值。所以在回归树中一般采用MSE作为树的评价指标,即均方差。

    M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE=\frac{1}{n}\sum_{i=1}^n(y_i-\hat y_{i})^2 MSE=n1i=1n(yiy^i)2

  • 一般情况下,只会使用CART算法构建回归树。

总结

  1. 分类树和回归树

    区别:

    • 分类树中使用信息熵、gini系数、错误率作为树“纯度”的度量指标;回归树中使用MSE、MAE作为树的“纯度”度量指标;
    • 分类树使用叶子节点包含最多那个类别作为当前叶子的预测值;回归树中使用叶子节点中包含的所有样本的目标属性的均值作为当前叶子的预测值。
  2. 决策树的构建

    思想:让每次分裂数据集的时候,让分裂之后的数据集更加的“纯”

  3. 决策树分裂属性的选择方式

    • 基于最好划分的规则进行选择:迭代计算所有特征属性上所有划分方式后的“纯度”,选择划分后更加“纯”的一种方式(信息增益、信息增益率)–>只能说明在当前数据集上最优,因此可能会过拟合

    • 基于随机的划分规则:每次划分的时候,都是先选择一定数目的特征,然后在这部分特征中选择出一个最优的划分特征–>因为每次选的划分特征都是局部最优的,相对来讲,可以增加模型的鲁棒性。

  4. 决策树的欠拟合、过拟合

    • 可以通过增加树的深度来缓解决策树欠拟合的这个问题
    • 通过限制树的复杂程度来缓解决策树过拟合的这个问题
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值