我可以使用 SVC() 作为集成方法的 base_estimtor 吗?

数据挖掘 Python 支持向量机 集成建模
2022-03-15 05:50:56

我目前正在我的数据集上测试几种不同的集成方法。我听说你也可以在 boosting 和 bagging 方法中使用支持向量机作为基础学习器,但我不确定哪些方法允许或不允许。特别是,例如对于 XGB,我尝试将树和 SVM 作为基础学习器,并在 5 个不同的性能指标上得到完全相同的结果,这让我质疑结果和/或该选项只能将树作为基础学习器。我在文档中没有找到太多信息,或者至少在所有文档中都没有找到。我会对 AdaBoostClassifier()、BaggingClassifier() 和 XGBClassifier() 感兴趣。有谁知道细节以及我是否可以在这里使用 SVM 作为基础学习者?

1个回答

简而言之:是的。

从概念上讲,bagging 和 boosting 是与模型无关的技术,这意味着无论学习者如何,它们都可以工作。

Bagging 本质上是这样的:

  • 创建多个预测器(它们甚至可以被硬编码!)
  • 从学习者那里收集预测并提出预测

提升可以被视为:

  • 训练一个预测器
  • 找出预测器出错的地方
  • 更加重视这些错误
  • 重复直到满意

关于具体的 Sklearn 实现,以下是您可以使用的基础学习器:

  • AdaBoostClassifier()

文档说Support for sample weighting is required, as well as proper classes_ and n_classes_ attributes

这意味着您可以使用所有可以赋予样本权重的模型作为学习过程的一部分(KNN、SVM 等)

  • BaggingClassifier()

这是一个简单的 bagging 策略,所以所有的估计器都可以在这里使用。

  • GradientBoostingClassifier()

这要求您的学习者是可微的,以便可以计算梯度。通常,这种技术专门用于树学习。