最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的个人博客 zuzhiang.cn,以及我的github。

本文将讲解决策树和随机森林的基本思想,以及信息增益、信息增益率(比)、Gini系数等理论部分的内容,此外还有决策树的剪枝等内容。该部分内容主要是定义比较多,算法思想并不是很难。

<!--more-->

本文主要是依据李航老师的《统计学习方法》和邹博老师的机器学习教学视频总结编写的。文中所用到的有关机器学习的基本概念和方法可以参考本人博客中该系列之前的文章,或者直接上网搜索相关的内容。以下文章所列出的公式以及公式的推导读者们最好是在草稿本上自己推导一遍。由于本人水平所限,文章中难免有错误和不当之处,欢迎大家多多批评指正!

一、决策树的基本思想

决策树(decision tree)是一种树形的分类回归方法,本文中只讨论用于分类的决策树。在决策树中的每个内部节点表示在一个特征上的测试,每个分支代表一个测试输出,每个叶节点表示一种类别。决策树采用自顶向下的递归方法,其基本思想是:从根节点开始,每次选择一个最优特征对当前样本进行划分,并生成相应的子节点,递归的进行这一过程,直到叶节点中包含的样本都是同一类别或没有合适的特征为止。所谓的最优特征就是按该特征将样本进行划分后得到的分类与其真实分类最接近的特征。下图可以看作是一个女生选择是否要与相亲对象见面的决策树模型:

决策树算法流程:

(1) 首先构建包含所有训练数据的根节点,并根据信息增益/信息增益率/Gini系数选择当前训练集的最优特征,据此对训练集进行划分,并生成相应的子节点;

(2) 当子节点中的样本均属于同一分类时,则该节点为叶节点,不再对其进行划分;

(3) 反之选择新的最优特征对当前样本进行划分,构建新的子节点;

(4) 递归的进行(2)、(3)两步,直到所有样本均分类正确或没有合适特征为止;

(5) 得到一棵决策树。

二、主要标记和基本概念

以下所谈到的主要标记和基本概念当前只需粗略的读一遍,有个印象即可,等后面用到的时候再回来查也不迟。其中有很多知识后面用不到,但是可以帮助我们理解,所以也就一并列在下面了。

1.主要标记

设训练数据集为D,|D|表示训练集样本个数。

设有K个类别,分别为:,||为该类别下的样本个数。

设特征A有n个不同的取值,分别为:,根据特征A的取值将D划分为n个子集,为该子集的样本个数。

记子集中属于类别的样本集合为,为的样本个数。

2.基本概念

(1) 信息量

信息量就是一个事件包含的信息的数量,若设随机变量X的概率分布为 p(X),则其信息量为:

事件发生的概率越小,其信息量越大。比如太阳从西边升起是小概率事件,其信息量非常大。由定义可知信息量还满足两个事件同时发生的信息量为两者信息量之和,即:

(2) 熵

中学学过,熵(entropy)表示系统的混乱程度。在这里熵的含义类似,表示随机变量的不确定性程度。我们定义信息量的期望为熵:

当熵和条件熵中的概率由数据估计(比如极大似然估计)得到时,所对应的熵和条件熵分别被成为经验熵和经验条件熵。

训练集D的经验熵为:

(3) 联合熵

事件X、Y的联合熵就是两者同时发生时的熵,即:

(4) 条件熵

条件熵定义为X给定条件下Y的条件概率分布的熵对X的数学期望:

条件熵H(Y|X)表示在已知X的条件下,随机变量Y的不确定性。

训练集D的条件经验熵为:

(5) 互信息

随机变量的X、Y的互信息定义为:

下图是熵、联合熵、条件熵和互信息四者的关系图。

从图中还可以得出以下等式:

(6) 信息增益

特征A对训练数据集D的信息增益g(D,A)定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:

仔细观察可以发现,以上D和A的信息增益就是两者的互信息。上式中H(D)表示对数据集D进行分类的不确定姓。H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。信息增益表示得知特征A而使得对数据集D的分类的不确定性减少的程度。

(7) 信息增益率(比)

特征A对训练数据集D的信息增益率定义为信息增益g(D,A)与训练数据集D关于数据A的值的熵之比,即:

信息增益率的提出是为了解决在以信息增益作为划分训练数据集的特征时,存在偏向于选择取值较多的特征作为最优特征的问题。

(8) Gini(基尼)系(指)数

假设有K个类别,样本点属于第k类的概率为,则概率分布的基尼系数为:

一个特征的信息增益/信息增益率/Gini系数越大,表明该特征对样本的熵的减少能力越强,换句话说,该特征使得数据由不确定性变为确定性的能力越强。

三、三种决策树算法

当前比较流行的有三种决策树算法,分别是ID3、C4.5和CART算法,三种算法均采用在第一部分提到的“决策树算法流程”。其中ID3算法采用信息增益来进行特征选择;C4.5算法采用信息增益率来进行特征选择;CART算法是Classification and Regression Tree的缩写,也就是分类与回归树,它采用Gini系数来进行特征选择。此外,CART树一定是一棵二叉树,而其他两种也可以是多叉树。

四、剪枝算法

生成的决策树往往会存在过拟合的问题,为了避免这一问题需要对其进行剪枝操作。对决策树进行简化的过程被称为剪枝(pruning),它又可以分为预剪枝和后剪枝两种。预剪枝就是在决策树生成的过程中根据某些条件(如节点所含的样本数)判断是否继续划分当前节点。而后剪枝是指在决策树生成后,由完全树开始,剪枝部分节点得到,再次剪枝部分节点得到,直到仅剩下树根的树,并在验证集数据上对这K个决策树进行评价,选择损失函数最小的数作为最终的决策树。

剪枝时所用的损失函数为:

其中被称为剪枝系数,满足,是叶节点的个数,C(T)是所有叶节点的熵的加权和,其表达式如下所示。之所以加权是因为每个叶节点包含的样本个数不同。当小时,最优子树偏大(节点多);当大时,最优子树偏小。

上式中是叶节点的样本个数。

对一个内部节点进行剪枝,剪枝完毕后其子节点全部被去除,而生成一个新的节点来代替原节点。故对内部节点t剪枝前的损失函数为以节点t为根的子树的损失函数:

而对内部节点t剪枝后的损失函数为以节点t为单节点树的损失函数:

如果在对节点t进行剪枝后,损失函数相同,但是决策树模型变简单了,则说明该剪枝是可行的。故可以让,联立以上两个方程式,求解的值:

上式表示剪枝后整体损失函数减少的程度。所以在剪枝时,需要计算每一个内部节点t 的剪枝系数的值,并对最小的节点进行剪枝,不断剪枝下去,直到只剩下根节点。

五、随机森林

一棵树是树,多棵树就是森林了。随机森林(random forest)的基本思想是建立多棵决策树,让所有的决策树投票表决待分类样本所属的分类,票数最多的类别就是最终的预测结果。

1.Bootstrap采样

bootstrap采样就是从样本集(样本数为N)中随机的重采样出N个样本形成一个训练集。所谓重采样就是有放回的采样,这样可以使训练集中的某个样本出现多次。

2.Bagging(装袋)

bagging的策略如下:

(1) 从样本集(样本数为N)中使用bootstrap采样出N个样本形成一个训练集;

(2) 对于该训练集来说,在所有属性上对其建立一个分类器;

(3) 重复以上两步K次,形成K个分类器;

(4) 根据K个分类器的投票结果,觉得样本属于那一类。

3.随机森林

随机森林在bagging策略的基础上进行了修改,其算法流程如下:

(1) 从样本集(样本数为N)中使用bootstrap采样出N个样本形成一个训练集;

(2) 对于该训练集来说,先从所有(M个)属性上随机选择m个属性,并对这m个属性构建一棵决策树。其中m<<M,<<是远小于的意思;

(3) 重复以上两步K次,形成K棵决策树;

(4) 根据K棵决策树的投票结果,觉得样本属于那一类。

决策树中所谓的随机就是指随机抽取n个样本作为训练集,随机选择m个属性构建决策树。值得注意的是,在随机森林算法中生成决策树的过程中是不需要对其进行剪枝操作的。

机器学习(4):决策树和随机森林相关推荐

  1. 机器学习中决策树的随机森林_决策树和随机森林在机器学习中的使用

    机器学习中决策树的随机森林 机器学习 (Machine Learning) Machine learning is an application of artificial intelligence ...

  2. 机器学习利器——决策树和随机森林

    更多深度文章,请关注:https://yq.aliyun.com/cloud 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率, ...

  3. 机器学习之决策树与随机森林

    目录 1.了解熵.条件熵.互信息的概念及公式 1.1.熵 1.2.条件熵 1.3.信息增益/互信息 2.了解决策树 2.1.了解决策树的概念和特点以及和熵的关系 2.2.了解树生成的过程 2.3.了解 ...

  4. Spark 机器学习 —— 从决策树到随机森林

    构造训练数据 import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.Labeled ...

  5. 机器学习:决策树与随机森林

    决策树与随机森林 决策树 基本原理 优缺点 优点 缺点 使用决策树对鸢尾花分类 随机森林 基本原理 优缺点 优点 缺点 葡萄酒数据集的随机森林分类 决策树 基本原理 决策树算法是一种基于实例的算法,常 ...

  6. 机器学习 之 决策树和随机森林

    决策树和随机森林 什么是决策树 决策树组成 节点的确定方法 决策树基本流程 决策树的常用参数 代码实现决策树之分类树 决策树不同max_depth的学习曲线 网格搜索在分类树上的应用 回归树中不同ma ...

  7. 机器学习(9)--决策树和随机森林

    一.决策树 认识:决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 举例说明: 案例一: 案例二: 如何去划分是否能得到 ...

  8. 【机器学习】决策树与随机森林模型

    决策树: 决策树:是一种树形结构,其中每个内部节点(圆形表示特征)表示一个属性上的判断,每个分支(箭头)代表一个判断结果的输出,最后每个叶节点(正方形表示分类的结果)代表一种分类情况,本质是一颗由多个 ...

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

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

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

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

最新文章

  1. java连接mysql8
  2. 常用的SAP系统FM
  3. Hadoop中Context类的作用
  4. 江苏一动物园现“旋转活马” 园方:创意来自马术训练
  5. 【HDU - 6183】Color it(CDQ分治 或 动态开点线段树)
  6. 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
  7. Nodejs,Npm,React安装教程
  8. 多点触摸与单点触摸接口主要区别【转】
  9. Excel表格文件,.xls和.xlsx格式的区别
  10. 计算机系统动态库修复,电脑系统windows7出现无法定位动态链接库user32.dll错误提示解决措施...
  11. 2020总结——人生如逆旅,我亦是行人
  12. 提高电脑运行速度--关闭电脑无用服务
  13. 《TiDB 6.x in Action》发布,凝聚社区集体智慧的 6.x 实践汇总!
  14. 刹车离合同时踩非常危险
  15. 太空射击unity工程素材文件 飞机大战 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本
  16. tar gz bz xz 解压缩命令
  17. 031 Rust死灵书之Vec实现insert和remove
  18. ipv6地址数中/32,/48,/64含义
  19. 【eXtremeComponents总结系列】使用总结(转载)
  20. 删除右键菜单中的项目

热门文章

  1. Failure to create temporary file Permission denied
  2. android贴纸效果,Android OpenGLES滤镜开发之贴纸效果
  3. Qt-OPCUA客户端
  4. c#调用接口的两种方式
  5. 淘宝网前端开发面试题(二)--JS 面试题
  6. myeclipse 识别不了nav标签怎么办?
  7. WebRTC服务器搭建
  8. LOOKUP函数10种经典用法
  9. 【观察】中国企业下一阶段数字化转型,背后必有强大的数云融合平台
  10. 语义分割MIoU代码解析