理解AdaBoost算法:简单流程概述(一)【流程理解、无数学推导】

什么是AdaBoost 算法?

AdaBoost(Adaptive Boosting)算法,全称为 自适应提升 ,是 一种在机器学习中用作集成方法的提升技术 。它之所以被称为自适应提升,因为每个实例的权重会重新分配,错误分类的实例分配较高的权重

它属于boosting算法家族,其核心思想是通过迭代训练多个弱分类器(weak classifiers),每个弱分类器针对之前迭代中被错误分类的样本进行重点训练,最终将这些弱分类器组合成一个强分类器。

AdaBoost 算法的优点和缺点

优点

  • 高精度: AdaBoost能够将多个弱分类器组合成一个强分类器,从而提高整体分类性能。
  • 抗过拟合: 由于算法重点关注错误分类的样本,因此具有一定的抗过拟合能力。
  • 适用性广泛: 可以应用于各种类型的问题,并且对于大型数据集或具有复杂模式的数据集也适用。
  • 多功能: 可以与不同类型的基础分类器一起使用,从而实现建模的灵活性。

缺点

  • 对噪声数据敏感: AdaBoost对噪声数据非常敏感,因为它会将更多的注意力放在错误分类的样本上。
  • 计算开销大: 在训练过程中,AdaBoost需要大量的计算资源,尤其是在处理大规模数据集时。
  • 超参数调优: 迭代次数和弱分类器的选择都是需要调优的超参数,这需要一定的经验和计算成本。
  • 对不平衡数据集表现不佳: 当某一类样本数量远远超过其他类别时,AdaBoost可能会出现性能下降的情况。

AdaBoost 算法的工作原理

  1. 初始化样本权重: 算法开始时,为每个样本赋予相同的权重,这些权重表示样本的重要性。初始情况下,所有样本对分类器的影响被认为是相同的。

  2. 迭代训练弱分类器: AdaBoost通过多次迭代训练弱分类器,每个迭代都会生成一个弱分类器,比如单层决策树(decision stump),该分类器略优于随机猜测。

  3. 加权训练: 在每次迭代中,弱分类器都会根据当前样本权重进行训练,以最小化错误分类。这意味着算法更加关注之前分类错误的样本。

  4. 更新样本权重: 在每次迭代后,算法会更新样本的权重,将错误分类的样本的权重增加,而正确分类的样本的权重减少。

  5. 集成弱分类器: 经过多次迭代后,AdaBoost将所有弱分类器组合成一个强分类器,通过加权多数投票的方式获得最终分类结果。

  6. 重复迭代: 重复上述步骤,直到达到预设的迭代次数或者达到停止条件。

大致过程如图所示:
在这里插入图片描述

图片来自于:AdaBoost Algorithm: Understand, Implement and Learn

这个算法的作用是构建一个模型,并给所有数据点赋予相等的权重。然后为错误分类的数据点赋予更高的权重。现在,所有具有较高权重的数据点在下一个模型中将被赋予更多的重要性。它会不断训练模型,直到获得较低的错误为止。

Titanic 数据集例子

假设我们在 Titanic 数据集上构建了一个决策树算法,并得到了 80% 的准确率。之后,应用了不同的算法,并检查准确率,结果为 KNN 算法的 75% 和线性回归的 70%。

在同一数据集上构建不同模型时,我们会观察到准确率的变化。然而,通过利用 AdaBoost 的力量,我们可以结合这些算法来增强最终的预测。通过平均不同模型的结果,AdaBoost 使我们能够有效地提高准确率并增强预测能力。

让我们现在一步步的理解这个处理的过程,来了解这个算法的工作原理。

步骤 1 :分配权重

Row No.GenderAgeIncomeIllnessSample Weights
1Male4140,000Yes1/5
2Male5430,000No1/5
3Female4225,000No1/5
4Female4060,000Yes1/5
5Male4650,000Yes1/5

我们数据集的实际表示如表所示。由于目标列是二元的(是否生病),所以这是一个分类问题。首先,这些数据点将被分配一些权重。最初,所有的权重将是相等的。
计算样本权重的公式是:
w ( x i , y i ) = 1 N , i = 1 , 2 , . . . . n w(x_i,y_i) = \frac{1}{N} , i = 1,2 , ....n w(xi,yi)=N1,i=1,2,....n
其中 N 是数据点的总数,这里因为我们有 5 个数据点,所以分配的样本权重将是 1/5。

步骤 2:分类样本

我们首先看看“性别”如何分类样本,然后再看看变量(年龄,收入)如何分类样本。

我们将为每个特征创建一个 决策树桩(decision stump) ,然后计算每个树的基尼指数(Gini Index)。基尼指数(Gini Index)最低的树将是我们的第一个树桩。

在我们的数据集中,假设性别具有最低的基尼指数,因此它将是我们的第一个树桩。

在步骤2中,为了更好地理解 AdaBoost 算法,我们需要了解一些基本概念:决策树桩和基尼指数。下面详细解释这些概念。

决策树桩(Decision Stump)是什么?

决策树桩是决策树的一种简单形式,它 只考虑一个特征 来进行决策。它是一个只有一层深度的决策树,意味着它只基于一个特征将数据划分成两类。

示例:

假设我们有一个数据集,包含两个特征“年龄”和“收入”,以及一个二元分类标签“是否购买”。一个决策树桩可能会基于“年龄”特征,将数据划分成“年龄<30”和“年龄≥30”两类。然后它会根据这两个类别分别预测是否购买。

由于决策树桩非常简单,只能基于一个特征进行划分,所以它被称为“弱学习器”。但在 AdaBoost 中,通过组合多个弱学习器,我们可以获得一个强大的分类器。

基尼指数(Gini Index)是什么?

基尼指数是用于评估决策树分割质量的一种指标。它衡量了数据集中类别的不纯度。基尼指数的计算公式为:

G i n i ( D ) = 1 − ∑ k = 1 n p k 2 Gini(D) = 1 - \sum_{k=1}^{n} p_k^2 Gini(D)=1k=1npk2

其中, p k p_k pk 是第 k k k 类在数据集 D D D 中的比例。

基尼指数的取值范围在 0 到 0.5 之间:

  • 当基尼指数为 0 时,数据集是纯净的,只有一个类别。
  • 当基尼指数接近 0.5 时,数据集的类别分布是最不均匀的。

“基尼指数最低的树将是我们的第一个树桩。”如何理解这句话?

在构建 AdaBoost 模型的过程中,我们需要选择一个最能区分数据的特征作为第一个决策树桩。这句话的意思是我们将选择基尼指数最低的决策树桩作为第一个弱学习器。基尼指数最低意味着这个决策树桩能够 最好地划分数据 ,从而减少数据集的不纯度。

理解这个过程:

  1. 计算每个特征的基尼指数:对于每个特征(例如“年龄”、“收入”等),计算它们基于不同划分点(例如“年龄<30”和“年龄≥30”)的基尼指数。
  2. 选择基尼指数最低的特征:比较所有特征的基尼指数,选择基尼指数最低的特征作为第一个决策树桩。
  3. 构建第一个决策树桩:基于选定的特征构建第一个决策树桩,这个树桩将用于第一次划分数据。

通过这种方法,我们保证第一个弱学习器能够尽可能有效地对数据进行分类,从而为后续的模型训练提供良好的基础。

步骤 3:计算影响

现在我们将计算这个分类器在分类数据点中的“影响量(Amount of Say)”或“重要性(Importance)”或“影响力(Influence)”,使用以下公式:

I n f l u e n c e = 1 2 l o g 1 − T o t a l E r r o r T o t a l E r r o r Influence = \frac{1}{2} log\frac{1-TotalError}{TotalError} Influence=21logTotalError1TotalError
总错误(TotalError)只是错误分类数据点的所有样本 权重的总和

在我们的数据集中,假设有一个错误输出,所以我们的总错误(TotalError)将是 1/5(只有对应错误样本点的权重),而 alpha(树桩的表现)将是:

P e r f o r m a n c e o f t h e s t u m p = 1 2 log ⁡ e ( 1 −  Total Error   Total Error  ) Performance of the stump =\frac{1}{2} \log _{e}\left(\frac{1-\text { Total Error }}{\text { Total Error }}\right) Performanceofthestump=21loge( Total Error 1 Total Error )

α = 1 2 log ⁡ e ( 1 − 1 5 1 5 ) α = 1 2 log ⁡ e ( 0.8 0.2 ) α = 1 2 log ⁡ e ( 4 ) = 1 2 ∗ ( 1.38 ) α = 0.69 \begin{aligned} \alpha & =\frac{1}{2} \log _{e}\left(\frac{1-\frac{1}{5}}{\frac{1}{5}}\right) \\ \alpha & =\frac{1}{2} \log _{e}\left(\frac{0.8}{0.2}\right) \\ \alpha & =\frac{1}{2} \log _{e}(4)=\frac{1}{2} *(1.38) \\ \alpha & =0.69 \end{aligned} αααα=21loge(51151)=21loge(0.20.8)=21loge(4)=21(1.38)=0.69

注意: 总错误(TotalError)将始终在 0 和 1 之间。

0 表示完美的树桩(没有一个错误),1 表示糟糕的树桩(全错)。

在这里插入图片描述
从上图可以看出,当没有错误分类时,我们的总错误为 0,因此“影响量(alpha)”将是一个大数值。

当分类器预测一半正确一半错误时,总错误为 0.5,分类器的重要性(影响量)将为 0。

如果所有样本都被错误分类,那么错误将非常高(接近 1),因此我们的 alpha 值将为负数。

步骤 4:计算总错误和表现

为什么要计算 AdaBoost 树桩的总错误(TE)和表现?更新权重是关键 。如果对后续模型保持相同的权重,输出将与初始模型相同。

错误的预测将被赋予更高的权重,而正确的预测权重将减少。当我们在更新权重后构建下一个模型时,具有更高权重的点将被赋予更多的优先权。

在找到分类器的重要性和总错误后,我们需要最终更新权重,为此我们使用以下公式:

N e w   s a m p l e   w e i g h t = o l d   w e i g h t ∗ e   ±   A m o u n t   o f   s a y ( α ) New\ sample\ weight = old\ weight * e^{\ \pm\ Amount\ of\ say(\alpha)} New sample weight=old weighte ± Amount of say(α)

当样本被正确分类时,影响量(alpha)将为负。

当样本被错误分类时,影响量(alpha)将为正。

这里有四个正确分类的样本和一个错误分类的样本。错误分类数据点的样本权重为 1/5,性别树桩的表现为 0.69(前面通过公式计算得到)。

正确分类样本的新权重是:

N e w   s a m p l e   w e i g h t = 1 5 ∗ e x p ( − 0.69 ) New \ sample\ weight = \frac{1}{5} * exp(-0.69) New sample weight=51exp(0.69)
N e w   s a m p l e   w e i g h t = 0.2 ∗ 0.502 = 0.1004 New \ sample\ weight = 0.2 * 0.502 = 0.1004 New sample weight=0.20.502=0.1004

对于错误分类的样本,更新后的权重为:
N e w   s a m p l e   w e i g h t = 1 5 ∗ e x p ( 0.69 ) New \ sample\ weight = \frac{1}{5} * exp(0.69) New sample weight=51exp(0.69)
N e w   s a m p l e   w e i g h t = 0.2 ∗ 1.994 = 0.3988 New \ sample\ weight = 0.2 * 1.994 = 0.3988 New sample weight=0.21.994=0.3988

注意(Note)
当我填入值时,请看 alpha 的符号,当数据点正确分类时,alpha 为负,这将样本权重从 0.2 减少到 0.1004。当有错误分类时,它为正,这将样本权重从 0.2 增加到 0.3988。

Row No.GenderAgeIncomeIllnessSample WeightsNew Sample Weights
1Male4140,000Yes1/50.1004
2Male5430,000No1/50.1004
3Female4225,000No1/50.1004
4Female4060,000Yes1/50.3988
5Male4650,000Yes1/50.1004

我们知道样本权重的总和必须等于 1,但这里如果我们将所有新样本权重相加,我们将得到 0.8004。为了使这个总和等于 1,我们将通过将所有权重除以更新权重的总和 0.8004 来 归一化 这些权重。所以,归一化后的样本权重是这样的,现在总和等于 1。

为了确保在重新采样时,权重作为概率来使用。
权重越大,数据点被选中的概率就越高。

Row No.GenderAgeIncomeIllnessSample WeightsNew Sample Weights
1Male4140,000Yes1/50.1004 / 0.8004 = 0.1254
2Male5430,000No1/50.1004 / 0.8004 = 0.1254
3Female4225,000No1/50.1004 / 0.8004 = 0.1254
4Female4060,000Yes1/50.3988 / 0.8004 = 0.4982
5Male4650,000Yes1/50.1004 / 0.8004 = 0.1254

步骤 5:减少错误

现在,我们需要创建一个新数据集来查看错误是否减少。为此,我们将删除“样本权重”(“sample weights”)和“新样本权重”(“new sample weights”)列,然后根据“新样本权重”(“new sample weights”)将我们的数据点分成几个桶(buckets)。

Row No.GenderAgeIncomeIllnessSample WeightsNew Sample WeightsBuckets
1Male4140,000Yes1/50.1004 / 0.8004 = 0.12540 to 0.1254
2Male5430,000No1/50.1004 / 0.8004 = 0.12540.1254 to 0.2508
3Female4225,000No1/50.1004 / 0.8004 = 0.12540.2508 to 0.3762
4Female4060,000Yes1/50.3988 / 0.8004 = 0.49820.3762 to 0.8744
5Male4650,000Yes1/50.1004 / 0.8004 = 0.12540.8744 to 0.9998

buckets是什么?用来干啥的?

buckets 用于重新采样数据点。为了重新采样数据,我们会生成随机数(范围在0到1之间),这些随机数落在哪个bucket中,就选择哪个bucket对应的数据点。

例如,如果随机数是 0.38,那么它落在 0.3762(0.1254 * 3 ) 到 0.8744(0.3762 + 0.4982-归一化得到的新权重) 之间,因此我们选择第4个样本。

bucket计算过程是怎样的?

  • 第一个数据点的新权重为0.1254,累积区间为0到0.1254(0+0.1254)。
  • 第二个数据点的新权重为0.1254,累积区间为0.1254到0.2508(0.1254+0.1254)。
  • 第三个数据点的新权重为0.1254,累积区间为0.2508到0.3762(0.2508+0.1254)。
  • 第四个数据点的新权重为0.4982,累积区间为0.3762到0.8744(0.3762+0.4982)。
  • 第五个数据点的新权重为0.1254,累积区间为0.8744到0.9998。

累积权重区间(buckets)是通过将每个数据点的权重依次累加而得出的。每个数据点的累积权重区间从前一个数据点的累积区间上限开始,加上当前数据点的权重。

步骤 6:新数据集

到这一步,我们基本上完成了。现在,算法会从 0 到 1 选择随机数。由于错误分类的记录具有较高的样本权重,选择这些记录的概率非常高。

假设算法选择的 5 个随机数是 [0.58842873 0.88056847 0.61431001 0.02307079 0.69973373]。

  • 0.58842873 处于 (0.3762 到 0.8744)——第四个样本
  • 0.88056847 处于(0.8744 到 0.9998)——第五个样本
  • 0.61431001 处于 (0.3762 到 0.8744)——第四个样本
  • 0.02307079 处于(0 到 0.1254)——第一个样本
  • 0.69973373 处于 (0.3762 到 0.8744)——第四个样本

现在我们将看到这些随机数落在桶中的位置,并据此创建我们的新数据集,如下所示。

Row No.GenderAgeIncomeIllnessSample WeightsNew Sample WeightsBuckets
4Female4060,000Yes1/50.49820.3762 to 0.8744
5Male4650,000Yes1/50.12540.8744 to 0.9998
4Female4060,000Yes1/50.49820.3762 to 0.8744
1Male4140,000Yes1/50.12540 to 0.1254
4Female4060,000Yes1/50.49820.3762 to 0.8744

这就是我们的新数据集,我们看到错误分类的数据点被选中了三次,因为它具有较高的权重。

步骤 7:重复前面的步骤

现在,这成为我们的新数据集,我们需要重复上述所有步骤,即:

  • 为所有数据点分配相等的权重。
  • 找到分类新样本集合最好的树桩,通过找到它们的基尼指数并选择基尼指数最低的一个。
  • 计算“影响量”和“总错误”以更新先前的样本权重。
  • 归一化新样本权重。
  • 迭代这些步骤,直到达到较低的训练误差。

假设就我们的数据集而言,我们已经以顺序方式构建了 3 棵决策树(DT1、DT2、DT3)。如果我们现在发送我们的测试数据,它将通过所有决策树,最后我们将看到哪个类占多数,并根据此对我们的测试数据集进行预测。

参考文章:

  • Understanding the AdaBoost Algorithm | by Data Science Wizards | Medium
  • AdaBoost Algorithm: Understand, Implement and Learn

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; #define max(a, b) ((a) < (b) ? (b) : (a))int maxProfit(int* prices, int pricesSize) {int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < pricesSize; i) {buy1 max(buy1, -prices[i]);sell…

解决:【无法安装“vue.volar“扩展,因为它与当前 VIsual Studio Code 版本不兼容(版本 1.80.0)】

目录 问题复现问题分析解决步骤1、进入VSCode插件市场&#xff0c;搜索Vue.volar2、点击搜索结果&#xff0c;进入详情页面3、下载.vsix文件完成后&#xff0c;用解压软件打开 4、复制package.json文件&#xff0c;修改vscode版本5、保存package.json文件&#xff0c;并更新.v…

【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络篇)

上两篇中介绍了如何配置NPS和在WLC上如何配置802.1X来实现验证域账号和动态分配VLAN&#xff0c;802.1x协议作为一种成熟的身份验证框架&#xff0c;不仅适用于无线网络&#xff0c;同样也适用于有线网络环境。这里我们将介绍如何在有线网络中部署802.1x认证&#xff0c;以验证…

Visual Studio的桌面快捷方式图标不显示

1.问题描述 以下以Visual Studio 2019举例&#xff0c; 正常图标&#xff1a; 但是当前Visual Studio的桌面快捷方式图标不显示了&#xff1f; 2.问题原因分析 Visual Studio 2019桌面快捷方式图标不显示可能由以下几个原因造成&#xff1a; 图标缓存问题&#xff1a;Windo…

Spring boot 集成thymeleaf

Spring boot 集成thymeleaf 背景 自己通过Spring boot集成通义千问实现了一个智能问答系统。Spring boot集成通义千问已经完成&#xff0c;现在需要做一个简单的页面展示&#xff0c;作为一个八年没有摸过前端的后端开发人员&#xff0c;不得不又拿起了html和thymeleaf。 Sp…

笔记-docker基于ubuntu22.04安装Jitsi Meet

背景 利用JitsiMeet打造一个可以在线会议的环境&#xff0c;根据躺的坑&#xff0c;做个记录 参考 JitsMeet部署安装说明 开始操作 环境 docker run -it --name ubuntu22.04 ubuntu:22.04 /bin/bash问题 1、安装 openjdk-11 apt install openjdk-11-jdk配置环境变量&…

探索 Ollama: 你的本地 AI 助手

本期推荐的开源项目是 Ollama&#xff0c;它是一款本地大模型运行工具&#xff0c;可以帮助用户轻松下载和运行各种大型语言模型&#xff08;LLM&#xff09;&#xff0c;而无需将数据上传到云端。以下是关于 Ollama 的介绍以及安装和使用教程&#xff1a; Ollama 是什么&#…

深入分析 Android Service (四)

文章目录 深入分析 Android Service (四)1. 使用 Messenger 进行通信2. 详细示例&#xff1a;使用 Messenger 进行通信2.1 创建 MessengerService2.2 在 Activity 中绑定服务并发送消息 3. 使用 AIDL 进行进程间通信3.1 定义 AIDL 接口3.2 实现 AIDL 接口3.3 在客户端绑定 AIDL…

ABAP 自动填充DATAX

问题 经常做BAPI开发的时候&#xff0c;SAP有个什么DATAX的表对应DATA&#xff0c;每次都要写一堆成对的DATA和DATAX&#xff0c;不然就会修改失败&#xff0c;每次复制粘贴也有点麻烦而且容易漏 代码实现 群里大姑刚好写了段代码用来匹配这个DATA和DATAX格式的&#xff0c…

k8s集群的存储卷、pvc和pv

目录 简介 简介 PV 全称叫做 Persistent Volume&#xff0c;持久化存储卷。它是用来描述或者说用来定义一个存储卷的&#xff0c;这个通常都是由运维工程师来定义。 PVC 的全称是 Persistent Volume Claim&#xff0c;是持久化存储的请求。它是用来描述希望使用什么样的或者说…

Spring Cloud | 客户端 “负载均衡器“ : Ribbon

目录: 1. 什么是 "负载均衡" ? ( 通过 "负载均衡" 可以将 "用户请求" "分发" 到 不同的服务器&#xff0c;以此来提高 "性能" 和 "可靠性" )2. "负载均衡" 的 分类 &#xff1f;3. 认识 Ribbon :3.1 R…

[香橙派 AIpro] 性能强劲的昇腾AI开发板,应用广泛,性能出众,遥遥领先!

[香橙派 AIpro] 性能强劲的昇腾AI开发板&#xff0c;应用广泛&#xff0c;性能出众&#xff0c;遥遥领先&#xff01; 开发板简介 香橙派AIpro开发板凭借华为昇腾AI芯片的强大算力、丰富的接口、完善的开发工具等优势&#xff0c;在AI开发板市场具有很高的竞争力&#xff0c;可…

基于模板匹配的信用卡数字识别

文章目录 一、项目介绍二、模板匹配的原理三、模板匹配的步骤模板图片处理信用卡图片处理进行模板匹配 一、项目介绍 模板识别&#xff08;Template Matching&#xff09;是一种基于图像匹配的技术&#xff0c;用于在较大图像中识别和定位小图像&#xff08;模板&#xff09;。…

如何在 llama.cpp 服务器中实现用户登录功能的优化方案?(语言-c++)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

揭秘APP广告变现项目

在当今移动应用市场&#xff0c;广告变现已经成为开发者盈利策略的重要组成部分。 通过在应用程序中展示多种类型的广告&#xff0c;如插页式广告、横幅广告和激励视频广告&#xff0c;开发者能够获得经济效益。 实现这一目标的核心在于平衡收入与用户体验&#xff0c;避免过…

前端树形结构组件的设计与实现:以企查查、天眼查股权结构为例

摘要 随着信息化时代的不断发展&#xff0c;数据可视化在各行各业的应用越来越广泛。特别是在商业信息查询领域&#xff0c;如企查查、天眼查等平台&#xff0c;通过直观的数据展示方式&#xff0c;帮助用户快速理解复杂的商业关系。本文将以一个前端tree树形结构模版组件为例…

C语言序列化和反序列化--TPL中的API(三)

tpl_map 创建tpl的唯一方法是调用tpl_map()。第一个参数是格式字符串。后面是格式字符串中特定字符所需的参数列表。例如, tpl_node *tn; int i; tn tpl_map( "A(i)", &i );该函数在格式字符串中的项和给定地址的C程序变量之间创建映射。稍后&#xff0c;C变量…

Java-集合基础

集合 一、含义 集合是Java API所提供的一系列类&#xff0c;可以用于动态存放多个对象 (集合只能存对象)集合与数组的不同在于&#xff0c;集合是大小可变的序列&#xff0c;而且元素类型可以不受限定&#xff0c;只要是引用类型。(集合中不能放基本数据类型&#xff0c;但可以…

element-plus关于表单数据自定义参数校验

element-plus关于表单数据自定义参数校验 核心点&#xff1a; 代码&#xff1a; <el-form-item :prop"tableData[ scope.$index ].score":rules"[{ required: true, message: 得分不能为空, trigger: blur },{ validator: (rule: any, value: any, ca…

服务器主板电池

一、什么是服务器纽扣电池&#xff1f; 服务器纽扣电池&#xff0c;也叫CMOS电池&#xff0c;是一种非常小型的电池&#xff0c;通常与服务器主板上的CMOS芯片相结合&#xff0c;用于储存BIOS设置、时钟和其他关键系统信息。这种电池的体积通常比一枚硬币还小&#xff0c;而且…