[PYTHON] Die Geschichte, wenn in Optuna unterschiedliche Verteilungen für denselben Parameter angegeben werden

Einführung

Optuna ist eine Bibliothek, die Hyperparameter durch Bayes'sche Optimierung optimiert. Dieser Artikel ist ein Hinweis auf einen Fehler, der beim Versuch aufgetreten ist, mit Optuna unterschiedliche Verteilungen für dieselben Parameter anzugeben.

Der Grund, warum ich dies tun wollte, ist wie max_features in RandomForest (https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) in scikit-learn. Für Parameter mit drei Arten von Spezifikationsmethoden, int type, float type und category, dachte ich, dass es einfacher wäre, ohne darüber nachzudenken, wenn Optuna sie alle zusammen optimieren würde, einschließlich der anzugebenden Methode. Gibt es.

So wie ich ursprünglich dachte

Ich dachte, es wäre besser, in zwei Schritten unter Bezugnahme auf "Zweige und Schleifen" unter https://optuna.readthedocs.io/en/latest/tutorial/configurations.html vorzuschlagen.

Bitten Sie zunächst um Vorschläge von suggest_categorical, einer der drei Kategorien float, int und category.

Versuchen Sie anschließend, abhängig vom Ergebnis des Vorschlags, den aufzurufenden Vorschlag wie folgt zu ändern.

Ich versuchte es.

Der folgende Fehler wird während des Tests angezeigt und endet.

cannot set different distribution kind to the same parameter name.

Erwägung

Die Bayes'sche Optimierung setzt eine Verteilung von Parametern voraus, so dass es unpraktisch wäre, denselben Parametern unterschiedliche Verteilungen zuzuweisen. Zusammenfassend scheint es also keine andere Wahl zu geben, als so viele Parameteroptimierungsprozesse durchzuführen, wie es Typen spezifizierter Methoden gibt.

Recommended Posts

Die Geschichte, wenn in Optuna unterschiedliche Verteilungen für denselben Parameter angegeben werden
So drehen Sie die for-Anweisung, wenn das Wörterbuch mehrere Werte für einen Schlüssel enthält
Eine Geschichte, nach der ich süchtig war, als ich in Go nil als Funktionsargument angab
Stellen Sie sicher, dass alle Elemente in der Liste in Python identisch sind
Verhalten, wenn mehrere Server in Nameservern von dnspython angegeben sind
Verhalten in jeder Sprache, wenn Collouts mit for wiederverwendet werden
Wenn Sie neu in der Programmierung sind, warum machen Sie nicht vorerst ein "Spiel"? Die Geschichte
Die Geschichte, dass Vererbungsverhalten in jeder Sprache sehr unterschiedlich ist