How to re-train a model optimized by Bayesian optimization on new data?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sebastian
el 20 de Sept. de 2019
Comentada: Denys Romanenko
el 1 de Abr. de 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 comentarios
Respuesta aceptada
Don Mathis
el 20 de Sept. de 2019
Editada: Don Mathis
el 20 de Sept. de 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 comentarios
Sinan Islam
el 24 de Abr. de 2021
Editada: Sinan Islam
el 16 de Jul. de 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
el 1 de Abr. de 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!
Más respuestas (0)
Ver también
Categorías
Más información sobre Classification Ensembles en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!