当前位置: 首页 > news >正文

机器学习Adaboost算法----SAMME算法和SAMME.R算法

Adaboost算法----SAMME算法

自适应提升机(Adaptive Boosting,简称 AdaBoost)是一种集成学习算法,通过组合多个弱分类器(弱分类器有多种选择,如决策树)来构建一个强分类器。AdaBoost在Python环境SKlearn里主要包含了SAMME算法和SAMME.R算法。

AdaBoost SAMME算法的核心思想是逐步调整训练数据的权重,使得模型能够专注于那些难以分类的样本。基于超声雷达回波数据对目标障碍物进行高低分类属于二分类机器学习任务,使用AdaBoost算法比较合适。

在使用AdaBoost对目标数据集进行训练时,首先会对所有目标样本进行权重初始化,假设当前目标样本数量为N个,则单个样本的初始权重为:

                                                 D_1(i) = \frac{1}{N}, \quad i = 1, 2, \dots, N

在第一次迭代时,第一个弱分类器会根据当前的所有训练样本进行预测,并筛选出所有被错误分类的样本,然后用错误分类的样本的权重计算当前弱分类器的加权误差:

                                      \text{Error}_t = \sum_{i=1}^N D_t(i) \cdot \mathbb{I}(h_t(x_i) \neq y_i)

并用加权误差计算当前弱分类器的最终权重:

                                               \alpha_t = \frac{1}{2} \ln \left( \frac{1 - \text{Error}_t}{\text{Error}_t} \right)

$$\alpha_t $$即为当前弱分类器的最终权重,并用于更新样本权重作为下一个弱分类器的样本权重,以此进行迭代计算:

                                      D_{t+1}(i) = \frac{D_t(i) \cdot \exp(-\alpha_t \cdot y_i \cdot h_t(x_i))}{Z_t}

使用adaboost算法进行二分类任务模型训练时,算法会把所有样本标签转为 1 或 -1 用于训练。 模型训练好后用于对目标cluster进行高低分类预测时,每一个弱分类器都会对目标障碍物进行预测并输出预测结果(预测结果为 1或-1),最后对所有弱分类器的输出结果进行相加,根据结果的正负作为最终的预测结果(大于0为正样本,小于0为负样本)。为避免出现所有弱分类器和为0的情况(一般不会出现),弱分类器个数可设为奇数。

Adaboost算法----SAMME.R算法

在AdaBoost中使用SAMME.R算法(Stagewise Additive Modeling using a Multi-class Exponential loss function with Real-valued predictions)进行二分类时,基分类器(决策树)的行为与SAMME有本质区别:

1. ​​SAMME.R的核心要求​

  • SAMME.R要求基分类器能够输出​​类别概率​​(即软分类),而非离散的类别标签。
  • 算法利用这些概率计算加权的类别概率估计,并直接更新加法模型的输出(无需显式的基分类器权重αt​)。

2. ​​决策树叶节点的输出​

  • ​在训练时​​:决策树会按照标准方法构建(例如使用加权基尼指数或加权熵选择分裂),但在叶节点处需要输出​​属于每个类别的概率估计​​(而不仅仅是多数票类别)
  • ​概率计算方式​​:
    • 对于二分类问题,假设叶节点包含样本的权重向量wi​和类别标签(0或1)。
    • 计算该叶节点中每个类别的权重和:
      S0​=∑​wi​,yi​=0
      S1​=∑​wi​,yi​=1
    • 叶节点输出概率为归一化的权重比例:
      p0​=S0​/(S1+​S0)​​,p1​=S1/(S0+​S1)​​
    • 因此,叶节点输出是一个概率向量,例如[p_0, p_1](二分类时两个值)。

3. ​​AdaBoost SAMME.R的训练过程​

  • 算法根据基分类器输出的概率pt​(x)计算加权概率估计,并更新加法模型:
    Fk​(x)←Fk​(x)+(K−1)(logpt​(k∣x)−K1​j=1∑K​logpt​(j∣x))
    其中K为类别数(二分类时K=2)。
  • 注意:不需要计算基分类器的权重αt​,因为直接使用概率输出。

以上就是Adaboost算法----SAMME算法和SAMME.R算法的解释,希望能帮助到各位。

http://www.lryc.cn/news/611196.html

相关文章:

  • 机器学习③【模型训练、K近邻算法(KNN)、贝叶斯算法(Navie Bayes)、模型调优】
  • 无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC05,完成霍尔传感器的校准
  • 智慧社区(八)——社区人脸识别出入管理系统设计与实现
  • Java面试宝典:对象的内存布局
  • 从数据洪流到智能决策:Apache IoTDB如何重塑工业物联网的DB+AI新范式
  • 折半枚举:四数之和为零
  • 深入解析数据结构之顺序表
  • 【经验记录贴】在windows系统中启动服务
  • 详细讲述优雅草蜻蜓I即时通讯私有化中xmpp服务中的tigase的角色与作用深度分析-卓伊凡|bigniu
  • 【轮播图】H5端轮播图、横向滑动、划屏效果实现方案——Vue3+CSS position
  • 从开发到售后:Q-Tester基于ODX标准的统一诊断平台
  • 闸机控制系统从设计到实现全解析:第 4 篇:Redis 缓存与分布式锁实现
  • STM32设置GPIO模式
  • Dify工作流三剑客:参数提取、变量赋值与聚合详解
  • Starrocks中的 Query Profile以及explain analyze及trace命令中的区别
  • Linux系统:基础I/O
  • 基于python的二手车价格预测及可视化系统,采用集成学习算法和diango框架
  • [按键精灵]
  • Pytorch基础入门2
  • AlmaLinux8 平替 manylinux_2_28-python 的 GPG密钥管理、安装 cuda sdk
  • gRPC Keepalive 机制详解与最佳实践
  • 微软Dragon Ambient eXperience (DAX) 深度解析
  • Linux 调度器函数sched_*系统调用及示例
  • Java JDBC连接池深度解析与实战指南
  • Transformer的并行计算与长序列处理瓶颈
  • Linux lvm逻辑卷管理
  • 猜数字游戏 Java
  • 【C++】模板深入进阶
  • Java技术栈/面试题合集(13)-网络篇
  • [Linux]学习笔记系列 -- [arm]boot