How to retrieve optimal MinLeafSize after automatic hyperparameter optimization for Tree Ensemble (fitrensemble)?

7 visualizzazioni (ultimi 30 giorni)
Hi. I am running MATLAB's automatic Bayesian optimization for a number of parameters for a Tree Ensemble.
opts = struct('Kfold',4,'Optimizer','bayesopt');
Mdl = fitrensemble(X,Y,'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize'},'HyperparameterOptimizationOptions',opts);
I understand that all the optimal parameters are embedded in the resulted object ‘Mdl’, but I was wondering if it’s possible to retrieve and save in a variable the optimal MinLeafSize. Even though I have found the rest optimized parameters:
Mdl.ModelParameters.Method %Method
Mdl.ModelParameters.NLearn %NumLearningCycles
Mdl.ModelParameters.LearnRate %LearnRate
but, I cannot obtain the MinLeafSize. However, I can see that it is listed among the properties of 'Mdl' under MinLeaf:
Mdl.ModelParameters.LearnerTemplates{1,1}
Anyone knows how to extract this? Thanks.

Risposta accettata

Cris LaPierre
Cris LaPierre il 6 Feb 2021
Modificato: Cris LaPierre il 6 Feb 2021
I ran both a tree and ensemble models optimizing minLeafSize. For a decision tree, MinLeaf is a model parameter, but not for an ensemble. The only way I could find to see the value was by viewing the template.
Mdl.ModelParameters.LearnerTemplates{1,1}
ans =
Fit template for regression Tree.
SplitCriterion: []
MinParent: []
MinLeaf: 126
MaxSplits: 10
NVarToSample: []
MergeLeaves: 'off'
Prune: 'off'
PruneCriterion: []
QEToler: []
NSurrogate: []
MaxCat: []
AlgCat: []
PredictorSelection: []
UseChisqTest: []
Stream: []
Reproducible: []
Version: 2
Method: 'Tree'
Type: 'regression'
  3 Commenti
Bernhard Suhm
Bernhard Suhm il 8 Feb 2021
You can use bestPoint(Mdl.HyperparameterOptimizationResults) to access the hyperparameters of the "best estimated" model, including 'MinLeafSize'
Haris K.
Haris K. il 9 Feb 2021
Modificato: Haris K. il 9 Feb 2021
Perfect! Exactly what I was looking. It might be worth adding this somewhere in the examples or in the inputs section of fitrtree(), fitrensemble() etc online documentation. Currently it is mentioned nowhere. Thank you both for your help!
(Bernhard, I am not sure if I can 'accept' your answer as THE answer, as it is a comment in Cris' answer. If you could please write it below, so that I can flag your answer as the accepted one..)

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by