Evalml: AutoML : utilisez une division de CV distincte pour l'assemblage

Créé le 26 janv. 2021  ·  4Commentaires  ·  Source: alteryx/evalml

#1732 met à jour notre pipeline d'assemblage empilé pour utiliser le même séparateur de données que celui utilisé dans AutoML . Nous avons continué avec #1732 car nous pensions qu'il s'agissait toujours d'une amélioration par rapport à notre approche actuelle (scikit-learn default).

Ce problème suit les mises à jour à long terme que nous pouvons souhaiter apporter à notre séparateur de données pour l'empilement dans AutoML.


Mise à jour : tout en continuant à mettre à jour la #1732, nous avons rencontré une énigme avec l'interaction entre l'empilement et AutoML qui nous a amenés à déterminer si c'était vraiment une bonne idée d'utiliser la même division de données pour l'ensemble d'empilement que celle que nous utilisons dans AutoML. Nous avons décidé non, et comme Raymond l'avait souligné, nous voulons probablement utiliser un CV séparé pour notre ensemble. ( @dsherry a également mentionné une bonne pépite d'informations selon laquelle l'utilisation de l'assemblage permet au modèle de mettre moins d'importance excessive sur les modèles les plus complexes, donc CV aide probablement avec cela - veuillez me corriger si j'ai mal paraphrasé 😂 ).

Plutôt que de continuer ce travail, nous devrions utiliser ce problème pour discuter de la mise à jour d'AutoML pour l'empilement : plus précisément, nous devrions créer une division distincte pour le CV pour l'assemblage empilé. Ce serait similaire à ce que nous avons actuellement en place pour le réglage de seuil binaire.

enhancement performance

Commentaire le plus utile

Plan : si l'empilement est activé, nous allons créer une division distincte qui peut être transmise à l'assemblage empilé pour le CV

Il pourrait être intéressant d'envisager de prendre en charge l'utilisation des prédictions hors échantillon (validation séparée du CV d'origine) lorsque les données sont transmises à l'empilement. Cependant, je suggère que nous commencions par l'approche la plus simple consistant à créer simplement une division distincte si l'empilement est activé.

RE notre discussion, quelques preuves à l'appui des raisons pour lesquelles nous devrions retenir une division distincte que l'assemblage empilé peut utiliser pour effectuer un CV :

  • "En utilisant les [prédictions] à validation croisée, l'empilement évite de donner un poids injustement élevé aux modèles avec une complexité plus élevée." Surapprentissage AKA
  • « L'approche la plus courante pour préparer l'ensemble de données d'entraînement pour le méta-modèle est la validation croisée k-fold des modèles de base, où les prédictions hors pli sont utilisées comme base pour l'ensemble de données d'entraînement pour le méta-modèle Les données d'apprentissage pour le méta-modèle peuvent également inclure les entrées des modèles de base, par exemple les éléments d'entrée des données d'apprentissage. Cela peut fournir un contexte supplémentaire au méta-modèle sur la meilleure façon de combiner les prédictions du méta-modèle. Une fois que l'ensemble de données d'entraînement est préparé pour le méta-modèle, le méta-modèle peut être entraîné isolément sur cet ensemble de données, et les modèles de base peuvent être entraînés sur l'ensemble de données d'entraînement d'origine. - article de blog
  • "Il est important que le méta-apprenant soit formé sur un ensemble de données distinct des exemples utilisés pour former les modèles de niveau 0 afin d'éviter le surapprentissage." -- un autre article de blog
  • Résumé de l'article original qui explique comment l'assemblage empilé peut être considéré comme une généralisation de la validation croisée
  • J'ai aussi trouvé que c'était une bonne lecture.

@rpeck Pour info , après quelques filatures, nous suivons votre suggestion

Tous les 4 commentaires

Plan : si l'empilement est activé, nous allons créer une division distincte qui peut être transmise à l'assemblage empilé pour le CV

Il pourrait être intéressant d'envisager de prendre en charge l'utilisation des prédictions hors échantillon (validation séparée du CV d'origine) lorsque les données sont transmises à l'empilement. Cependant, je suggère que nous commencions par l'approche la plus simple consistant à créer simplement une division distincte si l'empilement est activé.

RE notre discussion, quelques preuves à l'appui des raisons pour lesquelles nous devrions retenir une division distincte que l'assemblage empilé peut utiliser pour effectuer un CV :

  • "En utilisant les [prédictions] à validation croisée, l'empilement évite de donner un poids injustement élevé aux modèles avec une complexité plus élevée." Surapprentissage AKA
  • « L'approche la plus courante pour préparer l'ensemble de données d'entraînement pour le méta-modèle est la validation croisée k-fold des modèles de base, où les prédictions hors pli sont utilisées comme base pour l'ensemble de données d'entraînement pour le méta-modèle Les données d'apprentissage pour le méta-modèle peuvent également inclure les entrées des modèles de base, par exemple les éléments d'entrée des données d'apprentissage. Cela peut fournir un contexte supplémentaire au méta-modèle sur la meilleure façon de combiner les prédictions du méta-modèle. Une fois que l'ensemble de données d'entraînement est préparé pour le méta-modèle, le méta-modèle peut être entraîné isolément sur cet ensemble de données, et les modèles de base peuvent être entraînés sur l'ensemble de données d'entraînement d'origine. - article de blog
  • "Il est important que le méta-apprenant soit formé sur un ensemble de données distinct des exemples utilisés pour former les modèles de niveau 0 afin d'éviter le surapprentissage." -- un autre article de blog
  • Résumé de l'article original qui explique comment l'assemblage empilé peut être considéré comme une généralisation de la validation croisée
  • J'ai aussi trouvé que c'était une bonne lecture.

@rpeck Pour info , après quelques filatures, nous suivons votre suggestion

@dsherry @rpeck @angela97lin J'ai commencé à examiner ce problème, mais il semble que les classes StackedClassifier et StackedRegressor sklearn utilisent une validation croisée interne pendant la formation du modèle afin d'éviter le surapprentissage. Cela semble être le même problème que nous essayons de résoudre avec ce problème, il semble donc qu'il devrait être résolu. Je ne pense pas que nous aurons besoin de faire un pli de CV séparé pour la formation/validation des méthodes d'assemblage empilé, mais qu'en pensez-vous tous ?

image

Après discussion avec @dsherry , voici l'idée que nous voulons poursuivre

Plan discuté avec @bchen1116 : ce problème suit :

  • Créer une division distincte pour la formation du métaapprentissage pour les pipelines d'ensemble
  • Continuer à utiliser sklearn impl pour l'assemblage empilé

Amélioration des performances séparée : meilleure prise en charge des petites données. Ne créez pas de division séparée pour l'assemblage. Utilisez des preds de pipeline hors échantillon à partir du CV normal (de tous les plis CV) pour former l'ensembler. #1898

Une autre amélioration de performance distincte : entraînez les pipelines et le métallearner sur différentes données. #1897

Cette page vous a été utile?
0 / 5 - 0 notes