精选博客系列|将基于决策树的Ensemble方法用于边缘计算

news/2024/5/19 13:19:30 标签: 决策树, 边缘计算, 机器学习

在即将到来的边缘计算时代,越来越需要边缘设备执行本地快速训练和分类的能力。事实上,无论是手机上的健康应用程序、冰箱上的传感器还是扫地机器人上的摄像头,由于许多原因,例如需要快速响应时间、增强安全性、数据隐私,甚至考虑到盈利能力,通常都需要进行本地计算。

无论是以什么方式进行机器学习,对于此类设备来说,具有异构性、有限的连接和有限的硬件资源是一个持续存在的、我们必须解决的挑战。事实上,人们经常面临着矛盾的需求,边缘设备必须在本地执行大量的计算、存储和通信,同时还要遵守如有限的内存、网络连接和计算的资源限制。这通常是由于时间或功率限制以及增加的数据和可用信息量。

这里,我们重点讨论利用基于决策树的 Ensemble 方法进行计算和内存高效的本地(即设备上)训练和分类,这是处理表格数据的实际标准。

基于决策树的 Ensemble 方法

事实上,基于树的 Ensemble 方法,例如随机森林(RF)和 XGBoost,由于其健壮性、易用性和泛化性,经常用于对表格数据进行分类。反过来,分类任务通常用作许多应用域中的子例程,例如金融、欺诈检测、医疗保健和入侵检测。因此,这种方法的效率和精度与效用之间的权衡至关重要。

让我们特别关注随机森林和 XGBoost,并了解它们的优势:

随机森林可以说是最流行的 bagging 方法,它使用数据的随机子样本来生长每个决策树,从而生成不同且弱相关的树。然后,使用多数票确定分类。随机森林有几个优点,包括健壮性、快速训练、处理不平衡数据集的能力、嵌入式特征选择、处理缺失的、分类的和连续的特征,以及高级人工分析或法规要求的、任何时候的可解释性。

XGBoost 是一种著名且流行的 boosting 算法,它在每次迭代时都会生成一个小的决策树(例如,具有 8–32 个终端节点)。每个这样的树都是为了减少以前树的错误分类。XGBoost 分享了随机森林的大部分优点,并且由于其可控偏差,通常可以实现更高的精度。

然而,这些方法也带来了一些与资源相关的缺点:

随机森林往往受内存限制,分类速度较慢。此外,由于随机森林占用大量内存,因此通常无法部署在内存有限的边缘设备上,而这些设备通常需要执行分类任务。

XGBoost 模型通常比随机森林需要更少的内存,但它们是计算密集型的,导致训练速度较慢。

我们解决了随机森林和 XGBoost 的资源消耗缺点。特别的是,我们引入了一种新的混合方法,该方法继承了 bagging 和 boosting 方法的良好特性,具有可比较的机器学习性能,同时大大提高了资源效率。

数据集中的冗余

众所周知,机器学习模型的资源消耗与用于训练的数据集的大小高度相关。因此,减少数据集大小是可取的。因此,我们想提出以下问题:

数据集中的所有数据实例对于基于树的 ensemble 模型的训练是否同样重要?

如果没有,我们应该如何在训练期间区分数据实例以节省资源?这将如何影响分类?

事实上,数据集通常包含许多简单的(例如 90%)数据实例,因为它们很容易识别,因此很容易分类;以及罕见或更独特的数据实例,因此更难分类。

直观地说,如果在培训之前可以进行这种区分,那么应该能够利用这些知识来节省资源,而不会对准确性产生重大影响。其中一个想法是在培训期间使用较少的 “简单” 数据实例。面临的挑战是如何制定这样的计划,并以有效的方式这样做。

RADE–资源高效的异常检测模型

数据集只有两个类,其中大多数实例是正常的或良性的(例如 99%)。

RADE 以以下方式利用上述观察结果:它首先使用整个数据集构建一个小(粗粒度)模型。然后,它使用该模型对用于训练的所有数据实例进行分类。正确分类且具有高度可信度的实例被标记为简单实例(通常是大多数正常实例),而所有其他实例都被标记为困难实例(通常为大多数异常实例)。

如图所示,RADE 引入了一种高级体系结构,只要粗粒度模型及其分类提供了有意义的分类置信水平,就可以与不同的分类模型一起使用。

直观地说,由于粗粒度模型足以正确分类简单的查询,所以我们只剩下困难查询。利用这些,我们构建了两个专家(细粒度)模型,用于处理与粗粒度模型的分类结果有关的两种不同情况:细粒度模型 1 负责(低置信度)正常分类和细粒度模型 2 用于(低置信度)异常分类。这些模型可能具有比粗粒度模型更大的内存占用需求,但明显低于基于整体的树模型。

训练效率

如前所述,RADE 分两个阶段进行训练。首先,使用整个数据集训练粗粒度模型。由于我们使用的是一个小模型,所以这个训练阶段相对较快。然后,我们使用粗粒度模型对整个训练数据集进行分类,并根据所得到的分类和置信度,生成两个数据子集用于训练细粒度模型。由于我们只使用训练数据的子集(例如 10%)训练每个细粒度模型,所以这个训练阶段也相对较快。

分类效率

RADE 的分类也有两个阶段。首先,根据粗粒度模型对实例进行分类。如果得到的分类置信度较高(例如 0.9),则完成分类。否则,根据粗粒度模型分类结果,由其中一个细粒度模型转发查询以进行重新分类。这意味着 RADE 的分类时间等于仅由粗粒度模型提供服务的分类,以及由粗粒度和细粒度模型提供的分类时间的加权平均值。直觉上,因为目的是为了只通过粗粒度模型(例如 90%)服务大多数查询,平均分类时间预计将比标准的整体模型显著改进。

Duet–资源高效的多类分类模型

RADE 是为二进制分类设计的,因此使用两个细粒度模型。就多类分类用例而言,扩展 RADE 的体系结构并不是一个可扩展的解决方案,因为它需要 K 类的 K 个细粒度模型,因此需要一个新的体系结构。

为此,我们开发了 Duet。Duet 遵循 RADE 的原则,即使用粗粒度模型,该模型在整个数据集上经过训练,并对简单的查询进行分类。然而,与 RADE 不同,Duet 只使用单个细粒度分类器,该分类器在训练数据集的子集上进行训练,并对困难(低置信度)查询进行分类。

Duet 的高级体系结构如图所示。从本质上讲,它使用了两个分类器:一个小型 bagging 分类器(随机森林),提供有意义的分类置信度、受控方差和内存限制,另一个 boosting 分类器(XGBoost),提供受控偏差和计算限制。总的来说,与单例分类器相比,Duet 引入了一种不同且通常更好的系统 / 机器学习性能的权衡。

Duet 的主要问题是如何确定 boosting 分类器的训练数据子集。

在这种情况下,使用 RADE 中的置信度指标是不够的,因为我们有一个多维问题。因此,我们使用类概率分布向量(通过粗粒度模型)来确定实例对训练过程的重要性。

对于六个类别的分类任务,考虑两个具有相同(第一)分类置信度的分类结果。第一个在两个类别上的概率(几乎)相等(例如 [0.5,0.5,0,0,0,0]),第二个在正确类别上概率较高,而在所有剩余类别上概率低得多(例如 [0.5,0.1,0.1,0.1,0.1,0.1])。显然,第一个查询比较困难,可能更有利于增强分类器的训练。

为了捕获此属性,我们定义了一个新的度量标准–可预测性这是由欧几里得距离函数给出的,该函数测量得到的类概率分布向量相对于实例的真实标签与完美分布向量之间的距离。完美分布向量在正确标签(即类)中的概率应为 1。

请注意,可预测性是训练过的 bagging 分类器和训练数据集的具体度量,因此是 Duet 训练过程中的一个集成步骤。此外,使用可预测性不同于仅依赖于数据集属性的采样方法(例如,分层采样,它保留了每个类的实例百分比)。

进一步的潜力

上述设计原则可能适用于其他机器学习领域。虽然 Duet 主要使用可预测性度量来降低训练和分类过程的计算成本,但可以使用可预测度度量来减少训练数据集的大小,从而降低存储和通信成本。

此外,RADE 和 Duet 还可能适用于分布式学习。例如,参与方可以联合训练一个粗粒度模型,然后使用该模型从本地数据集中选择子集,最后使用这些子集训练全局细粒度模型。

这里的挑战是确定参与方选择其子集的标准。例如,一种高级方法是使用安全计算来收集有关全局训练数据的一些统计信息。这样的统计数据可能会使每个参与者选择更好的子集,总的来说,对于细粒度模型的分布式训练,这样有更高的训练价值。

内容来源|公众号:VMware 中国研发中心


http://www.niftyadmin.cn/n/113503.html

相关文章

axios的二次封装

方式一:将axios单独分装到某个配置文件中import axios from axios; const axiosApi axios.create({baseURL:http://127.0.0.1:3000,timeout:3000 }) export default axiosApi在组件中使用:import $http from axios配置文件的地址 $http.get(/student/test).then(re…

【数据库专题】数据库Mongodb之深入认知云计算三种服务方式、mongodb特点、mongodb重要进程 mongod、mongo、其他进程区别

文章目录一、什么是云计算1. IaaS:基础设施即服务2. SaaS:软件即服务3. PaaS:平台即服务二、大数据与云计算关系三、什么是MongoDB四、大数据与MongoDB五、MongoDB特点六、安装MongoDB七、重要进程介绍7.1 mongod进程7.2 mongo进程7.3 其他进程7.3.1 mongodump重建数据库7.3.2 …

Mysql的一些提权方式(mysql提权、UDF)

目录 bash命令提权 必要条件 实验 UDF提权 什么是UDF 必要条件 实验 手动测试

软考论文-范围管理(1)

软考论文-范围管理 声明:文章参考的信管网,如有侵权,本人将立即修改和删除。 1.范围管理介绍 1. 主要需要写的方面就是:范围规划,范围定义,范围确认,分解wbs,范围管理 2.如何写&a…

Linux 系统 /var/log/journal/ 垃圾日志清理

CentOS系统中有两个日志服务,分别是传统的 rsyslog 和 systemd-journal systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。systemd…

Linux: 中断只被GIC转发到CPU0问题分析

文章目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI 中断CPU亲和性4.2.2 GIC初始化:缺省的CPU亲和性4.2.2.1 boot CPU亲和性初始化流程4.2.2.1 其它非 boot CPU亲和性初始化流程5.…

guacamole集成到自己的项目中

将 guacamole嵌入到自己的应用当中 这里写目录标题 部署guacamole部署docker部署mysql服务部署guard部署guacamole增加连接查询identifier删除连接前台怎么嵌入呢部署guacamole 选用了docker部署,需要部署三个应用,mysql服务, guacd服务 guacamole服务。以下环境为centos7…

python实战应用讲解-【numpy专题篇】字符串函数(附python示例代码)

目录 前言 numpy.char.add() numpy.char.multiply() numpy.char.center() numpy.char.capitalize() numpy.char.title() numpy.char.lower() numpy.char.upper() numpy.char.split()</