2

我是 AdaBoost 算法的新手。在sklearn SAMME算法的 _boost_discrete()分类器权重返回为“ estimator_weight

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

    return sample_weight, estimator_weight, estimator_error

但是,对于SAMME.R算法,“_boost_real()”返回'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,“多类 AdaBoost”,2009。

4

1 回答 1

12

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

在论文(2006)sample_weight中用westimator_weight表示,用alpha表示

如果你看一下算法 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)前面(作为乘数)并将所有alpha定义为 1 :

在此处输入图像描述

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

于 2015-09-21T19:58:23.117 回答