Stapeln / Zusammenstellen von Modellen mit Caret

21

Ich finde es oft so, dass ich mit caretR mehrere verschiedene Vorhersagemodelle trainiere. Ich trainiere sie alle auf den gleichen Kreuzvalidierungsfalten mit caret::: createFoldsund wähle dann das beste Modell basierend auf kreuzvalidierten Fehlern.

Die Medianvorhersage mehrerer Modelle übertrifft jedoch häufig das beste Einzelmodell in einem unabhängigen Testsatz. Ich denke darüber nach, einige Funktionen zum Stapeln / Zusammensetzen von Caret-Modellen zu schreiben, die mit den gleichen Kreuzvalidierungsfalten trainiert wurden, zum Beispiel indem Medianvorhersagen von jedem Modell auf jeder Falte genommen werden oder indem ein "Metamodell" trainiert wird.

Dies kann natürlich eine äußere Kreuzvalidierungsschleife erfordern. Kennt jemand irgendwelche existierenden Pakete / Open-Source-Code zum Zusammenstellen von Caret-Modellen (und möglicherweise zum Kreuzvalidieren dieser Ensembles)?

Zach
quelle

Antworten:

8

Was Sie suchen, nennt sich "Modell-Ensemble". Ein einfaches Einführungs-Tutorial mit R-Code finden Sie hier: http://viksalgorithms.blogspot.jp/2012/01/intro-to-ensemble-learning-in-r.html

Thiakx
quelle
3
Nicht pingelig zu sein, sondern "Ensembling" steht im Titel meines Beitrags. Ich suche ganz konkret ein R-Paket, um beliebige Modelle zusammenzustellen, die es anscheinend nicht zu geben scheint. Vielen Dank für den Code. Vielleicht schreibe ich mein eigenes Paket!
Zach
1

Ich bin mir nicht ganz sicher, wonach Sie suchen, aber das könnte helfen: http://www.jstatsoft.org/v28/i05/paper

So verwenden Sie mehrere Modelle in Caret. Der Teil, der Sie interessieren könnte, ist Abschnitt 5 auf Seite. 13.

kreischeule
quelle
Was ich suche, ist ein Paket, das eine Liste von Caret-Objekten als Eingabe verwendet und dann den Median, den Mittelwert oder den gewichteten Mittelwert ihrer Vorhersagen ausgibt. Zu den erweiterten Funktionen gehört möglicherweise die Optimierung der Gewichte durch Validierung durch verschachtelte Überkreuzungen.
Zach