1

我正在使用 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
4

1 回答 1

2

Adaboost 通常与周学习者一起使用,例如短决策树。您可以使用更复杂的学习器,但在这种情况下,Adaboost 可能不是组合结果的最佳选择。

大多数实现(如 Scikit learn AdaBoostClassifier)假设您将在每个步骤中使用相同的学习器,但更改它应该不会太难。

此外,这个问题可能更适合https://stats.stackexchange.com/

于 2015-06-29T16:11:41.423 回答