对boosting使用OpenCV后,我尝试实施自己的Adaboost
算法版本(检查here,here和the original paper对于一些参考文献)。
通过阅读所有材料,我提出了一些有关算法实施的问题。
1)我不清楚如何分配每个弱学习者的权重a_t。
在所有来源中,我已经指出选择是a_t = k * ln( (1-e_t) / e_t )
,k是正常数,而e_t是特定弱学习者的错误率。
在source的第7页,它说该特定值最小化某个凸可微函数,但我真的不理解这段经文。
有人可以向我解释一下吗?
2)我对训练样本的体重更新程序有一些疑问。
显然,应该以这样的方式来保证它们仍然是概率分布。所有参考文献都采用了这种选择:
D_ {t + 1}(i)= D_ {t}(i)* e ^( - a_t y_i h_t(x_i))/ Z_t(其中Z_t是a 选择归一化因子,使得D_ {t + 1}是分布)。
我希望这是发布此问题的正确位置,如果没有请重定向我! 提前感谢您提供的任何帮助。
答案 0 :(得分:1)
1)你的第一个问题:
a_t = k * ln( (1-e_t) / e_t )
由于训练数据的误差受Z_t)alpha)的乘积限制,并且Z_t(alpha)是凸的w.r.t. alpha,因此只有一个“全局”最佳alpha,它最小化错误的上限。这就是你如何找到神奇的“alpha”的直觉
2)你的第二个问题: 但是为什么权重更新的特定选择与特定弱学习者的错误率的指数成倍增加?
简而言之:找到上述alpha的直观方式确实提高了准确性。这并不奇怪:你实际上相信更多(通过给予更大的α重量)学习者比其他人更好地工作,并且对那些工作更糟的人更少信任(通过给予更小的alpha)。对于那些没有比以前的学习者更新知识的学习者,你将权重alpha指定为0。
有可能证明(参见)最终提升假设产生的培训误差受到
的限制exp(-2 \sigma_t (1/2 - epsilon_t)^2 )
3)你的第3个问题: 还有其他更新吗?如果是,是否有证据表明此更新保证了学习过程的某种最优性?
这很难说。但请记住,此更新正在提高“训练数据”的准确性(存在过度拟合的风险),但很难说它的普遍性。