gpt4 book ai didi

scikit-learn - XGBRegressor 比 GradientBoostingRegressor 慢得多

转载 作者:行者123 更新时间:2023-12-04 21:08:01 27 4
gpt4 key购买 nike

我是新来的 xgboost并试图通过将它与传统的 gbm 进行比较来学习如何使用它.但是,我注意到 xgboostgbm慢得多.例子是:

from sklearn.model_selection import KFold, GridSearchCV
from sklearn.ensemble import GradientBoostingRegressor
from xgboost import XGBRegressor
from sklearn.datasets import load_boston
import time

boston = load_boston()
X = boston.data
y = boston.target

kf = KFold(n_splits = 5)
cv_params = {'cv': kf, 'scoring': 'r2', 'n_jobs': 4, 'verbose': 1}

gbm = GradientBoostingRegressor()
xgb = XGBRegressor()

grid = {'n_estimators': [100, 300, 500], 'max_depth': [3, 5]}

timer = time.time()
gbm_cv = GridSearchCV(gbm, param_grid = grid, **cv_params).fit(X, y)
print('GBM time: ', time.time() - timer)

timer = time.time()
xgb_cv = GridSearchCV(xgb, param_grid = grid, **cv_params).fit(X, y)
print('XGB time: ', time.time() - timer)

在 8 核 Macbook Pro 上,输出为:
Fitting 5 folds for each of 6 candidates, totalling 30 fits
[Parallel(n_jobs=4)]: Done 30 out of 30 | elapsed: 1.9s finished
GBM time: 2.262791872024536
Fitting 5 folds for each of 6 candidates, totalling 30 fits
[Parallel(n_jobs=4)]: Done 30 out of 30 | elapsed: 16.4s finished
XGB time: 17.902266025543213

我认为 xgboost 应该快得多,所以我一定是做错了什么。有人可以帮助指出我做错了什么吗?

最佳答案

这是在我的机器上运行时的输出,没有设置n_jobs cv_params 中的参数

Fitting 5 folds for each of 6 candidates, totalling 30 fits
[Parallel(n_jobs=1)]: Done 30 out of 30 | elapsed: 4.1s finished
('GBM time: ', 4.248916864395142)
Fitting 5 folds for each of 6 candidates, totalling 30 fits
('XGB time: ', 2.934467077255249)
[Parallel(n_jobs=1)]: Done 30 out of 30 | elapsed: 2.9s finished

n_jobs设置为 4,输出为 2.5s GBM,但 XGB 需要很长时间。

所以也许这是 n_jobs 的问题!也许 XGBoost 库没有很好地配置为使用 GridSearchCV 运行 n_jobs。

关于scikit-learn - XGBRegressor 比 GradientBoostingRegressor 慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41177279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com