我正在使用Adaboost,这是一个关于弱学习者的问题。在Adaboost算法中,如下所示,在步骤(2)中,我可以使用不同的算法吗?例如,当k为1时,我使用KNN,如果k = 2,则使用SVM,对于k = 3,我使用决策树?或者,我应该在 for 循环的所有k次迭代中使用单个算法吗?
(1) initialize the weight of each tuple in D to 1=d;
(2) for i = 1 to k do // for each round:
(3) sample D with replacement according to the tuple weights to obtain Di ;
(4) use training set Di to derive a model, Mi ;
(5) compute error.Mi/, the error rate of Mi (Eq. 8.34)
(6) if error.Mi/ > 0.5 then
(7) go back to step 3 and try again;
(8) endif
(9) for each tuple in Di that was correctly classified do
(10) multiply the weight of the tuple by error.Mi/=.1error.Mi//; // update weights
(11) normalize the weight of each tuple;
(12) endfor
答案 0 :(得分:2)
Adaboost通常与周学习者一起使用,例如短决策树。您可以使用更复杂的学习者,但在这种情况下,Adaboost可能不是结合结果的最佳选择。
大多数实现(如Scikit学习AdaBoostClassifier)都假设您将为每个步骤使用相同的学习者,但不应该更改这一点。
此外,这个问题可能更适合https://stats.stackexchange.com/。