【问题标题】:How to calculate alpha if error rate is zero (Adaboost)如果错误率为零,如何计算 alpha (Adaboost)
【发布时间】:2013-02-07 19:58:11
【问题描述】:

我一直想知道当 alpha(弱分类器的权重)具有错误率(完美分类)时,它的值应该是多少,因为 alpha 的算法是 (0.5) * Math.log(((1 - errorRate) / errorRate))

谢谢。

【问题讨论】:

    标签: adaboost


    【解决方案1】:

    我遇到过几次这个问题,通常我所做的是检查错误是否等于 0,如果是,则将其设置为等于最小权重的 1/10。这是一个 hack,但通常最终效果很好。

    【讨论】:

    • 设置为最小重量的 1/10 是什么意思?
    • 作为 Adaboost 的一部分,您拥有用于训练的示例的权重。这些示例通常在开始时设置为 1/norm,并在 Adaboost 的每次迭代中更新。您的错误只是您的弱分类器不正确的示例的权重之和。如果您的错误为零,只需将其设置为这些权重的最小值的 1/10,从而说明您的分类器非常好(但不完美),它仅在最不重要示例的 1/10 处出错。
    【解决方案2】:

    如果您通过重新加权并将整个训练数据传递给弱学习器来进行提升,我会说您找到了一个实际上很强大的弱分类器,毕竟它完美地分类了您的数据。

    在这种情况下,它应该发生在第一次 Adaboost 迭代中。将该弱分类器添加到您的强分类器中,并将 alpha 设置为 1,然后停止训练。

    现在,如果在您通过重采样进行提升时发生这种情况,并且您的样本只是训练数据的一个子集,我认为您应该丢弃该子集并使用另一个样本重试。

    我相信您达到了这样的结果是因为您正在使用一个非常简单的示例,或者您的训练数据集非常小或不具有代表性。也有可能是您的弱分类器太弱并且太快地接近随机猜测。

    【讨论】:

      【解决方案3】:

      名义上,零错误的弱分类器的 alpha 应该是,因为它正确地分类了所有训练实例。我假设您正在使用所有训练数据来估计 alpha。您也可能仅使用该轮提升的训练样本来估计 alpha - 在这种情况下,根据样本大小,您的 alpha 应该稍微小一些 - 但同样的想法。

      理论上,如果您的其他 alpha 未归一化,则此 alpha 应该接近无穷大。在实践中,检查您的错误是否为零并为这些 alpha 赋予一个非常高的值的建议是合理的,但零或接近零的错误率通常表明您过度拟合(或者训练数据太少而无法估计可靠的 alpha) .

      这在 Adaboost 的Schapire & Singer's Confidence Rated Predictions 版本的第 4.2 节中有介绍。他们建议为您的分子和分母添加一个小 epsilon 以保持稳定性:

      alpha = (0.5) * Math.log(((1 - errorRate + epsilon) / (errorRate + epsilon)))
      

      无论如何,这个 alpha 值不应设置为小值(它应该很大)。只有当所有其他轮次提升的所有其他 alpha 都被归一化时,将其设置为 1 才有意义,因此所有 alpha 的总和几乎为 1,例如..

      【讨论】:

        【解决方案4】:

        实际上,如果您在预测 Adaboost 时不使用这样的分类器会更好,因为它不会对它有太大的改进,因为它不是一个弱分类器,而且往往会吃掉所有的权重。

        【讨论】:

          猜你喜欢
          • 2012-04-21
          • 1970-01-01
          • 1970-01-01
          • 2012-03-28
          • 2017-01-25
          • 2020-06-11
          • 2013-03-03
          • 2015-08-10
          • 1970-01-01
          相关资源
          最近更新 更多