如何计算阿尔法如果错误率为零(Adaboost)

问题描述:

我一直想知道什么值的alpha(弱分类器的权重)应该是什么时,它应该是错误率(完美的分类),因为alpha的算法是 (0.5) * Math.log(((1 - errorRate)/errorRate))如何计算阿尔法如果错误率为零(Adaboost)

谢谢。

我遇到了这个问题几次,通常我所做的是检查错误是否等于0,如果是,请将其设置为等于最小权重的1/10。这是一种黑客攻击,但通常最终工作得很好。

+0

你是什么意思将它设为等于最小重量的1/10? – 2013-02-22 18:08:15

+0

作为Adaboost的一部分,您有权衡您正在用于培训的示例。这些示例通常在开始时设置为1 /标准,并在每次Adaboost迭代时更新。你的错误仅仅是你的弱分类器变得不正确的例子权重的总和。如果你的错误为零,只需将它设置为这些权重的最小值的1/10即可,因此表示你的分类器非常好(但并不完美),因此错误只是最不重要的例子的1/10。 – nikola 2013-02-23 13:12:10

如果您通过重新加权并向弱学习者传递整个培训数据,我会说你发现了一个实际上很强大的弱分类器,毕竟它完美地分类了你的数据。

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

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

我相信你已经达到了这样的结果,因为你在玩一个非常简单的例子,或者你的训练数据集非常小或者不具代表性。也有可能你的弱分类器太弱,并且过于快速地接近随机猜测。

名义上,具有零错误的弱分类器的alpha应为,因为它正确分类所有训练实例。我假设你正在使用所有训练数据来估计alpha。有可能你只是通过该轮助推的训练样本来估计alpha,在这种情况下,根据样本大小,你的alpha应该略小一些 - 但是同样的想法。

从理论上讲,如果你的其他阿尔法未被标准化,这个阿尔法应该是无限的。在实践中,检查你的错误是否为零并给这些alpha值设置非常高的建议是合理的,但是零或接近于零的错误率通常表明你是过度拟合的(或者只有太少的训练数据来估计可靠的alpha) 。

Adaboost版本的Schapire & Singer's Confidence Rated Predictions版本的第4.2节介绍了这一点。他们建议增加一个小小量您的分子和分母的稳定性:

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

在任何情况下,本阿尔法不应该被设置为一个很小的值(它应该是大)。如果所有其他回合的所有其他alpha都归一化,所以所有alpha的总和几乎为1,例如:

如果您在您的系统中没有使用这样的分类器预测Adaboost,因为它不会改善它,因为它不是一个弱分类器,并且会倾向于消耗所有的重量。