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

发布于:2025-08-06 ⋅ 阅读:(15) ⋅ 点赞:(0)

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算法的解释,希望能帮助到各位。


网站公告

今日签到

点亮在社区的每一天
去签到