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 之前始终是必需的。
我刚刚用这些参数做了一个 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 之前始终是必需的。