【问题标题】:Execution time of AdaBoost with SVM base classifierAdaBoost 与 SVM 基分类器的执行时间
【发布时间】:2020-01-17 23:27:15
【问题描述】:

我刚刚用这些参数做了一个 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 个数据点

每当我运行它时,它都会花费很多时间但没有任何结果。

有没有办法检查执行时间?或者有更好的方法吗?

【问题讨论】:

  • 你为什么不用 1 或 2 个估算器试试呢。如果它很快,请使用更多,看看它的表现如何。或者尝试用更少的数据来感受一下你的算法有多快或多慢。
  • 是的,我已经尝试过了,它减少了您所说的执行时间,非常感谢您的评论

标签: python machine-learning scikit-learn svm adaboost


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    除非您有非常充分的理由坚持将 SVM 作为基分类器(我非常怀疑您这样做),否则请删除 base_estimator = svc 以恢复到默认设置,并且大多数也许你会没事的。

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 2017-03-03
      • 2013-08-12
      • 2016-12-20
      • 2021-03-23
      • 2014-10-31
      • 2014-06-03
      • 2021-07-02
      相关资源
      最近更新 更多