Classement dans H2O AutoML

Aug 28 2020

Je viens de commencer à apprendre à utiliser H2O Auto ML et j'essaye un modèle de classification binaire.

J'essaie de comprendre pourquoi le classement du modèle change à chaque course.

Les 5 meilleurs modèles restent dans le top 5, mais les modèles passent légèrement à un rang supérieur ou inférieur.

Alors que DRF a été classé 2e une fois, l'autre fois, il a ratissé 3e.

Il y a deux raisons pour lesquelles je peux spéculer qui provoquent des changements.

  1. La graine de l'algorithme change à chaque fois
  2. Il n'y a pas de cadre de tableau de classement attribué
  3. Les RF impliquent un échantillonnage aléatoire dans le cadre du processus résultant en différents arbres construits à chaque fois
  4. Le tableau de classement ne changera pas, un autre changement de données / code est responsable du changement.

Pourriez-vous s'il vous plaît m'aider à mieux comprendre cela.

Réponses

2 ErinLeDell Aug 31 2020 at 04:55

Il semble que vous ne posez pas de graine, vous devriez donc commencer par là. Pour que les algorithmes avec un caractère aléatoire inhérent (par exemple XGBoost, GBM, Random Forest) produisent la même réponse à chaque fois, une graine aléatoire doit être définie (au minimum). Dans H2O AutoML, il y a un seul seedargument (qui est redirigé vers tous les algorithmes individuels) et si vous le définissez à la même valeur à chaque fois, la plupart des modèles seront les mêmes lors d'exécutions répétées. Par défaut, AutoML effectuera également une validation croisée avec des plis aléatoires, ce qui garantit également que les mêmes plis sont utilisés à chaque fois.

Il y a quelques mises en garde - H2O Deep Learning n'est pas reproductible (par défaut) même si vous définissez une valeur de départ, donc ces modèles changeront toujours. Puisque l'Ensemble Stacked "Tous les Modèles" utilise des modèles de Deep Learning en plus d'un tas d'autres modèles, l'ensemble final sera également non reproductible.

Enfin, vous devez utiliser au max_modelslieu de max_runtime_secspour contrôler la durée d'exécution d'AutoML, sinon vous risquez d'obtenir un nombre différent de modèles dans le classement (et dans l'ensemble empilé All Models) lors des exécutions suivantes.