4
私はxgboost
に新しく、従来のgbm
と比較して使い方を学ぼうとしています。しかし、私はxgboost
がgbm
よりはるかに遅いことに気づいた。例は次のとおりです。8コアを搭載したMacBook Proの上でXGBRegressorはGradientBoostingRegressorよりもはるかに遅い
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)
、出力は次のようになります。
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がはるかに高速ので、私は何か間違ったことしなければならないべきであると思いました。誰かが私が間違ってやっていることを指摘するのに役立つことができますか?
これは私があなたのコードを正確に実行していることです: 'GBM時間:2.1901206970214844 XGB時間:2.5632455348968506'。 – josh