机器学习(二十五):决策树算法以及决策树和神经网络的对比

一、决策树集合

单一决策树会对训练数据的变化很敏感。例子:输入十个数据,判断是否是猫。只替换其中一个数据,信息增益最高的分裂特征就发生了改变,决策树就发生了变化。

使用决策树集合可以使算法更加健壮。例子:使用三棵决策树,输入新数据预测是否是猫,然后根据三颗决策树的结果投票决定预测结果。

二、决策树算法

2.1 替换采样

替换采样:从训练数据(数量为M)中随机抽取一个记录下来,把这个数据再放回去,再进行随机抽取,直到采样数量达到M

例子:假设袋子里有四颗不同颜色的积木,替换采样方法:

  • 从袋子里随机取出一个积木(绿色)
  • 然后把该积木放回袋子里,再次随机取出一个积木(黄色)
  • 然后积木放回袋子里,再次随机取出一个积木(蓝色)
  • 然后积木放回袋子里,再次随机取出一个积木(蓝色),此时采样数量一共是4,停止采样。

2.2 袋状决策树

步骤:

  1. 通过对训练集进行有放回的替换采样,生成多个随机训练集。例如训练集一共有m个数据,通过替换采样抽取m个数据组成一个随机训练集,重复B次,生成B个随机训练集。
  2. 在每个随机训练集上训练一颗决策树,一共训练出B棵决策树。
  3. 最终的预测结果通过这B棵决策树的预测结果进行平均或投票来确定

(B一般取一百左右,B如果太大了,就会导致显著减缓计算减缓,但不能显著提高整体的算法性能)

袋状决策树的核心思想是:通过减少模型的方差来提高模型的泛化能力

2.3 随机森林算法

即使有替换采样,生成多个随机训练集,但是通过这些随机训练集训练出的不同模型,有时依旧会存在不同模型在根节点上使用相同的特征进行分裂。因此可以在每个节点分割时,随机选择部分特征,只从这部分特征中选择信息增益最大的特征进行分裂。

步骤

  1. 对原始数据集进行有放回的随机抽样,生成多个随机训练集
  2. 在每个随机训练集上训练一棵决策树。在每个节点分割时,随机选择部分特征进行考虑。例如一共n个特征,随机选取k个特征(k<n,可如 k=\sqrt{n}),从这k个特征中选取信息增益最大的特征进行分裂。
  3. 对所有决策树的预测结果进行平均(回归任务)或投票(分类任务)以得到最终预测结果

随机选取部分特征训练决策树的优点:

  • 减少各决策树之间的相似性,形成的随机森林模型泛化能力更强
  • 提高计算效率:选择少部分特征可以减少计算复杂度,加快模型的训练速度
  • 减轻过拟合:较少的特征值帮助决策树更具随机性

随机森林算法优点:

  • 随机采样:算法对数据进行了大量的小修改,训练集的任何微小变化不会对算法整体有太大影响,提高模型稳定性。
  • 随机特征:不仅加快了训练速度,‌减少了计算开销,‌而且通过增加模型的随机性,‌使得模型对于未见过或未见特征的数据有更好的泛化能力

2.4 XGBoost算法

与 Bagging 不同,Boosting 是一种串行过程,每个基模型在训练时都会关注前一个模型中被错误分类的样本,即每次替换取样时,会有更高概率去选取之前被错误分类的数据,从而不断提高整体模型的准确性

XGBoost算法特点:

  • boosted树拥有很多开源实现
  • 非常快速有效
  • 很好的选择默认分裂标准和停止分裂标准
  • 内置正则化
  • 高竞争算法

XGBoost算法的代码实现:

分类算法:

回归算法:

三、决策树和神经网络对比

3.1 决策树和树集合特点

  • 很好地处理结构化数据(表格数据)
  • 不推荐处理费结构化数据,例如图片、音频和文本
  • 训练快速
  • 小决策树可能是人类可解释的,可以打印出决策树,理解它是如何做决定的

3.2 神经网络特点

  • 很好地处理所有类型数据,包括结构化数据和非结构化数据
  • 训练比决策树慢
  • 可以使用迁移学习
  • 如果正在构建一个由多个机器学习模型协同工作的系统,把多个神经网络串在p一起训练可能比训练多个决策树容易

学习来源:吴恩达机器学习,17.1-17.5节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通俗理解人工智能、机器学习和深度学习的关系

最近几年人工智能成为极其热门的概念和话题&#xff0c;可以说彻底出圈了。但人工智能的概念在1955年就提出来了&#xff0c;可以说非常古老。我在上小学的时候《科学》课本上就有人工智能的概念介绍&#xff0c;至今还有印象&#xff0c;但那些年AI正处于“寒冬”&#xff0c;…

CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标

注&#xff1a;本文为 “CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标” 几篇相关文章合辑。 文章中部分超链接、图片异常受引用之前的原文所限。 相机自动对焦原理 TriumphRay 于 2020-01-16 18:59:41 发布 凸透镜成像原理 这一部分大家中学应该就学过…

文件上传upload-labs-docker通关

&#xff08;图片加载不出&#xff0c;说明被和谐了&#xff09; 项目一&#xff1a; sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充&#xff1a;环境搭建在Linux虚拟机上的同时&#xff0c;以另一台Windows虚拟机进行测试最…

Linux的介绍及虚拟机centOS系统的下载与应用

1、什么是Linux Linux 是一种类 Unix 操作系统&#xff0c;它的内核&#xff08;Kernel&#xff09;由 Linus Torvalds 于 1991 年首次发布。作为一个开源、免费的操作系统&#xff0c;Linux 被广泛用于服务器、桌面计算机、嵌入式设备、移动设备等各种场景。 1、操作系统 操…

如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具

简介 Metabase 提供了一个简单易用的界面&#xff0c;让你能够轻松地对数据进行探索和分析。通过本文的指导&#xff0c;你将能够在 Ubuntu 22.04 系统上安装并配置 Metabase&#xff0c;并通过 Nginx 进行反向代理以提高安全性。本教程假设你已经拥有了一个非 root 用户&…

spring +fastjson 的 rce

前言 众所周知&#xff0c;spring 下是不可以上传 jsp 的木马来 rce 的&#xff0c;一般都是控制加载 class 或者 jar 包来 rce 的&#xff0c;我们的 fastjson 的高版本正好可以完成这些&#xff0c;这里来简单分析一手 环境搭建 <dependency><groupId>org.spr…

js 高亮文本中包含的关键词标红

在开发中&#xff0c;遇到需要将文本中包含的关键字高亮的情况&#xff0c;可以做以下处理。 <div class"title"v-html"highlightKeywords(item.title, state1.tags1.concat(state2.tags2).concat(state3.tags3))"> </div> ...... ...... con…

从迭代器到生成器:小内存也能处理大数据

有的对象可以用for循环比如字符串和列表,有的对象不可以比如整数 my_str 123 for s in my_str;print(s)my_lst [1,2,3] for i in my_lst:print(i)my_int 123 for n in my_int:print(n) # 报错python中能够使用for循环迭代的对象叫可迭代对象也叫iterables iterables包含__i…

第29天:安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作

时间轴&#xff1a; 演示案例&#xff1a; JS 原生开发-DOM 树-用户交互 DOM&#xff1a;文档操作对象 浏览器提供的一套专门用来操作网页代码内容的功能&#xff0c;实现自主或用户交互动作反馈 安全问题&#xff1a;本身的前端代码通过 DOM 技术实现代码的更新修改&#xff…

“蜀道山”高校联合公益赛 Web (部分)

文章目录 奶龙牌WAF海关警察训练平台恶意代码检测器 奶龙牌WAF <?php if ($_SERVER[REQUEST_METHOD] POST && isset($_FILES[upload_file])) {$file $_FILES[upload_file];if ($file[error] UPLOAD_ERR_OK) {$name isset($_GET[name]) ? $_GET[name] : basen…

docker-compose搭建xxl-job、mysql

docker-compose搭建xxl-job、mysql 1、搭建docker以及docker-compose2、下载xxl-job需要数据库脚本3、创建文件夹以及docker-compose文件4、坑来了5、正确配置6、验证-运行成功 1、搭建docker以及docker-compose 略 2、下载xxl-job需要数据库脚本 下载地址&#xff1a;https…

XML JSON

XML 与 JSON 结构 XML&#xff08;eXtensible Markup Language&#xff09; 1. 定义 XML 是一种标记语言&#xff0c;用于描述数据的结构和内容。主要用于数据存储与交换。 2. 特点 可扩展性&#xff1a;用户可以自定义标签。层次化结构&#xff1a;数据以树形结构组织&…

【Innodb阅读笔记】之 二进制文件应用,主从复制搭建

一、概述 MySQL的主从复制&#xff08;Master-Slave Replication&#xff09;是一种数据复制解决方案&#xff0c;将主数据库的DDL和DML操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而是的从…

如何制作项目网页

一、背景 许多论文里经常会有这样一句话Supplementary material can be found at https://hri-eu.github.io/Lami/&#xff0c;这个就是将论文中的内容或者补充视频放到一个网页上&#xff0c;以更好的展示他们的工作。因此&#xff0c;这里介绍下如何使用前人提供的模板制作我…

Spring:Spring事务管理代码案例讲解

Spring事务管理知识讲解请见&#xff1a;Spring事务知识点讲解 下面演示一个代码示例进行理解。 需求 两个账户相互转账&#xff0c;并记录日志&#xff0c;即使有转账失败也要记录 需求分析 这里主要是需要开启事务机制来控制转入和转出&#xff1a; 1&#xff0c;创建一…

了解网络威胁情报:全面概述

网络威胁情报 CTI 是指系统地收集和分析与威胁相关的数据&#xff0c;以提供可操作的见解&#xff0c;从而增强组织的网络安全防御和决策过程。 在数字威胁不断演变的时代&#xff0c;了解网络威胁情报对于组织来说至关重要。复杂网络攻击的兴起凸显了制定强有力的策略以保护敏…

Scrapy图解工作流程-cnblog

1.1 介绍部分&#xff1a; 文字提到常用的Web框架有Django和Flask&#xff0c;接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分&#xff1a; Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…

【ArcGISPro】Sentinel-2数据处理

错误 默认拉进去只组织了4个波段,但是实际有12个波段 解决方案 数据下载 Sentinel-2 数据下载-CSDN博客 数据处理 数据查看 创建镶嵌数据集 在数据管理工具箱中找到创建镶嵌数据集

Python数据分析(OpenCV)

第一步通过pip安装依赖包&#xff0c;执行一下命令 pip install opencv-python 如果是Anaconda请在工具中自行下载 下载好咋们就可以在环境中使用了。 人脸识别的特征数据可以到 github上面下载&#xff0c;直接搜索OpenCV 然后我们在源码中通过cv2的级联分类器引入人脸的特征…

最小生成树-Prim与Kruskal算法

文章目录 什么是最小生成树&#xff1f;Prim算法求最小生成树Python实现&#xff1a; Kruskal算法求最小生成树并查集 Python实现&#xff1a; Reference 什么是最小生成树&#xff1f; 在图论中&#xff0c;树是图的一种&#xff0c;无法构成闭合回路的节点-边连接组合称之为…