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.决策树和随机森林相关推荐

  1. 使用泰坦尼克号数据进行决策树、随机森林

    使用泰坦尼克号数据进行决策树.随机森林 决策树分类器 随机森林 决策树分类器 sklearn.tree.DecisionTreeClassifier(criterion='gini',max_dept ...

  2. 独家 | 决策树VS随机森林——应该使用哪种算法?(附代码链接)

    作者:Abhishek Sharma 翻译:陈超 校对:丁楠雅 本文长度为4600字,建议阅读20分钟 本文以银行贷款数据为案例,对是否批准顾客贷款申请的决策过程进行了算法构建,并对比了决策树与随机森 ...

  3. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  4. 【机器学习基础】(五):通俗易懂决策树与随机森林及代码实践

    与SVM一样,决策树是通用的机器学习算法.随机森林,顾名思义,将决策树分类器集成到一起就形成了更强大的机器学习算法.它们都是很基础但很强大的机器学习工具,虽然我们现在有更先进的算法工具来训练模型,但决 ...

  5. 决策树和随机森林(上)

    决策树和随机森林 信息熵 熵 联合熵 条件熵 互信息 决策树学习算法 信息增益 ID3.C4.5.CART Bagging与随机森林 概念部分 思考:两点分布的信息熵 import numpy as ...

  6. 机器学习中的不平衡分类方法(part5)--决策树与随机森林

    学习笔记吗,仅供参考,有错必纠 文章目录 决策树与随机森林 基本流程 决策树定义及结构 决策树学习步骤 划分选择 信息增益 增益率 基尼基数 剪枝处理 随机森林 决策树与随机森林 决策树(decisi ...

  7. python实现决策树算法sklearn_python sklearn-05:决策树及随机森林

    1.决策树 2.随机森林 1.决策树(decision tree) 决策树一种简单的非线性模型,用来解决回归与分类问题. 通常是重复的将训练集解释变量分割成子集的过程.决策树的节点用方块表示,用来测试 ...

  8. 如何解读决策树和随机森林的内部工作机制?

    随机森林在过去几年里得到了蓬勃的发展.它是一种非线性的基于树的模型,往往可以得到准确的结果.但是,随机森林的工作过程大都处于黑箱状态,往往难以解读和完全理解.近日,Pivotal Engineerin ...

  9. 第二课 决策树与随机森林

    本系列是七月算法机器学习课程笔记 文章目录 1 从LR到决策树 1.1 决策树 1.2 决策树的终止条件 1.3 决策树划分依据 1.3.1 信息熵 1.3.2 信息增益 1.3.3 ID3模型 1. ...

最新文章

  1. NAR:浙大陈云/马忠华团队揭示病原真菌组蛋白H3K27甲基化识别新机制
  2. 你必须会的DFS的递归实现与堆栈实现
  3. raptor五个数排序流程图_数据结构与算法(一):排序(上)
  4. jvm_虚拟机参数讲解(三)
  5. 如何快速在CentOS搭建光盘【永久搭载光盘】
  6. LeetCode 79. Word Search
  7. 多线程知识梳理(1) - 并发编程的艺术笔记
  8. 用户信息填写web代码_Web前端常见问题汇总
  9. php css去除h1样式,HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解...
  10. java token生成和验证_程序员应该如何设计更优雅的Token认证方式?
  11. #{}不自动改参数类型_Spring参数的自解析还在自己转换?你out了!
  12. HttpModule和HttpHandler的常见用法
  13. php在HTML的遍历,php里面怎么循环嵌入html元素
  14. ps6人脸识别液化工具在哪_PS上手指南 篇五:玩转人脸识别液化
  15. 计算机内图片怎么自定义排序,win10系统设置图片文件自定义排序的图文教程
  16. 2018年下半年各省软考报名时间及网址
  17. Android开发实例详解之IMF
  18. 世界上最著名的24句哲理
  19. 【2019春招准备:A1】
  20. Word2013目录设置,页码对齐

热门文章

  1. python服务器稳定性,一种基于Python服务器稳定性测试的方法技术
  2. Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)
  3. Java8 PriorityBlockingQueue源码分析
  4. VTK:填充孔用法实战
  5. JavaScript实现depth First Search深度优先搜索算法(附完整源码)
  6. boost::detail::lightweight_mutex相关的测试程序
  7. boost::mpl模块实现zip_view相关的测试程序
  8. boost::hana::all用法的测试程序
  9. hana::detail::variadic::drop_into用法的测试程序
  10. boost::contract模块实现代码块的测试程序