我一直想知道当它具有错误率(完美分类)时,alpha(弱分类器的权重)的值应该是什么,因为alpha的算法是
(0.5) * Math.log(((1 - errorRate) / errorRate))
谢谢。
答案 0 :(得分:3)
如果你通过重新加权并向弱学习者传递整个训练数据,我会说你找到了一个实际上很强的弱分类器,毕竟它完美地分类了你的数据。
在这种情况下,它应该在第一次Adaboost迭代中发生。将弱分类器添加到强分类器中,将alpha设置为1并停止训练。
现在,如果您在通过重新取样进行提升时发生这种情况,并且您的样本只是训练数据的一部分,我相信您应该丢弃此子集并使用其他样本重试。
我相信你达到了这样的结果,因为你正在玩一个非常简单的例子,或者你的训练数据集非常小或不具代表性。你的弱分类器也可能太弱而且接近随机猜测太快了。
答案 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,例如..
答案 2 :(得分:1)
我遇到了这个问题几次,通常我要做的是检查错误是否等于0,如果是,则将其设置为等于最小重量的1/10。这是一个黑客,但它通常最终工作得很好。
答案 3 :(得分:0)
如果你在Adaboost的预测中不使用这样的分类器实际上更好,因为它不会改善它,因为它不是一个弱分类器,并且往往会吃掉所有的重量。