How to re-train a model optimized by Bayesian optimization on new data?
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Sebastian
il 20 Set 2019
Commentato: Denys Romanenko
il 1 Apr 2023
Hi,
I optimized a regression ensemble
model = fitrensemble(X,Y,...);
with active HyperparameterOptimizationOptions, so the resulting model object of type RegressionBaggedEnsemble contains a HyperparameterOptimizationResults object. How can I use this easily to re-train the model on a new data set with the best point found by the hyperparameter optimization algorithm? Something like this would be nice:
newModel = fitrensemble(Xnew,YNew,model.HyperparameterOptimizationResults.bestPoint);
My current approach is tedious, because I have to distinguish between the method the optimization algorithm selected (Bag,LSBoost) and set all parameters manually (and I'm even not sure if this is correct):
best = model.HyperparameterOptimizationResults.bestPoint;
ttmp = templateTree('MinLeafSize',best.MinLeafSize,'MaxNumSplits',...
best.MaxNumSplits,'NumVariablesToSample',best.NumVariablesToSample);
if best.Method=='Bag' %#ok<BDSCA>
newModel = fitrensemble(Xnew,YNew,...
'Method','Bag','Learners',ttmp,'NumLearningCycles',best.NumLearningCycles);
else
newModel = fitrensemble(Xnew,YNew,...
'Method','LSBoost','Learners',ttmp,'NumLearningCycles',best.NumLearningCycles,'LearnRate',best.LearnRate);
end
This question is not restricted to fitrensemble, but includes all similar model functions available in Statistics and Machine Learning Toolbox (fitrlinear, fitrgp ...).
0 Commenti
Risposta accettata
Don Mathis
il 20 Set 2019
Modificato: Don Mathis
il 20 Set 2019
Your current approach (explicitly passing the values that the optimization found) is the right way to do it.
There is a faster/simpler way which uses undocumented functionality, and which therefore may change in the future. So, use at your own risk. You create a template from your model and then fit it:
model = fitrensemble(X,Y,...);
tmp = classreg.learning.FitTemplate.makeFromModelParams(model.ModelParameters);
newModel = fit(tmp,Xnew,Ynew)
2 Commenti
Sinan Islam
il 24 Apr 2021
Modificato: Sinan Islam
il 16 Lug 2021
@Don Mathisis this still the only way to retrain a model on new data (without using Classification Learner App)? Have MATLAB implemented a more formal method?
Denys Romanenko
il 1 Apr 2023
@Don Mathis and @Sebastian: Is there an analogue approach to retrain a fitcecoc - classifier? Unfortunately the above described approach is not applicable.
Thank you!
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Classification Ensembles in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!