L'état aléatoire est-il un paramètre à régler?


9

Un problème qui se produit assez souvent dans mes expériences est que le modèle varie dans les performances lorsque l'état aléatoire de l'algorithme est modifié. La question est donc simple, dois-je prendre un état aléatoire comme hyperparamètre? Pourquoi donc? Si mon modèle surpasse les autres avec un état aléatoire différent, dois-je considérer que le modèle est trop adapté à un état aléatoire particulier?

un journal de l'arbre de décision dans sklearn: (random_rate devrait être un état aléatoire) un journal de l'arbre de décision dans sklearn


Avec la puissance de calcul moderne, il est possible d'identifier une graine qui fournit un résultat de cas de bord. Disons que vous êtes chercheur et que vous avez effectué une expérience, mais vos résultats ne fonctionnent pas comme vous le souhaitez. Il serait assez facile d'exécuter votre expérience sur des millions de graines pour voir lesquelles racontent l'histoire que vous recherchez. Mieux vaut avoir une graine fixe que vous utilisez toujours. Vous garde honnête!
Brandon Bertelsen

Réponses:


6

Non tu ne devrais pas.

Les hyperparamètres sont des variables qui contrôlent certains aspects de haut niveau du comportement d'un algorithme. Contrairement aux paramètres normaux, les hyperparamètres ne peuvent pas être appris automatiquement à partir des données d'entraînement par l'algorithme lui-même. Pour cette raison, un utilisateur expérimenté sélectionnera une valeur appropriée en fonction de son intuition, de ses connaissances du domaine et de la signification sémantique de l'hyperparamètre (le cas échéant). Alternativement, on pourrait utiliser un ensemble de validation pour effectuer une sélection d'hyperparamètre. Ici, nous essayons de trouver une valeur d'hyperparamètre optimale pour l'ensemble de la population de données en testant différentes valeurs candidates sur un échantillon de la population (l'ensemble de validation).

Concernant l'état aléatoire, il est utilisé dans de nombreux algorithmes randomisés dans sklearn pour déterminer la graine aléatoire passée au générateur de nombres pseudo-aléatoires. Par conséquent, il n'observe aucun aspect du comportement de l'algorithme. En conséquence, les valeurs d'état aléatoires qui fonctionnaient bien dans l'ensemble de validation ne correspondent pas à celles qui fonctionneraient bien dans un nouvel ensemble de test invisible. En effet, selon l'algorithme, vous pouvez voir des résultats complètement différents en changeant simplement l'ordre des échantillons d'apprentissage.

Je vous suggère de sélectionner une valeur d'état aléatoire au hasard et de l'utiliser pour toutes vos expériences. Vous pouvez également prendre la précision moyenne de vos modèles sur un ensemble aléatoire d'états aléatoires.

Dans tous les cas, n'essayez pas d'optimiser des états aléatoires, cela produira très certainement des mesures de performance biaisées de manière optimiste.


0

Qu'est-ce que l'effet random_state? fractionnement des ensembles de formation et de validation, ou quoi?

Si c'est le premier cas, je pense que vous pouvez essayer de trouver des différences entre le schéma de fractionnement sous deux états aléatoires, et cela pourrait vous donner une certaine intuition dans votre modèle (je veux dire, vous pouvez explorer pourquoi cela fonctionne pour former le modèle sur certaines données, et utiliser le modèle entraîné pour prédire certaines données de validation, mais ne fonctionne pas pour former le modèle sur d'autres données et prédire d'autres données de validation. Sont-elles distribuées différemment?) Une telle analyse peut vous donner une certaine intuition.

Et au fait, j'ai aussi rencontré ce problème :), et je ne le comprends tout simplement pas. Peut-être que nous pouvons travailler ensemble sur l'enquête.

À votre santé.


1
Je ne comprends pas la question et je ne comprends pas cette réponse.
Michael R. Chernick

La question, quelle est l'utilisation de random_state dans votre cas? Est-il utilisé comme graine pour générer un nombre aléatoire?
Janzen LIU
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.