Overfitting and Tree Pruning| 学习笔记

简介: 快速学习 Overfitting and Tree Pruning。

开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):Overfitting and Tree Pruning】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/921/detail/15644


Overfitting and Tree Pruning

 

内容介绍:

一、过拟合

二、树剪枝

三、决策树分类方法优势和不足

 

一、过拟合

1.概念

如果构造的决策树模型比较复杂,在训练集上就可能会出现 overfitting 的现象,称之为过拟合。

图片31.png

比如上图所示,有两类数据对象,红色和蓝色的数据对象,如果构建的决策树模型复杂类似于绿色的一条曲线,可以非常完美的把红色点和蓝色点区分开,也就是样的模型,在训练集上的效果效果是非常好的。在其他的数据集上,比如测试集效果会比较差。这种现象就是叫做过拟合的现象。

2.过拟合例子

通过一个例子介绍过拟合的现象。首先通过人工的方式构造一个数据集。数据集包含两类,第一类是蓝色的加号,模拟高斯分布利用高斯分布产生5000个点,并在5000个点的基础上,添加400个噪音点。此外,还有一类数据是红色的圆圈。红色圆圈的数据是通过一个均匀分布,产生5400个点。

图片32.png

在得到训练数据之后,从训练数据中抽取10%作为训练集。而剩余90%作为测试集。

3.Which tree is better?

根据训练集,可以构建很多种决策树模型。表列出了决策树的节点和决策树的 Error rate 之间的关系。随着决策树中节点数的增加,决策树模型在训练集上的 Error rate 也就是分类的错误率会越来越低。

(1)、两个模型。比如构建的是一个具有四个节点的决策树模型。Error rate 大概是0.1左右,还可以构建一棵由50个节点构成的决策树模型,Error rate 可能大概是0.9左右。那么这样的一个比较复杂的决策树模型的 Error rate 比较小。

图片33.png 

(2)、两个模型比较

那一个模型就比较好呢?看一下两个模型在测试集上的表现。

在下图展示的是一些结构比较简单的决策树的节点数和他的Error rate 之间的变化关系。

图片34.png 

其中,蓝色的线代表的是在训练集上的分类错误,而红色的线代表的是在测试集上的分类错误。

现在可以看到,当节点数比较小的时候,分类模型的在测试集和训练集上的 Error rate 表现是很类似的,都是随着节点数的增加而降低。

但是,当分类数模型如果比较复杂,也就是节点数比较多的时候。分类性能就会出现一些差异,随着节点数的增加,刚开始在测试集上的 Error rate 和训练集上的 Error rate 变化是一样的,都是下降,但是当节点增加到某一个区间之后,分类器的性能在测试集上的 Error rate 会随着节点数的增加而增加。所以说过于复杂的模型,那么在测试集上的表现效果可能就会比较差。

4.复杂的模型在测试集上比较差原因

过于复杂的模型在测试集上的表现效果会比较差原因,主要就是因为模型比较复杂。很好的去拟合了一个训练集。但是训练集中,可能有一部分数据代表的是噪音或者是异常。把这一部分噪音和异常也学习到分类模型里面去了,就导致比较复杂的分类模型在测试集上的效果反而不太好,这种现象就是overfitting。与之对应的就是underfitting欠拟合,欠拟合指的是分类模型构建的太简单了,在测试集和训练集上性能都不太好,Error rate 都比较大。

 

二、树剪枝

在决策树中主要是通过树剪枝来。避免过拟合的问题。在决策树剪枝的方法中主要是有两种策略,一种叫做预剪枝,一种叫做后剪枝。

1.预剪枝

所谓的预剪枝就指在构建一棵决策树的过程中,设立一些合适的预值。利用这些预值去判断某些节点是不是需要停止构建。

对于预剪枝来说,实行是比较困难的,主要的原因是没有办法去选择比较合适的预值。

图片35.png 

2.后剪枝

在决策树中使用比较多的剪枝策略是后剪枝。对于后剪枝来说,首先完成决策树的构建,然后移除决策树中的某些分支,比较移出后的决策树的分类性能和之前决策树的分类性能,如果变化不大,就认为这些分支是可以被剪掉的。

图片36.png 

3.标记的数据

在决策树剪枝的时候,需要使用到一组有标记的数据,用来去比较剪之前和剪之后的决策树的分类性能。那么,这样的一部分有标记的数据是独立于训练集的。

 

三、决策树分类方法优势和不足

以上就是关于决策树的知识。对于决策树来说,这种分类方法,是有一些优势的,也有一些不足之处在。

1. 优势

所有的优势中,其中有一点是非常重要的,也就是基于决策树的分类模型,是非常易于理解的。对于一个决策树模型来说,可以用 if that 的规则去表达它的分类模型,那么这样的一种分类规则是非常符合人类认知特点的,容易被人类去理解的,它比一些复杂的数学公式要被人们易于接收。所以,对于基于决策树的分类起来说,一个最大的优点就是便于理解。那此外,基于决策树的分类器,它的性能也是比较好的。

2.缺点

对于决策树分类器来说,一个缺点就是在进行属性测试条件选择的时候,每一次我们就只能选择一个属性。大分类中,实际上有很多属性是相互组合在一起或者是相互影响,从而影响类别。

相关文章
|
开发工具
成功解决 zsh: command not found
成功解决 zsh: command not found
3536 0
|
28天前
|
算法 大数据 数据挖掘
数据嗅探社会热点:我们靠“感觉”,机器靠“证据”
数据嗅探社会热点:我们靠“感觉”,机器靠“证据”
174 6
|
7月前
|
开发者
(在线CAD控件)网页CAD实现粗糙度标注的方法
本文介绍了通过MxCAD二次开发实现机械制图中表面粗糙度符号的标注功能。表面粗糙度符号用于表示零件表面微观不平度,基本形式为三角形,可结合不同修饰(如加横线、小圆等)表达具体加工要求。文章解析了符号含义,并基于McDbCustomEntity类创建自定义实体,实现符号绘制、数据持久化、夹点设置等功能。此外,还提供了用户交互式标注方法,支持根据直线、圆弧或指定角度生成粗糙度标注。最后展示了效果演示及扩展开发示例,便于开发者进一步定制功能。
|
9月前
|
人工智能 API 决策智能
还在蹲Manus的邀请码?别等了!开源版Manus为你快速创建AI工位,给AI一台电脑,然后你就玩去吧!
OpenManus 是 MetaGPT 的开源 AI 平台,支持多语言模型和工具链,执行代码、处理文件等任务,具备实时反馈。OWL 基于 CAMEL-AI,支持角色分配、任务分解和记忆功能,实现高效任务自动化。
1228 22
还在蹲Manus的邀请码?别等了!开源版Manus为你快速创建AI工位,给AI一台电脑,然后你就玩去吧!
|
9月前
|
前端开发 程序员 API
鸿蒙元服务实战-笑笑五子棋(1)
《笑笑五子棋》是基于鸿蒙系统开发的元服务应用,由深度开发者分享开源。名字源于开发者女儿“笑笑”,充满程序员的独特浪漫。应用采用 ArkTS API 12、Canvas 等技术,支持 AtomicServiceTabs 和卡片开发,已成功上架并获得基础激励。凭借活跃设备数达标,还登上鸿蒙负一屏休闲分类菜单,提升了用户活跃度。本文介绍了应用背景和技术细节,下篇将聚焦代码实现。适合对鸿蒙开发感兴趣的开发者学习交流。
194 10
鸿蒙元服务实战-笑笑五子棋(1)
|
存储 自然语言处理 算法
【算法精讲系列】MGTE系列模型,RAG实施中的重要模型
检索增强生成(RAG)结合检索与生成技术,利用外部知识库提升大模型的回答准确性与丰富性。RAG的关键组件包括文本表示模型和排序模型,前者计算文本向量表示,后者进行精细排序。阿里巴巴通义实验室推出的GTE-Multilingual系列模型,具备高性能、长文档支持、多语言处理及弹性向量表示等特性,显著提升了RAG系统的检索与排序效果。该系列模型已在多个数据集上展示出优越性能,并支持多语言和长文本处理,适用于各种复杂应用场景。
2697 18
|
芯片
STM32外设系列—sg90(舵机)
本文介绍了什么是舵机,舵机的控制原理。以sg90为例,介绍了180°舵机的控制方法,给出了详细的程序设计。最后,介绍了360°舵机的控制方法。
3732 1
STM32外设系列—sg90(舵机)
|
存储 缓存 算法
缓存优化利器:5分钟实现 LRU Cache,从原理到代码!
嗨,大家好!我是你们的技术小伙伴——小米。今天带大家深入了解并手写一个实用的LRU Cache(最近最少使用缓存)。LRU Cache是一种高效的数据淘汰策略,在内存有限的情况下特别有用。本文将从原理讲起,带你一步步用Java实现一个简单的LRU Cache,并探讨其在真实场景中的应用与优化方案,如线程安全、缓存持久化等。无论你是初学者还是有一定经验的开发者,都能从中受益。让我们一起动手,探索LRU Cache的魅力吧!别忘了点赞、转发和收藏哦~
497 2
|
存储 JSON 安全
ThinkPHP 文件上传 fileSystem 扩展的使用
本文介绍了在ThinkPHP框架中使用filesystem扩展进行文件上传的方法。包括安装filesystem扩展、了解配置文件、上传文件的验证规则以及文件上传的示例代码,旨在帮助开发者实现文件的安全上传和存储。
ThinkPHP 文件上传 fileSystem 扩展的使用
|
缓存 负载均衡 算法
Nginx 能做什么|学习笔记
快速学习 Nginx 能做什么
Nginx 能做什么|学习笔记