2.1.决策树和随机森林

Posted to.to

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.1.决策树和随机森林相关的知识,希望对你有一定的参考价值。

2.1.决策树和随机森林

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。决策树是一种基本的分类和回归方法,学习通常包含三个步骤:特征选择、决策树的生成和决策树的剪枝。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。分类树(决策树)是一种十分常用的分类方法。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来做预测。

一个简单的决策树分类模型:红色框出的是特征。
在这里插入图片描述
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。Leo Breiman和Adele Cutler发展出推论出随机森林的算法。随机森林在过去几年一直是新兴的机器学习技术。它是基于非线性的决策树模型,通常能够提供准确的结果。然而,随机森林大多是黑盒子,经常难以解读和充分理解。

2.1.1.预备知识

2.1.1.1.条件熵

在信息论中,条件熵描述了在已知第二个随机变量X的前提下,随机变量Y的信息熵还剩多少。基于X条件的Y的信息熵,用H(Y|X)表示。
如果H(Y|X=x)为变数Y在变数X取特定值x条件下的熵,那么H(Y|X)就是H(Y|X=x)在X取遍所有可能的x后取平均的结果。
在这里插入图片描述
我们可以借助上图来帮助理解熵和条件熵:红色的整个圆表示变量X的熵,蓝色的整个圆表示变量Y的熵。
首先,熵可以理解为事件的不确定性,联系到上面的X, Y就是H(X)表示的是未知的不确定的X(也即红色的圆),而蓝色的则表示未知不确定的Y,而条件熵表示的是在知道某一事件后对另一事件未知性的减少(前提是这两个事件有交集)。放在上面则是知道确定了X后Y的不确定性还剩多少,也就是右侧蓝色的圆减去两个圆交叉的部分后剩余的,这就是条件熵H(Y|X)。
现在理解了条件熵,那么两事件X, Y中间的交集互信息该如何理解呢?既然条件熵是知晓了X后Y未知性还剩余的多少,那么互信息就可以理解为知晓了事件X后Y事件有多少也是可以确定的,也即X对Y造成的干扰部分,即为互信息I(X; Y)。
而联合熵就比较好理解了,就是事件X未知性和事件Y的未知性之和减去他们的交集部分。

首先需要知道的是熵的公式:
对上式做简单的说明:
(1)P(xi)表示事件xi的概率;
(2)-P(xi)logP(xi)表示事件xi的熵;

2.1.2.决策树生成算法

决策树分类从根节点开始,对实例的某一特征进行测试,根据测试结果将实例分配到其子节点。每一个子节点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点,最后将实例分配到叶节点的类中。

决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行划分。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。通常特征选择的准则是信息增益或信息增益比,特征选择的常用算法有ID3,C4.5,CART。

2.1.3.信息增益

信息增益表示得知特征A的信息而使得数据X的信息的不确定性的程度。
信息增益定义:特征A对训练数据集D的信息增益g(D, A)定义为集合D的经验熵H(D)与给定特征A的条件下D的经验条件熵H(D|A)之差,即:
在这里插入图片描述
(信息增益,也叫作互信息)

根据信息增益选择特征的方法是:对于给定数据集D,计算其每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。使用信息增益选择特征的算法称为C3算法。

基本记号:
在这里插入图片描述
信息增益的计算方法:
在这里插入图片描述

2.1.3.1.信息增益比

信息增益值的大小是相对于训练数据集而言的,并没有绝对意义。在分类为题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏大。反之,信息增益值会偏小。因此,使用信息增益比可以对这一问题进行校正,这是另一种特征选择算法,也即C4.5算法。
在这里插入图片描述
在这里插入图片描述

2.1.4.基尼系数

基尼指数是CART分类树用来选择最优特征的算法,同时决定了该特征的最优二值切分点。
在这里插入图片描述
在这里插入图片描述
对于给定的样本集合D,其基尼指数为:
在这里插入图片描述
在这里插入图片描述
一个特征的信息增益/基尼系数越大,表明特征对样本的熵减少的能力更强,这个特征使得数据由不确定性变成确定性的能力越强。

2.1.5.决策树的剪枝

决策树生成算法产生的决策树对于训练数据的分类往往很准确,但对于未知数据的分类却没有这么准确,即容易出现过拟合情况。解决的办法便是考虑树的复杂度,对已生成的树进行剪枝简化。

决策树的剪枝往往通过极小化决策树整体的损失函数来实现。
在这里插入图片描述
在这里插入图片描述
其中经验熵为:
在这里插入图片描述
在损失函数式子中,等式右端第一项记作:
在这里插入图片描述
最后,损失函数表示为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.6.Bootstraping

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.课程资料

决策树(decision tree)是一种基本的分类与回归方法,本文主要讨论用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,其主要优点是模型具有可读性,分类速度快。决策树学习通常包括三个步骤:特征选择,决策树的生成和决策树的修剪。而随机森林则是由多个决策树所构成的一种分类器,更准确的说,随机森林是由多个弱分类器组合形成的强分类器。

树模型

  • 决策树:从根节点开始一步步走到叶子节点(决策)。
  • 所有的数据最终都会落到叶子节点,既可以做分类也可以做回归。
    在这里插入图片描述
    树的组成
  • 根节点:第一个选择点
  • 非叶子节点与分支:中间过程。
  • 叶子节点:最终的决策结果
    在这里插入图片描述
    决策树的训练与测试
  • 训练阶段:从给定的训练集构造出来一棵树(从根节点开始选择特征,如何进行特征切分)
  • 测试阶段:根据构造出来的树模型从上到下去走一遍就好了。
  • 一旦构造好了决策树,那么分类或者预测任务就很简单了,只需要走一遍就可以了,那么难点就在于如何构造出来一颗树,这就没那么容易了,需要考虑的问题还有很多的!

如何切分特征(选择节点)

  • 问题:根节点的选择该用哪个特征呢?接下来呢?如何切分呢?
  • 想象一下:我们的目标应该是根节点就像是老大似的能更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家了。
  • 目标:通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出最好的那个当成根节点,以此类推。

衡量标准-熵

  • 熵:熵是表示随机变量不确定性的度量
    (解释:说白了就是物体内部的混乱程度,比如杂货市场里什么都有那肯定混乱呀,专卖店里面只卖一个牌子的那就稳定多了)
  • 在这里插入图片描述
  • 一个例子:
    A集合:[1,1,1,1,1,1,1,1,2,2]
    B集合:[1,2,3,4,5,6,7,8.9,1]

显然A集合的熵值要低,因为A里面只有两种类别,相对稳定一些,而B中类别太多了,熵值就会大很多(在分类任务中我们希望通过节点分支后数据类别的熵值大还是小呢?)

衡量标准-熵

  • 熵:不确定性越大,得到的熵值也就越大。
    当p=0或p=1时,H§=0,随机变量完全没有不确定性。
    当p=0.5时,H§=1,此时随机变量的不确定性最大。

  • 如何决策一个节点的选择呢?
    信息增益:表示特征X使得类Y的不确定性减少的程度。(分类后的专一性,希望分类后的结果是同类在一起)
    在这里插入图片描述
    决策树构造实例

  • 数据:14天打球情况

  • 特征:4中环境变换

  • 目标:构造决策树

在这里插入图片描述
决策树构造实例
划分方式:4种
问题:谁当根节点呢?
依据:信息增益
在这里插入图片描述
决策树构造实例

  • 在历史数据中(14天)有9天打球,5天不打球,所以此时的熵应为:
    在这里插入图片描述
  • 4个特征逐一分析,先从outlook特征开始:
    在这里插入图片描述
    Outlook = sunny时,熵值为0.971
    Outlook = overcast时,熵值为0
    Outlook = rainy时,熵值为0.971

决策树构造实例

  • 根据数据统计,outlook取值分别为sunny,overcast,rainy的概率分别为:
    5/14, 4/14, 5/14

  • 熵值计算:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693
    (gain(temperature)=0.029 gain(humidity)=0.152 gain(windy)=0.048)

  • 信息增益:系统的熵值从原始的0.940下降到了0.693,增益为0.247

  • 同样的方式可以计算出其他特征的信息增益,那么我们选择最大的那个就可以啦,相当于是遍历了一遍特征,找出来了大当家,然后再其余的中继续通过信息增益找二当家!

决策树算法

  • ID3: 信息增益(有什么问题呢?)
  • C4.5: 信息增益率(解决ID3问题,考虑自身熵)
  • CART: 使用GINI系数来当做衡量标准。
  • GINI系数:在这里插入图片描述
    (和熵的衡量标准类似,计算方式不相同)

连续值怎么办?
选取(连续值的)哪个分界点?
在这里插入图片描述

  • 贪婪算法!
    排序
    60 70 75 85 90 95 100 120 125 220
    若进行”二分”,则可能有9个分界点(上面数据中的9个空格部分)。
    在这里插入图片描述
  • 实际上,这就是”离散化”过程

决策树剪枝策略

  • 为什么要剪枝:决策树过拟合风险很大,理论上可以完全分得开数据。
    (想象一下,如果树足够庞大,每个叶子节点不就一个数据了嘛)
  • 剪枝策略:预剪枝,后剪枝
  • 预剪枝:边建立决策树边进行剪枝的操作(更实用)
  • 后剪枝:当建立完决策树后来进行剪枝操作。

决策树剪枝策略

  • 预剪枝:限制深度,叶子节点个数,叶子节点样本数,信息增益量等。
  • 后剪枝:通过一定的衡量标准
    在这里插入图片描述
    (叶子节点越多,损失越大)
    在这里插入图片描述

Ensemble learning

  • 目标:让机器学习效果更好,单个不行,群殴走起
  • Bagging: 训练多个分类器取平均在这里插入图片描述
  • Boosting: 从弱学习器开始加强,通过加权来进行训练。
    在这里插入图片描述(加入一棵树,要比原来强)
  • Stacking: 聚合多个分类或回归模型(可以分阶段来做)

Bagging模型
全称:bootstrap aggregation(说白了就是并行训练一堆分类器)
最典型的代表就是随机深林啦
随机:数据采样随机,特征选择随机
森林:很多决策树并行放在一起
在这里插入图片描述

随机森林

  • 构造树模型:
    在这里插入图片描述
  • 由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样。

Bagging模型

  • 树模型:
    在这里插入图片描述
  • 之所以要进行随机,是要保证泛化能力,如果树都一样,那就没意义了!

随机森林优势

  • 它能够处理很高维度(feature很多)的数据,并且不用做特征选择
  • 在训练完后,它能够给出哪些feature比较重要。
  • 容易做成并行化方法,速度比较快。
  • 可以进行可视化展示,便于分析。
    在这里插入图片描述
    Bagging模型
  • KNN模型:
    在这里插入图片描述
  • KNN就不太适合,因为很难去随机让泛化能力变强!

Bagging模型

  • 树模型:
    在这里插入图片描述
  • 理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了。

Boosting算法

  • 典型代表:AdaBoost, Xgboost
  • Adaboost会根据前一次的分类效果调整数据权重。
  • 解释:如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重。
  • 最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体。

Adaboost工作流程

  • 每一次切一刀。
  • 最终合在一起。
  • 弱分类器这就升级了。
    在这里插入图片描述
    Stacking模型
  • 堆叠:很暴力,拿来一堆直接上(各种分类器都来了)
  • 可以堆叠各种各样的分类器(KNN,SVM,RF等等)
  • 分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练。
  • 为了刷结果,不择手段。

Stacking模型
在这里插入图片描述

  • 堆叠在一起确实能使得准确率提升,但是速度是问题
    集成算法是竞赛与论文神器,当我们更关注与结果时不妨来实时。

以上是关于2.1.决策树和随机森林的主要内容,如果未能解决你的问题,请参考以下文章

决策树和随机森林

机器学习-决策树和随机森林

决策树算法之随机森林

10、决策树集成--随机森林

课时决策树和随机森林

关于决策树和随机森林分类器(scikit)的疑问