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)
machine-learning
scikit-learn
PeterLai
la source
la source
Réponses:
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.
la source
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é.
la source