【问题标题】:Why estimator_weight in SAMME.R AdaBoost algorithm is set to 1为什么 SAMME.R AdaBoost 算法中的 estimator_weight 设置为 1
【发布时间】:2015-11-06 00:30:18
【问题描述】:

我是 AdaBoost 算法的新手。在sklearn SAMME 算法的 _boost_discrete() returns 分类器权重为“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,“多类 AdaBoost”,2009。

【问题讨论】:

  • 请考虑添加代码的相关部分并提供代码库的链接。
  • 我已经添加了链接。谢谢。

标签: machine-learning scikit-learn adaboost ensemble-learning


【解决方案1】:

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

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

如果你看看 算法 2 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。

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多