Combiner des modèles d'apprentissage automatique

20

Je suis un peu nouveau dans le datamining / machine learning / etc. et j'ai lu quelques façons de combiner plusieurs modèles et exécutions du même modèle pour améliorer les prévisions.

Mon impression de la lecture de quelques articles (qui sont souvent intéressants et excellents sur la théorie et les lettres grecques mais courtes sur le code et les exemples réels) est que c'est censé se passer comme ceci:

Je prends un modèle ( knn, RF, etc.) et d' obtenir une liste des classificateurs entre 0 et 1. Ma question est de savoir comment COMBINONS chacune de ces listes de classificateurs? Dois-je exécuter les mêmes modèles sur mon ensemble d'entraînement afin que le nombre de colonnes entrant dans le modèle final soit le même ou y a-t-il une autre astuce?

Ce serait formidable si des suggestions / exemples incluaient du code R.

REMARQUE: il s'agit d'un ensemble de données avec 100 000 lignes dans l'ensemble d'apprentissage et 70 000 dans l'ensemble de test et 10 colonnes.

screechOwl
la source

Réponses:

21

Il se résume en fait à l'une des techniques "3B": ensachage, boosting ou mélange.

Dans l'ensachage, vous entraînez de nombreux classificateurs sur différents sous-ensembles d'objets et combinez les réponses en moyenne pour la régression et votez pour la classification (il existe d'autres options pour les situations plus complexes, mais je vais les ignorer). La proportion / variance des votes peut être interprétée comme une approximation d'erreur puisque les classificateurs individuels sont généralement considérés comme indépendants. RF est en fait un ensemble d'ensachage.

Le boosting est une famille de méthodes plus large, mais leur principal objectif est que vous construisiez le classificateur suivant sur les résidus du premier, de cette façon (en théorie) augmentant progressivement la précision en mettant en évidence des interactions de plus en plus subtiles. Les prédictions sont donc généralement combinées en les additionnant, quelque chose comme le calcul d'une valeur d'une fonction en x en additionnant les valeurs des éléments de sa série de Taylor pour x.
Les versions les plus populaires sont (Stochastic) Gradient Boosting (avec de belles bases mathématiques) et AdaBoost (bien connu, en fait un cas spécifique de GB). D'un point de vue holistique, l'arbre de décision stimule les classificateurs pivot triviaux.

Le mélange est une idée d'imbrication de classificateurs, c'est-à-dire d'exécuter un classificateur sur un système d'information fait de prédictions d'autres classificateurs. Il s'agit donc d'une méthode très variable et certainement pas d'un algorithme défini; peut nécessiter beaucoup d'objets (dans la plupart des cas, le classificateur "blender" doit être formé sur un ensemble d'objets qui n'ont pas été utilisés pour construire les classificateurs partiels afin d'éviter une surcharge embarrassante).
Les prédictions des classificateurs partiels sont évidemment combinées en les fusionnant dans un système d'information qui est prédit par le mélangeur.


la source
7

L'expression «combinaison de modèles» est vague, mais je suppose que vous posez des questions sur les méthodes d'apprentissage d'ensemble. La meilleure référence pour en savoir plus est peut-être les articles de Rich Caruana:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

Il n'y a pas de code réel dans cet article, mais l'algorithme est clairement décrit, donc vous ne devriez pas avoir de problème à le coder dans la langue que vous préférez.

user765195
la source
2

Après avoir regardé un peu avec l'aide des réponses ci-dessus, j'ai réalisé quel était mon problème. J'avais essayé d'utiliser les prédictions d'autres modèles dans le même modèle que celui utilisé pour les prédire. En d'autres termes, si j'avais 5 variables lors de l'exécution du kNNmodèle, j'ajouterais une nouvelle variable avec les prédictions du kNNmodèle et créerais un modèle avec 6 variables lorsque j'exécuterais le modèle Forest aléatoire. J'ai trouvé qu'à la place, les résultats des modèles devraient être segmentés et exécutés en tant que modèle distinct. Donc , je crée des prédictions de différents modèles ( knn, RF,svd , etc.) puis exécutez un modèle combinant séparé / mélange / empilement en utilisant seulement les prédictions que les variables et les classifications comme quoi prévoir.

Je pense que certains de mes problèmes étaient qu'en combinant les prédictions avec les autres variables, il y avait peut-être un surajustement ou une multicolinéarité, mais je ne suis pas certain. Quelqu'un d'autre pourrait peut-être mieux peser ce que je faisais mal. Merci à tous pour leur aide.

screechOwl
la source