AdaBoost 与 SVM 基分类器的执行时间

Execution time of AdaBoost with SVM base classifier

我刚刚用这些参数做了一个 Adaboost 分类器,

1.n_estimators = 50

2.base_estimator = svc(支持向量分类器)

3.learning_rate = 1

这是我的代码:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.svm import SVC

svc = SVC(kernel = 'linear',probability = True)

ABC = AdaBoostClassifier(n_estimators = 50, base_estimator = svc, learning_rate = 1)

ABC.fit(X,Y)

数据集有18个自变量和1个分类因变量数据集有10480个数据点

每当我 运行 这将花费很多时间但没有任何结果。

有什么方法可以查看执行时间吗?或者有更好的方法吗?

在实践中,我们从不使用 SVM 作为 Adaboost 的基础分类器。

Adaboost(和类似的集成方法)是使用决策树作为基础分类器(更具体地说,决策 stumps,即深度仅为 1 的 DT);直到今天,如果您没有明确指定 base_classifier 参数,它仍会假定值为 DecisionTreeClassifier(max_depth=1),这是有充分理由的。 DT 适合这种集成,因为它们本质上是 不稳定的 分类器,而 SVM 不是这种情况,因此后者在用作基本分类器时预计不会提供太多。

除此之外,SVM 在计算上比决策树昂贵得多(更不用说决策 stumps),这就是您观察到的处理时间长的原因。

除非你有一个非常很好的理由坚持使用 SVM 作为基础分类器(我非常怀疑你这样做),删除 base_estimator = svc 以恢复到默认设置,很可能你会没事的。

我最近也有类似的经历。但就我而言,我意识到在使用 SVM 作为基础估计器之前我并没有缩放 X。只需确保将数据从 0 缩放到 1(您可以使用 sklearn 中的 StandardScaler()),这在使用 SVM 之前始终是必需的。