2017-07-12 1 views
2

Ich arbeite mit gestapelten Lernenden. Laut der Dokumentation für H2OStackedEnsembleEstimator ermöglicht die Python-Implementierung von h2o die einfache Erstellung von Ensemble-Modellen. Dies beschränkt sich jedoch auf das Erstellen von Basisklassifikatoren mit den gleichen zugrundeliegenden Trainingsdaten. Ich habe zeitbasierte Funktionen, deren Mindestdatum je nach Datenquelle variiert. Jede Datenprobe ist ein Zeitpunkt. Um so viele Daten wie möglich auszunutzen, teile ich die Features bis zu zwei Gruppen auf (je nach Relevanz und Mindestdatum) und trainiere zwei getrennte Modelle. Ich möchte diese Modelle kombinieren, aber H2OStackedEnsemessEstimator erfordert die gleichen Merkmale.Gibt es eine Python-Entsprechung für Rs h2o.stack?

Gemäß this post über die gestapelte Ensemble-Implementierung von R gibt es eine Option, nur den Metalearning-Schritt auszuführen, der nur die k-fachen Kreuzvalidierungsvorhersagen für jedes Basismodell und den wahren Zielwert erfordert.

Für den Fall, dass es jemandes Meinung ... für mein besonderes Problem, ich merke, ich werde auf ein Problem mit dem Metalearning-Schritt mit dieser Diskrepanz in Mindestdatum stoßen, und ich habe Ideen, dies zu umgehen.

Antwort

2

Für den Super Learner Algorithmus (Stapeln so, dass Sie die Kreuz-validierten vorhergesagten Werte von den Basislernern als Trainingsdaten für den Metalearner verwenden), die einzige Voraussetzung ist, dass die Basis Lernenden in den gleichen Reihen trainiert werden müssen Spalten können unterschiedlich sein. Es gibt eine Variante des Stapelns, nennen wir es "Holdout Stacking", wo Sie die Basismodelle auf einem Holdout-Datensatz bewerten und diese Vorhersagen verwenden, um stattdessen den Metalearner zu trainieren. In diesem Fall können Sie für die Basislernenden völlig unterschiedliche Trainingsframes verwenden.

Die aktuelle Stacked Ensembles Implementierung in H2O hat eine Einschränkung, dass der gesamte Trainingsrahmen (Zeilen und Spalten) für die Basislerner gleich sein muss, aber wir will relax that requirement in der Zukunft (da es nicht wirklich erforderlich ist).

Bevor wir Stacked Ensembles in das Java-Backend von H2O verschoben haben, habe ich eine einfache Referenzimplementierung in Python programmiert, die nur das Python-Modul h2o verwendet. Vorläufig könnten Sie diesen Code wahrscheinlich relativ einfach ändern, um den Typ von Stacked Ensemble zu erhalten, nach dem Sie suchen. Es ist in einem Kern here.

+0

Ich werde es versuchen. Vielen Dank! – joceratops

Verwandte Themen