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

Jae*_*ger 2 machine-learning adaboost scikit-learn ensemble-learning

我是AdaBoost算法的新手.在sklearn中, SAMME算法的_boost_discrete()分类器权重返回为" estimator_weight "

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

    return sample_weight, estimator_weight, estimator_error
Run Code Online (Sandbox Code Playgroud)

但是,对于SAMME.R算法,"_ boost_real()" 返回 "1"而不是返回估计量权重.

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

    return sample_weight, 1., estimator_error
Run Code Online (Sandbox Code Playgroud)

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

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

joc*_*ops 11

以下是我对于2006年多级Adaboost论文之后SAMME.R算法中权重可能设置为"1"的理解.您提到的2009年论文不包括SAMME.R算法.

在论文(2006)sample_weight由下式表示瓦特estimator_weight由下式表示的α.

如果你看看算法2 SAMME

SAMME算法

一旦 walpha,就会根据C(x)对新样本进行分类.注意,estimator_weight(alpha ^(m))出现在C(x)中,可以解释为弱学习者m的更新强度.

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

在此输入图像描述

请注意,此算法中的任何位置都不会出现estimator_weight(alpha).相反,弱学习者的特征在于加权类概率估计,并且新样本根据这个新的C(x)进行分类.即使estimator_weight(alpha)不直接出现在C(x)中,也可以将它放在h_k ^(m)(x)前面(作为乘数)并将其定义为1为所有alpha:

在此输入图像描述

这导致在estimator_weight训练结束时所有值都为1.