[PYTHON] L'histoire lorsque différentes distributions sont spécifiées pour le même paramètre dans Optuna

introduction

Optuna est une bibliothèque qui optimise les hyperparamètres par optimisation bayésienne. Cet article est une note d'une erreur que j'ai rencontrée en essayant de spécifier différentes distributions pour les mêmes paramètres à l'aide d'Optuna.

La raison pour laquelle je voulais faire cela est comme max_features dans RandomForest (https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) dans scikit-learn. Pour les paramètres qui ont trois types de méthodes de spécification, le type int, le type float et la catégorie, j'ai pensé que ce serait plus facile sans penser que Optuna les optimise tous ensemble, y compris la méthode à spécifier. y a-t-il.

La façon dont je pensais à l'origine

J'ai pensé qu'il serait préférable de suggérer en deux étapes, en se référant à "Branches et boucles" sur https://optuna.readthedocs.io/en/latest/tutorial/configurations.html.

Tout d'abord, demandez des suggestions par suggest_categorical, qui est l'une des trois catégories, float, int et category.

Ensuite, en fonction du résultat de la proposition, essayez de modifier la suggestion à appeler comme suit.

Je l'ai essayé.

L'erreur suivante apparaît pendant l'essai et se termine.

cannot set different distribution kind to the same parameter name.

Considération

L'optimisation bayésienne suppose une distribution des paramètres, il serait donc peu pratique de donner des distributions différentes aux mêmes paramètres. Donc, en conclusion, il semble qu'il n'y ait pas d'autre choix que d'effectuer autant de processus de réglage de paramètres qu'il y a de types de méthodes spécifiées.

Recommended Posts

L'histoire lorsque différentes distributions sont spécifiées pour le même paramètre dans Optuna
Comment activer l'instruction for lorsqu'il existe plusieurs valeurs pour une clé dans le dictionnaire
Une histoire à laquelle j'étais accro en spécifiant nil comme argument de fonction dans Go
Assurez-vous que tous les éléments de la liste sont les mêmes en Python
Comportement lorsque plusieurs serveurs sont spécifiés dans les serveurs de noms de dnspython
Comportement dans chaque langue lorsque les collouts sont réutilisés avec for
Si vous êtes novice en programmation, pourquoi ne pas créer un "jeu" pour le moment? L'histoire
L'histoire selon laquelle le comportement d'héritage est assez différent dans chaque langue