首页 > 其他分享 >【机器学习】决策树学习下篇(详解)

【机器学习】决策树学习下篇(详解)

时间:2024-03-28 12:58:46浏览次数:23  
标签:剪枝 下篇 模型 学习 拟合 属性 决策树

引言

在当今数据驱动的时代,机器学习技术已成为解决复杂问题不可或缺的工具。其中,决策树学习作为一种基础且强大的算法,广泛应用于各种领域,包括但不限于金融风控、医疗诊断、客户关系管理等。决策树以其简单直观、易于理解和实现的特点,受到了数据科学家和业界专家的青睐。

过拟合问题

在决策树学习中,过拟合是一个经常遇到的问题。过拟合发生时,模型在训练数据上表现得非常好,但在新的、未见过的数据上表现较差。这是因为模型学习到了训练数据中的噪声,而不仅仅是底层的数据分布。过拟合问题的一个极端例子是决策树模型将每个训练样本都完美分类,每个叶节点对应单个训练样本,这种情况下的决策树仅仅是实现了一个对训练数据的查表,而对新数据几乎没有预测能力。

如何避免过拟合

预剪枝(Pre-pruning)和后剪枝(Post-pruning)是决策树算法中两种主要的剪枝技术,用于防止模型过拟合,提高模型的泛化能力。下面详细介绍这两种技术的原理、方法及其优缺点。

预剪枝(Pre-pruning)

预剪枝是指在决策树生成过程中,提前停止树的增长的一种策略。其核心思想是在树完全生成之前就停止其进一步分裂,以防止模型复杂度过高,避免过拟合。

实施策略
  1. 基于样本数的停止分裂:设定一个阈值,当到达某个节点的训练样本数量少于这个阈值时,停止分裂。这个策略的基本假设是,基于过少的数据样本做出的决策可能会引入更多的误差和泛化错误。

  2. 基于信息增益的停止分裂:在每次分裂前计算分裂带来的信息增益,如果这个增益小于某个预设的阈值,则停止分裂。这种方法利用了所有的训练数据,并允许叶节点存在于树的任何层级。

优缺点
  • 优点:计算效率高,因为它阻止了树的进一步增长,减少了模型的复杂度。
  • 缺点:可能因为过早停止树的增长而导致模型欠拟合,从而影响模型的准确率。

后剪枝(Post-pruning)

后剪枝是在决策树完全生成之后,通过去除一些子树或者节点来简化模型的一种方法。相比预剪枝,后剪枝允许树完全生长,然后再评估是否有必要进行剪枝。

实施策略

  1. 错误降低剪枝(Error Reduction Pruning):将数据集分为训练集和验证集。使用验证集来评估剪枝前后的模型性能。如果剪枝能够在验证集上减少错误,则进行剪枝。这种方法是贪心算法,每次尝试剪去每个可能的节点(以及其子树),保留那些能够提高验证集准确率的剪枝。

  2. 规则后剪枝(Rule Post-Pruning):首先将决策树转换为一组规则,然后对每条规则进行评估和简化。规则简化的过程中,去除某些条件,如果这样做能够提高规则的准确性,则保留简化后的规则。

优缺点
  • 优点:通常能够得到更加精确的模型。因为它允许树完全生长,然后再基于实际的模型性能来进行剪枝,有更大的空间找到最优的模型结构。
  • 缺点:计算开销较大,特别是对于大型数据集,因为需要完整地构建树模型,然后再进行复杂的剪枝操作。

总结来说,预剪枝通过提前停止树的增长来防止过拟合,具有实施简单和计算高效的优点;而后剪枝则是允许树完全生长后,通过剪枝优化模型,虽然计算复杂度高,但通常能够得到更好的模型性能。在实践中,选择哪种剪枝技术取决于具体问题的需求、数据集的大小和计算资源的限制。

实际场景中的决策树学习

决策树在解决实际问题时,经常会遇到一些特殊情况,如连续属性值的处理、具有过多取值的属性、未知(缺失)属性值处理,以及有代价的属性等。对于连续属性,一种常见的处理方法是通过确定一个阈值将其离散化。而对于具有过多取值的属性,可以采用信息增益比来减少偏差。对于缺失属性值,一种策略是根据数据中该属性的分布来推断缺失值。对于属性获取成本高的情况,可以通过考虑属性的代价来优化决策树的构建过程。

决策树学习的扩展

决策树学习不仅限于基础的分类和回归任务,它还可以扩展到更复杂的学习框架中,如随机森林和梯度提升决策树(GBDT),这些都是基于决策树的强大集成学习方法。此外,决策树的思想也启发了许多其他类型的学习算法的发展。

结论

决策树学习作为一种基本的机器学习算法,以其理论的深度和实践的广泛性,对于机器学习领域的贡献不可小觑。通过不断的研究和改进,决策树及其衍生算法在解决实际问题中展现出了强大的能力和灵活性。无论是在学术研究还是工业应用中,决策树都是一项不可或缺的工具。

参考资料

标签:剪枝,下篇,模型,学习,拟合,属性,决策树
From: https://blog.csdn.net/chen695969/article/details/136941271

相关文章

  • FLASK学习记录-PIPENV虚拟环境搭建
     $pipinstallflask-ihttps://pypi.tuna.tsinghua.edu.cn/simpleLookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleCollectingflaskDownloadinghttps://pypi.tuna.tsinghua.edu.cn/packages/93/a6/aa98bfe0eb9b8b15d36cdfd03c8ca86a03968a87f27ce22......
  • ffmpeg学习window下使用Visual Studio创建cpp项目添加ffmpeg源代码编译好的依赖库
    ffmpeg学习window下使用VisualStudio创建cpp项目添加ffmpeg源代码编译好的依赖库1.创建cpp项目启动VisualStudio,创建新项目选择控制台运用程序随便输入一个项目名称,点击创建,完成helloworld项目的创建编译和运行项目,按f7编译项目,按f5运行项目下次重新打开......
  • C++ Primer Plus 代码学习解析(第三章 3.8-3.11)
    3.8floatnum.cpp#include<iostream>intmain(){usingnamespacestd;cout.setf(ios_base::fixed,ios_base::floatfield);floattub=10.0/3.0;doublemint=10.0/3.0;constfloatmillion=1.0e6;cout<<&......
  • 深度学习入门指南:掌握人工智能的未来
    目录前言深度学习基本概念深度学习学习路径必备技能如何选择适合自己的深度学习库深度学习库在处理文本数据方面有哪些优势深度学习技术在未来的发展趋势是什么如何选择适合自己的深度学习课程深度学习在未来的应用场景有哪些深度学习如何帮助我们理解和预测人类语言......
  • AI大模型学习简论
     目录 AI大模型学习AI大模型学习的理论基础数学基础算法原理模型架构设计优势与挑战AI大模型的训练与优化计算资源分配参数调优正则化方法模型压缩分布式计算与并行计算AI大模型在特定领域的应用自然语言处理(NLP)性能表现与改进空间图像识别性能表现与改......
  • React— React面试题按照学习顺序持续更新
    1.React的特点采用组件化模式,命名式编码,提高代码复用率;在ReactNative中可以使用react语法进行移动端开发使用虚拟DOM(v-dom)和diff算法,减少DOM和浏览器的交互2.babel在React的作用ES6语法转ES5,如箭头函数、模板字符串、解构赋值等。Babel可以将这些高级语法转换为浏览器能......
  • 前端学习-UI框架学习-Bootstrap5-003-网格系统
    菜鸟教程链接Bootstrap提供了一套响应式、移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列规则网格每一行需要放在设置了.container(固定宽度)或.container-fluid(全屏宽度)类的容器中,这样就可以自动设置一些外边距与内边距。使......
  • 学习Source Generators之HelloWorld
    介绍源生成器是C#开发人员可以编写的一种新组件,允许执行两个主要操作:检索表示正在编译的所有用户代码的编译对象。可以检查此对象,并且可以编写适用于正在编译的代码的语法和语义模型的代码,就像现在使用分析器一样。生成可在编译过程中添加到编译对象的C#源文件。也就是......
  • 机器学习中的LightGBM模型及其优缺点(包含Python代码样例)
    目录一、简介二、优缺点三、样例代码四、总结一、简介LightGBM(LightGradientBoostingMachine)是一种基于梯度提升(GradientBoosting)算法的机器学习模型。它是由微软团队于2017年开发的,旨在解决大规模数据下的效率和准确性问题。LightGBM的原理如下:基于梯度提升:Ligh......
  • 你都用Python来干什么?为什么这么多人想学习Python?
    挺想回答一下这个问题的。我是非码专业,从2019年开始接触python。一开始其实需求非常简单,就是为了处理大量的Excel表格。其实本来四大的工作经历已经让我excel的水平比较高了,各种跨表定位、查询,复杂的字符串操作,还有vba函数都可以处理。但是python铺天盖地的宣传还是让我觉......