热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

详解决策树与随机森林

文章目录0️⃣引言1️⃣决策树🎟基本流程🎟特征选择🚌信息增益🚎缺点🚌信息增益率🚎缺点

在这里插入图片描述


文章目录

    • 0️⃣引言
    • 1️⃣决策树
      • 🎟基本流程
      • 🎟特征选择
        • 🚌信息增益
          • 🚎缺点
        • 🚌信息增益率
          • 🚎缺点
        • 🚌基尼指数
      • 🎟剪枝处理
    • 2️⃣随机森林
      • 🎟bagging集成
      • 🎟介绍


0️⃣引言

在之前介绍过决策树和随机森林调参,但都是直接调用skelearn,这次想重点介绍一下原理。


1️⃣决策树


🎟基本流程

以分类任务为代表的决策树模型,是一种对样本特征构建不同分支的树形结构。


  • 一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;
  • 叶结点对应于决策边界,其他每个结点则对应于一个属性测试;
  • 每个结点包含的样本结合根据属性测试的结果被划分到子结点中;
  • 根结点包含样本全集,从根结点到每个叶结点的路径对应了一个判定测试序列。
  • 决策树学习的目的就是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,类似于“分而治之”策略
  • 结束条件:
    • 当前结点包含的样本全属于同一类别,无需划分
    • 当前属性集为空,或是所有样本在所有属性上取值相同,无需划分==》将当前结点标记为叶结点,并将其类别设置为该结点样本最多的类别
    • 当前结点包含的样本集合为空,不能划分==》把当前结点标记为叶结点,但是将其类别设定为父结点所含样本最多的类别

🎟特征选择

目的:通过划分,使得决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高


🚌信息增益

在信息论中,熵表示随机变量不确定性的度量。假设数据集D中第K类样本所占的比例为 pkp_kpk ,则D的熵定义为:
在这里插入图片描述
如果某件事一定发生(太阳东升西落)或一定不发生(钓鱼岛是日本的),则概率为1或0,对应的熵均为0。如果某件事可能发生****可能不发生,概率介于0到1之间,熵大于0。

由此可见,熵越大,随机性越大,结果越不确定。

我们再来看一看 条件熵 Ent(D, a) ,表示引入随机变量a对于消除D不确定性的程度(通俗的讲就是如果属性a对于数据集D是一个比较好的特征,也就是使用a划分D之后使D纯度更高,导致更多相同类别的划分在一起,条件熵就会越小,反之越大)。假如D、a相互独立,则D的条件熵和熵有相同的值 (此时条件熵是最大的时候);否则条件熵一定小于熵。
在这里插入图片描述


解析:使用属性a对数据集D进行划分,导致产生V个分支结点,第v个分支结点对应的样本记为DvD^vDv,也就是样本数越多的结点影响越大


明确了这两个概念,理解信息增益就比较方便了。现在我们有一份数据集D(例如贷款信息登记表)和特征A(例如年龄),则A的信息增益就是D本身的熵与特征A给定条件下D的条件熵之差,即:
在这里插入图片描述
数据集D的熵是一个常量。信息增益越大,表示条件熵 Ent(D, a) 越小,a消除D的不确定性的功劳越大。

所以要优先选择信息增益大的特征,它们具有更强的分类能力。由此生成决策树,称为ID3算法


🚎缺点

信息增益对取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,提出了信息增益率


🚌信息增益率

当某个特征具有多种候选值时,信息增益容易偏大,造成误差。引入信息增益率可以校正这一问题。

信息增益率=信息增益与数据集D的熵之比:
[公式]
其中:
在这里插入图片描述
其实IV(a)很像熵的定义,称为属性a的固有值,属性a可能取值越大(V越大),IV(a)的值通常会更大。

因此,我们优先选择信息增益率最大的特征,由此生成决策树,称为C4.5算法


🚎缺点

信息增益率对信息增益中偏好较多属性做了修改,会对取值数目较少的属性有所偏好,会导致信息增益率有点矫枉过正,因此C4.5并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。


🚌基尼指数

基尼指数是另一种衡量不确定性的指标。首先介绍基尼值
[公式]
它反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此基尼值越小,则数据集D的纯度越高。

则属性a的基尼指数定义为:
在这里插入图片描述
我们优先选择基尼指数最小的特征,由此生成决策树,称为CART算法


CART表示分类回归决策树,同样由特征选择、树的生成及剪枝组成,可以处理分类和回归任务。
相比之下,ID3和C4.5算法只能处理分类任务。
CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,依次递归地二分每个特征。
CART对回归树采用平方误差最小化准则,对分类树用基尼指数最小化准则



🎟剪枝处理


目的:防止过拟合,提高高泛化能力。


决策树剪枝一般有两种方法:


  • 预剪枝:在树的生成过程中剪枝。基于贪心策略,可能造成局部最优
  • 后剪枝:等树全部生成后剪枝。运算量较大,但是比较精准

决策树剪枝往往通过极小化决策树整体的损失函数实现

预剪枝降低过拟合风险,显著减少决策树的训练时间开销和测试时间开销。但是有些分支的当前划分虽然不能提升泛化性能、甚至可能导致泛化性能暂时下降,但是在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。

相反,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但是后剪枝过程是在生成完全决策树之后进行的,并且要自底向上的对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大的多


2️⃣随机森林


🎟bagging集成

机器学习算法中有两类典型的集成思想:bagging和boosting。

bagging是一种在原始数据集上,通过有放回抽样分别选出k个新数据集,来训练分类器的集成算法。分类器之间没有依赖关系

随机森林属于bagging集成算法。通过组合多个弱分类器,集思广益,使得整体模型具有较高的精确度和泛化性能。


🎟介绍

我们将使用CART决策树作为弱学习器的bagging方法称为随机森林

“随机“表示2种随机性,即每棵树的训练样本训练特征随机选取。多棵决策树组成了一片“森林”,计算时由每棵树投票或取均值的方式来决定最终结果,体现了三个臭皮匠顶个诸葛亮的中国传统民间智慧。

由于随机性,随机森林对于降低模型方差效果显著。故随机森林一般不需要额外剪枝,就能取得较好的泛化性能。

从偏差-方差角度看,Boosting主要关注降低偏差,因此可以基于泛化性能相当弱的学习器构建出很强的集成,而Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更加明显。所以随机森林相比于基于boosting的GBDT模型,偏差会大一些。另外,随机森林中的树一般会比较深,以尽可能地降低偏差;而GBDT树的深度会比较浅,通过减少模型复杂度来降低方差。(面试考点)

最后,我们总结一下随机森林都有哪些优点:


  • 采用了集成算法,精度优于大多数单模型算法
  • 在测试集上表现良好,两个随机性的引入降低了过拟合风险​
  • 树的组合可以让随机森林处理非线性数据
  • 训练过程中能检测特征重要性,是常见的特征筛选方法​
  • 每棵树可以同时生成,并行效率高,训练速度快
  • 可以自动处理缺省值​

推荐阅读
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 随着生活节奏的加快和压力的增加,越来越多的人感到不快乐。本文探讨了现代社会中导致人们幸福感下降的各种因素,并提供了一些改善建议。 ... [详细]
  • 本文深入探讨了CART(分类与回归树)的基本原理及其在随机森林中的应用。重点介绍了CART的分裂准则、防止过拟合的方法、处理样本不平衡的策略以及其在回归问题中的应用。此外,还详细解释了随机森林的构建过程、样本均衡处理、OOB估计及特征重要性的计算。 ... [详细]
  • 深入理解K近邻分类算法:机器学习100天系列(26)
    本文详细介绍了K近邻分类算法的理论基础,探讨其工作原理、应用场景以及潜在的局限性。作为机器学习100天系列的一部分,旨在为读者提供全面且深入的理解。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 支持向量机(SVM)是一种基于统计学习理论的模型,主要在VC维和结构风险最小化的理论基础上发展而来。本文将探讨几种不同的SVM方法及其优化策略,旨在提高模型的效率和适用性。 ... [详细]
author-avatar
lobtao
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有