8

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

谢谢你。

4

4 回答 4

6

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

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

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

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

于 2013-03-25T17:45:39.160 回答
3

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

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

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

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

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

于 2013-05-31T23:03:24.670 回答
1

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

于 2013-02-22T17:45:36.670 回答
0

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

于 2018-02-24T18:22:19.243 回答