Answers:
正如您所说,已经对此问题进行了很多讨论,并且伴随着一些沉重的理论,我不得不承认我从未完全理解过。根据我的实际经验,AdaBoost可以很好地适应过度拟合,而LPBoost(线性编程增强)则更是如此(因为目标函数需要稀疏学习者的稀疏组合,这是一种能力控制的形式)。影响它的主要因素是:
“弱”学习者的“实力”:如果使用非常简单的弱学习者,例如决策树桩(1级决策树),则算法不太容易过拟合。每当我尝试使用更复杂的弱学习器(例如决策树甚至超平面)时,我发现过度拟合的发生速度会更快
数据中的噪声水平:AdaBoost特别容易在嘈杂的数据集上过拟合。在此设置中,最好使用正则化形式(RegBoost,AdaBoostReg,LPBoost,QPBoost)
数据的维数:我们知道,总的来说,我们在高维空间(“维数的诅咒”)中会遇到更多的过度拟合,而AdaBoost在这方面也可能会受到影响,因为它只是分类器的线性组合,而分类器本身会遭受从问题。是否像其他分类器一样容易确定。
当然,您可以像任何其他分类器一样使用启发式方法(例如验证集或倍交叉验证)来设置停止参数(或不同变体中的其他参数)。
我同意tdc评论中提到的大多数观点。但是,我必须添加和更正一些内容。
caret
包对adaboost进行交叉验证,并且我发现它通常可以很好地概括。