Ein Problem, das in meinen Experimenten häufig auftritt, ist die unterschiedliche Leistung des Modells, wenn der Zufallsstatus für den Algorithmus geändert wird. Die Frage ist also einfach: Soll ich den Zufallszustand als Hyperparameter verwenden? Warum ist das so? Wenn mein Modell andere Modelle mit unterschiedlichen Zufallszuständen übertrifft, sollte ich das Modell als überpassend für einen bestimmten Zufallszustand betrachten?
ein Protokoll des Entscheidungsbaums in sklearn: (random_rate sollte zufälliger Zustand sein)
machine-learning
scikit-learn
PeterLai
quelle
quelle
Antworten:
Nein, das solltest du nicht.
Hyperparameter sind Variablen, die einen allgemeinen Aspekt des Verhaltens eines Algorithmus steuern. Im Gegensatz zu regulären Parametern können Hyperparameter vom Algorithmus selbst nicht automatisch aus Trainingsdaten gelernt werden. Aus diesem Grund wählt ein erfahrener Benutzer einen geeigneten Wert basierend auf seiner Intuition, seinem Domänenwissen und der semantischen Bedeutung des Hyperparameters (falls vorhanden) aus. Alternativ könnte ein Validierungssatz verwendet werden, um eine Hyperparameterauswahl durchzuführen. Hier versuchen wir, einen optimalen Hyperparameterwert für die gesamte Datenpopulation zu finden, indem wir verschiedene Kandidatenwerte an einer Stichprobe der Population (dem Validierungssatz) testen.
In Bezug auf den Zufallszustand wird er in vielen randomisierten Algorithmen in sklearn verwendet, um den zufälligen Startwert zu bestimmen, der an den Pseudozufallszahlengenerator übergeben wird. Daher wird kein Aspekt des Verhaltens des Algorithmus berücksichtigt. Zufälligerweise entsprechen zufällige Zustandswerte, die im Validierungssatz gut abschneiden, nicht denen, die in einem neuen, unsichtbaren Testsatz gut abschneiden würden. Abhängig vom Algorithmus können Sie tatsächlich völlig unterschiedliche Ergebnisse sehen, wenn Sie nur die Reihenfolge der Trainingsmuster ändern.
Ich schlage vor, Sie wählen zufällig einen zufälligen Zustandswert aus und verwenden ihn für alle Ihre Experimente. Alternativ können Sie die durchschnittliche Genauigkeit Ihrer Modelle über einen zufälligen Satz zufälliger Zustände berechnen.
Versuchen Sie auf keinen Fall, zufällige Zustände zu optimieren, da dies mit Sicherheit zu optimistisch voreingenommenen Leistungsmaßstäben führt.
quelle
Was bewirkt der random_state? Aufteilung von Trainings- und Validierungssätzen, oder was?
Wenn es der erste Fall ist, können Sie versuchen, Unterschiede zwischen dem Aufteilungsschema unter zwei zufälligen Zuständen zu finden, und dies könnte Ihnen eine gewisse Intuition in Ihrem Modell vermitteln (ich meine, Sie können untersuchen, warum es funktioniert, das Modell anhand einiger Daten zu trainieren). und verwenden Sie das trainierte Modell, um einige Validierungsdaten vorherzusagen, funktioniert jedoch nicht, um das Modell für andere Daten zu trainieren und andere Validierungsdaten vorherzusagen. Sind sie unterschiedlich verteilt?) Eine solche Analyse kann Ihnen eine gewisse Intuition vermitteln.
Übrigens bin ich auch auf dieses Problem gestoßen :) und verstehe es einfach nicht. Vielleicht können wir gemeinsam daran arbeiten, dies zu untersuchen.
Prost.
quelle