XGBRegressor와 xgboost의 속도 차이가 큰가?


13

다음 코드를 사용하여 모델을 훈련시키는 경우 :

import xgboost as xg
params = {'max_depth':3,
'min_child_weight':10,
'learning_rate':0.3,
'subsample':0.5,
'colsample_bytree':0.6,
'obj':'reg:linear',
'n_estimators':1000,
'eta':0.3}

features = df[feature_columns]
target = df[target_columns]
dmatrix = xg.DMatrix(features.values,
                     target.values,
                     feature_names=features.columns.values)
clf = xg.train(params, dmatrix)

약 1 분 후에 완료됩니다.

Sci-Kit 학습 방법을 사용하여 모델을 훈련시키는 경우 :

import xgboost as xg
max_depth = 3
min_child_weight = 10
subsample = 0.5
colsample_bytree = 0.6
objective = 'reg:linear'
num_estimators = 1000
learning_rate = 0.3

features = df[feature_columns]
target = df[target_columns]
clf = xg.XGBRegressor(max_depth=max_depth,
                min_child_weight=min_child_weight,
                subsample=subsample,
                colsample_bytree=colsample_bytree,
                objective=objective,
                n_estimators=num_estimators,
                learning_rate=learning_rate)
clf.fit(features, target)

30 분 이상 걸립니다.

기본 코드가 거의 동일하다고 생각합니다 (예 : XGBRegressor호출 xg.train)-여기서 무슨 일이 일어나고 있습니까?

답변:


19

xgboost.train수락 n_estimators하는 동안 parameter를 무시 xgboost.XGBRegressor합니다. 에서 xgboost.train, 증폭 반복 (즉 n_estimators)에 의해 제어됩니다 num_boost_round(기본값 : 10)

귀하의 경우 첫 번째 코드는 기본적으로 10 반복을 수행하지만 두 번째 코드는 1000 반복을 수행합니다. 변경하려고하면 어떤 큰 차이가 없을 것 clf = xg.train(params, dmatrix)으로 clf = xg.train(params, dmatrix, 1000),

참고 문헌

http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.train

http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBRegressor

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.