为什么estimator_weight in SAMME.R AdaBoost算法设置为1

Why estimator_weight in SAMME.R AdaBoost algorithm is set to 1

我是 AdaBoost 算法的新手。在 sklearn SAMME algorithm's _boost_discrete() returns class 权重为“estimator_weight

def _boost_discrete(self, iboost, X, y, sample_weight):
    .......

    return sample_weight, estimator_weight, estimator_error

但是,对于 SAMME.R 算法,“_boost_real()”是 returning '1' 而不是返回估计器权重。

def _boost_real(self, iboost, X, y, sample_weight):
    .......

    return sample_weight, 1., estimator_error

我的问题是为什么 SAMME.R 算法将 estimator_weight 返回为“1”。 我正在关注参考 [1]。请帮助我理解算法。提前致谢。

参考: [1]J. Zhu, H. Zou, S. Rosset, T. Hastie,“Multi-class AdaBoost”,2009.

根据 2006 年的这篇 Multi-class Adaboost 论文,我理解为什么 SAMME.R 算法中的权重可能设置为“1”。您提到的 2009 年论文不包括 SAMME.R算法。

在论文(2006)中sample_weightw表示,estimator_weightalpha表示.

如果你看一下算法 2 SAMME

一旦 walpha 被学习,新样本 class 根据 C(x)。请注意 estimator_weight (alpha^(m)) 出现在 C(x) 中,可以解释为强度更新弱学习器 m

现在让我们看一下算法4 SAMME.R。

请注意,estimator_weight (alpha) 不会出现在该算法的任何地方。相反,弱学习器的特征是加权 class 概率估计,新样本根据这个新的 C(x) 进行 class 化。即使 estimator_weight (alpha) 没有直接出现在 C(x) 中,也可以将它放在 [=40 之前=]h_k^(m)(x)(作为乘数)并将所有 alpha:

定义为 1

这导致所有 estimator_weight 在训练结束时取值 1。