Adaboost 与其他分类器拟合

数据挖掘 Python 分类 随机森林 adaboost
2022-03-01 07:40:13

有机会将决策树与其他决策树相匹配。例如:

adaclassification= AdaBoostClassifier(RandomForestClassifier(n_jobs=-1))
adaclassification.fit(X_train,y_train)

我用随机森林得到了更好的结果,所以用随机森林分类器改进了 adaboost 的结果。但是我不明白这里发生了什么?听起来很简单:adaboost 使用随机森林来适应它的分类。但是这里的数学是怎么回事?Adaboost 由残差组成一个序列(增强)。随机森林(装袋)用树木建造森林。

1个回答

你的描述很贴切。除了 AdaBoost 算法本身之外,这里没有发生任何特别“数学”的事情。

在伪代码中,正在发生这样的事情:

For n in 1 .. N_Estimators do
  Train classifier Tn on data X with weights W
  Compute weighted residuals E from Tn
  Update W based on E
  Renormalize W
end

在您的情况下,Tn将是一个随机森林模型,它本身就是一个基于 bagging 的集合。因此,在“外部”AdaBoost 模型的每次迭代中,都会训练一个完整的随机森林模型,即在数据点和特征的随机子样本上拟合几个决策树。

当然,这对于提升模型来说是一个不寻常的设置。但是没有概念上或计算上的原因导致您不能以这种方式运行算法。

如果您对权重的计算和更新方式感到好奇,Scikit-learn 使用SAMME算法,该算法基于原始 AdaBoost,但并不完全相同。SAMME 在Zhu、Rhosset、Zhou 和 Hastie (2006)的“Multi-Class AdaBoost”中进行了描述。