I am using the xgboost library. My system runs a cronjob each night, where it pulls the data from the database and trains the model. However, I would like to remove the re-training of the model again and again, and just fine-tune it with any new data that came in the database. In sklearn's implemantation (http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html) one could use warm_start option, what about xgboost ?
It should be noted that XGBoost makes optimal splits assuming it has access to the entire dataset, so you would likely be losing out on some predictive power by updating rather than retraining (though of course this may be worth the lessened computational cost).
See an interesting discussion on this XGBoost github issue
You can do this by the argument
xgb_model. The splits are fixed but the leave values are updated by your new training data.
And you can increase the tree splitting using new data after the original ones.
Here is a minimal example as follows,
gbm_t = xgb.train(params_t, xgb_train_t, num_boost_round = num_round, evals= watchlist_t, xgb_model=gbm)