机器学习(二十五):决策树算法以及决策树和神经网络的对比
一、决策树集合
单一决策树会对训练数据的变化很敏感。例子:输入十个数据,判断是否是猫。只替换其中一个数据,信息增益最高的分裂特征就发生了改变,决策树就发生了变化。
使用决策树集合可以使算法更加健壮。例子:使用三棵决策树,输入新数据预测是否是猫,然后根据三颗决策树的结果投票决定预测结果。
二、决策树算法
2.1 替换采样
替换采样:从训练数据(数量为M)中随机抽取一个记录下来,把这个数据再放回去,再进行随机抽取,直到采样数量达到M
例子:假设袋子里有四颗不同颜色的积木,替换采样方法:
- 从袋子里随机取出一个积木(绿色)
- 然后把该积木放回袋子里,再次随机取出一个积木(黄色)
- 然后积木放回袋子里,再次随机取出一个积木(蓝色)
- 然后积木放回袋子里,再次随机取出一个积木(蓝色),此时采样数量一共是4,停止采样。
2.2 袋状决策树
步骤:
- 通过对训练集进行有放回的替换采样,生成多个随机训练集。例如训练集一共有m个数据,通过替换采样抽取m个数据组成一个随机训练集,重复B次,生成B个随机训练集。
- 在每个随机训练集上训练一颗决策树,一共训练出B棵决策树。
- 最终的预测结果通过这B棵决策树的预测结果进行平均或投票来确定
(B一般取一百左右,B如果太大了,就会导致显著减缓计算减缓,但不能显著提高整体的算法性能)
袋状决策树的核心思想是:通过减少模型的方差来提高模型的泛化能力
2.3 随机森林算法
即使有替换采样,生成多个随机训练集,但是通过这些随机训练集训练出的不同模型,有时依旧会存在不同模型在根节点上使用相同的特征进行分裂。因此可以在每个节点分割时,随机选择部分特征,只从这部分特征中选择信息增益最大的特征进行分裂。
步骤
- 对原始数据集进行有放回的随机抽样,生成多个随机训练集
- 在每个随机训练集上训练一棵决策树。在每个节点分割时,随机选择部分特征进行考虑。例如一共n个特征,随机选取k个特征(k<n,可如 ),从这k个特征中选取信息增益最大的特征进行分裂。
- 对所有决策树的预测结果进行平均(回归任务)或投票(分类任务)以得到最终预测结果
随机选取部分特征训练决策树的优点:
- 减少各决策树之间的相似性,形成的随机森林模型泛化能力更强
- 提高计算效率:选择少部分特征可以减少计算复杂度,加快模型的训练速度
- 减轻过拟合:较少的特征值帮助决策树更具随机性
随机森林算法优点:
- 随机采样:算法对数据进行了大量的小修改,训练集的任何微小变化不会对算法整体有太大影响,提高模型稳定性。
- 随机特征:不仅加快了训练速度,减少了计算开销,而且通过增加模型的随机性,使得模型对于未见过或未见特征的数据有更好的泛化能力
2.4 XGBoost算法
与 Bagging 不同,Boosting 是一种串行过程,每个基模型在训练时都会关注前一个模型中被错误分类的样本,即每次替换取样时,会有更高概率去选取之前被错误分类的数据,从而不断提高整体模型的准确性
XGBoost算法特点:
- boosted树拥有很多开源实现
- 非常快速有效
- 很好的选择默认分裂标准和停止分裂标准
- 内置正则化
- 高竞争算法
XGBoost算法的代码实现:
分类算法:
回归算法:
三、决策树和神经网络对比
3.1 决策树和树集合特点
- 很好地处理结构化数据(表格数据)
- 不推荐处理费结构化数据,例如图片、音频和文本
- 训练快速
- 小决策树可能是人类可解释的,可以打印出决策树,理解它是如何做决定的
3.2 神经网络特点
- 很好地处理所有类型数据,包括结构化数据和非结构化数据
- 训练比决策树慢
- 可以使用迁移学习
- 如果正在构建一个由多个机器学习模型协同工作的系统,把多个神经网络串在p一起训练可能比训练多个决策树容易
学习来源:吴恩达机器学习,17.1-17.5节
相关文章:
机器学习(二十五):决策树算法以及决策树和神经网络的对比
一、决策树集合 单一决策树会对训练数据的变化很敏感。例子:输入十个数据,判断是否是猫。只替换其中一个数据,信息增益最高的分裂特征就发生了改变,决策树就发生了变化。 使用决策树集合可以使算法更加健壮。例子:使用…...
新版布谷直播软件源码开发搭建功能更新明细
即将步入2025年也就是山东布谷科技专注直播系统开发,直播软件源码出售开发搭建等业务第9年,山东布谷科技不断更新直播软件功能,以适应当前新市场环境下的新要求。山东布谷科技始终秉承初心,做一款符合广大客户需求的直播系统软件。支持广大客户提交更多个…...
vue3 reactive响应式实现源码
Vue 3 的 reactive 是基于 JavaScript 的 Proxy 实现的,因此它通过代理机制来拦截对象的操作,从而实现响应式数据的追踪。下面是 Vue 3 的 reactive 源码简化版。 Vue 3 reactive 源码简化版 首先,我们需要了解 reactive 是如何工作的&…...
git的使用(简洁版)
什么是 Git? Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者…...
使用命令行创建 Maven 项目
本指南将引导您通过命令行创建一个简单的 Maven 项目。本教程假设您已经在您的机器上安装了 Maven 和 JDK 21。 第一步:验证 Maven 和 Java 安装 在开始之前,我们需要验证 Maven 和 Java 是否已正确安装在您的系统上。 验证 Maven 安装 打开命令行终…...
JVM_栈详解一
1、栈的存储单位 **栈中存储什么?**, 每个线程都有自己的栈,栈中的数据都是以栈帧(Stack Frame)的格式存在。在这个线程上正在执行的每个方法都各自对应一个栈帧(Stack Frame)。 栈帧是一个内存…...
Linux 金仓数据库安装和使用
文章目录 Linux 金仓数据库安装和简单使用 一、下载二、安装三、启动法1. 通用启动方式法2. 系统服务启动方式 四、测试五、DB管理工具1. 启动DB管理工具2. DB管理工具的常用功能 六、卸载 Linux 金仓数据库安装和简单使用 一、下载 打开官网 https://www.kingbase.com.cn/xzz…...
STM32笔记(串口IAP升级)
一、IAP简介 IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 通常实…...
C++网络编程:select IO多路复用及TCP服务器开发
C网络编程:使用select实现IO多路复用 一、什么是 IO 多路复用?二、IO多路复用器 select三、相关接口3.1、fd_set 结构体3.2、宏和函数 四、select 实现 TCP 服务器五、总结 一、什么是 IO 多路复用? 在网络编程中,最容易想到的并…...
部署 L2JMobius 天堂2芙蕾雅版本
首先下载所需要的服务器端 “L2J_Mobius.zip” 和芙蕾雅客户端(三个压缩文件), 我的网盘下载:https://pan.baidu.com/s/1XdlcCFPvXnzfwFoVK7Sn7Q?pwdavd4 所有文件都在“芙蕾雅”目录下,也可以加入企鹅交流裙 87470…...
C#开发合集
用C#轻松搞定m3u8视频下载与合并 嘿,程序员们!今天咱们来聊聊如何用C#写个小程序,轻松下载和合并m3u8视频文件。没错,就是那种分段的流媒体视频。准备好了吗?让我们开始吧! 准备工作 在动手之前…...
鸿蒙面试 --- 性能优化
性能优化可以从三个方面入手 感知流畅、渲染性能、运行性能 感知流畅 在应用开发中,动画可以为用户界面增添生动、流畅的交互效果,提升用户对应用的好感度。然而,滥用动画也会导致应用性能下降,消耗过多的系统资源,…...
React的基础知识:Context
1. Context 在 React 中,Context 提供了一种通过组件树传递数据的方式,无需手动在每个层级传递 props。这在处理一些全局应用状态时非常有用,比如用户认证、主题、语言偏好等。 如何使用 Context 创建 Context:首先,…...
微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)
通过bdf号查看 -s (bus) lspci -s 03:00.0通过vendor id或者device id等设备查看 -d (device) lspci -d 15b3: #这里是vendor号,所以在前面 lspci -d :1021 #这里是设备号,所以要:在前vendorid和deviceid…...
【Kubernetes 集群核心概念:Pod】pod生命周期介绍【五】
5.1 Pod生命周期 Pod的生命周期指的是从Pod创建到终止的整个过程。它分为以下两种常见情况: 长期运行Pod: 例如运行HTTP服务的Pod,它在正常情况下会一直运行,但可以手动删除或终止。短期运行Pod: 例如执行计算任务的…...
c++的虚继承说明、案例、代码
虚继承的基本概念 在 C 中,虚继承主要用于解决多继承时可能出现的菱形继承问题。菱形继承是指一个类有两个(或更多)子类,而这两个子类又同时继承自一个共同的基类,当这些子类又被另一个类继承时,就形成了菱…...
小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你
说在前面 之前我们体验过妙享中心,里面就有互联互通的全部能力,现在有了小米电脑管家,老款的笔记本竟然用不了,也可以理解,毕竟老款笔记本做系统研发的时候没有预留适配的文件补丁,至于其他品牌的winPC小米…...
介绍SSD硬盘
SSD硬盘(固态硬盘,Solid State Drive)是一种利用闪存技术存储数据的存储设备,与传统的机械硬盘(HDD)不同,SSD没有任何活动部件,因此其性能和耐用性较为优越。以下是SSD硬盘的一些主要…...
CMAKE常用命令详解
NDK List基本用法 Get–获取列表中指定索引的元素 list(Get list_name index output_var)解释 list_name: 要操作集合的名称index: 要取得的元素下标output_var: 保存从集合中取得元素的结果 栗子 list(GET mylist 0 first_element) # 获取第一个元素APPEND–在列表末尾…...
Vue3的通灵之术Teleport
前言 近期Vue3更新了一些新的内容,我都还没有一个一个仔细去看,但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。 官方对 Teleport 的解释是:<Teleport> 是一个内置组件,它可以将一个组件内部的一部分模板“传…...
ue5第三人称闯关游戏学习(一)
视频资料38 - Compilers and Editors_哔哩哔哩_bilibili 上一个第一人称射击项目做完 接下来要更深入学习。 引入资产与C来创建第三人称闯关游戏 这次要引入的资产有两个分别是 Unreal Learning Kit:Game和stylized character kit: casual 01 不过有个比较麻…...
IIC 随机写+多次写 可以控制写几次
verilog module icc_tx#(parameter SIZE 2 , //用来控制写多少次 比如地址是0000 一个地址只能存放8bit数据 超出指针就会到下一个地址0001parameter CLK_DIV 50_000_000 ,parameter SPEED 100_000 ,parameter LED 50 )( input wire c…...
controller中的参数注解@Param @RequestParam和@RequestBody的不同
现在controller中有个方法:(LoginUserRequest是一个用户类对象) PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…...
手搓人工智能-最优化算法(1)最速梯度下降法,及推导过程
“Men pass away, but their deeds abide.” 人终有一死,但是他们的业绩将永存。 ——奥古斯坦-路易柯西 目录 前言 简单函数求极值 复杂函数梯度法求极值 泰勒展开 梯度,Nabla算子 Cauchy-Schwarz不等式 梯度下降算法 算法流程 梯度下降法…...
多目标优化算法——多目标粒子群优化算法(MOPSO)
Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法) 一、摘要: 本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…...
Swift——自动引用计数ARC
ARC ARC是swift使用的一种管理应用程序内存的机制,对于C语言我们知道,当我们申请一块空间,通常需要手动释放,不然会造成空间浪费,而有了ARC机制,你无需考虑内存的管理,因为ARC会在类的实例不再…...
【Quarkus】基于CDI和拦截器实现AOP功能(进阶版)
Quarkus 基于CDI和拦截器实现AOP功能(进阶版) 拦截器的属性成员拦截器的重复使用基于属性成员和重复使用的拦截器的发消息案例 本节来了解一下拦截器高级特性(拦截器的重复使用和属性成员),官网说明:https:…...
【踩坑日记】【教程】如何在ubuntu服务器上配置公钥登录以及bug解决
前言 在日常开发和运维中,为了提高服务器登录的安全性,我们通常会选择使用 SSH 密钥认证 来替代传统的密码登录。然而,在配置 SSH 公钥登录的过程中,可能会遇到各种坑和 Bug。本文将从零开始,手把手教你如何在 Ubuntu…...
insmod一个ko提供基础函数供后insmod的ko使用的方法
一、背景 在内核模块开发时,多个不同的内核模块,有时候可能需要都共用一些公共的函数,比如申请一些平台性的公共资源。但是,这些公共的函数又不方便去加入到内核镜像里,这时候就需要把这些各个内核模块需要用到的一些…...
七、传统循环神经网络(RNN)
传统循环神经网络 RNN 前言一、RNN 是什么?1.1 RNN 的结构1.2 结构举例 二、RNN 模型的分类2.1 按照 输入跟输出 的结构分类2.2 按照 内部结构 分类 三、传统 RNN 模型3.1 RNN内部结构图3.2 内部计算公式3.3 其中 tanh 激活函数的作用3.4 传统RNN优缺点 四、代码演示…...
做中国旅游网站的目的与必要性/网络营销广告策划
我们在做Android项目开发过程中,经常会遇到这种情况,我们需要引入的aar、jar等所依赖的第三方依赖库与我们本地的依赖库的版本号不一致,造成我们项目编译失败,遇到这种情况时,我们只需要在module下的build.gradle文件中…...
b2b是什么意思的/seo管理平台
JavaScript 框架 xmlplus 1.5.12 发布了。xmlplus 是一个设计非常独特 JavaScript 框架,用于快速开发前后端项目。 这个版本主要添加了一个全局接口 create。该函数是一个轻量的用于创建组件对象的函数,它只是简单地调用组件的函数项来返回所需的对象。 …...
郑州网站托管公司/网站设计的流程
http://www.liangjing.org/qiyejianzhan/Ch/Net_Index.html http://www.phpweb.net/index.php转载于:https://www.cnblogs.com/liulf/archive/2011/04/01/2002745.html...
长治网站建设电话/软文广告范文
地下城礼包不断,才在商城上架3款(777、2999、11800)礼包后,体验服8.08又有新礼包“空域之怒海霸主”(19900),上一篇已介绍过,主要是2个新道具的出现,宠物BUFF技能宝珠和装扮跨界石,而一次更新出1个礼包太少…...
wordpress会员制订阅/广告网站策划方案
三种事件绑定方法总结1、多种事件绑定方式汇总2、源代码1、多种事件绑定方式汇总 组件对象的绑定 通过 command 属性绑定(适合简单不需获取 event 对象)Button(window, text "login", command login)通过 bind 方法绑定(适合需…...
网站建设 网站/厦门seo屈兴东
[TOC]**会员相关函数全部位于 framework/model/mc.mod.php 文件内。****注意:该文件内所有函数使用前必须加载文件: load()→model(mc);**## mc_check 检测会员信息是否存在(邮箱和手机号)> 如果会员不存在,返回 true,否则返回注册信息。~…...