এক্সজিবিগ্রিজার বনাম 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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.