XGBRegressor बनाम xgboost.train विशाल गति अंतर?


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 मिनट में समाप्त होता है।

यदि मैं विज्ञान-किट सीखने की विधि का उपयोग करके अपने मॉडल को प्रशिक्षित करता हूं:

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करते समय पैरामीटर की उपेक्षा करेंगे 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.