Ist der Zufallszustand ein zu stimmender Parameter?

9

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) ein Protokoll des Entscheidungsbaums in sklearn

PeterLai
quelle
Mit moderner Rechenleistung ist es möglich, einen Startwert zu identifizieren, der ein Randfallergebnis liefert. Angenommen, Sie sind Forscher und haben ein Experiment durchgeführt, aber Ihre Ergebnisse funktionieren nicht so, wie Sie es möchten. Es wäre ziemlich einfach, Ihr Experiment über Millionen von Samen durchzuführen, um zu sehen, welche die Geschichte erzählen, nach der Sie suchen. Am besten haben Sie einen festen Samen, den Sie immer verwenden. Hält dich ehrlich!
Brandon Bertelsen

Antworten:

5

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.

Daniel López
quelle
0

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.

Janzen LIU
quelle
1
Ich verstehe die Frage nicht und ich verstehe diese Antwort nicht.
Michael R. Chernick
Die Frage ist, was ist die Verwendung von random_state in Ihrem Fall? Wird es als Startwert verwendet, um Zufallszahlen zu generieren?
Janzen LIU