Wie ordne ich neueren Beobachtungen in R mehr Gewicht zu?
Ich nehme dies als häufig gestellte Frage oder Wunsch an, aber es fällt mir schwer, genau herauszufinden, wie ich dies umsetzen soll. Ich habe versucht, viel danach zu suchen, aber ich kann kein gutes praktisches Beispiel finden.
In meinem Beispiel hätte ich im Laufe der Zeit einen großen Datensatz. Ich möchte sagen, dass Sie eine Art exponentielle Gewichtung der neueren Datenzeilen anwenden. Ich hätte also eine Art Exponentialfunktion, die besagt, dass Beobachtungen im Jahr 2015 für das Training des Modells ___ wichtiger sind als Beobachtungen im Jahr 2012.
Meine Datensatzvariablen enthalten eine Mischung aus kategorialen und numerischen Werten, und mein Ziel ist ein numerischer Wert - falls dies wichtig ist.
Ich möchte dies mit Modellen wie GBM / Random Forest testen / ausprobieren, idealerweise im CARET-Paket.
Update-Frage
Ich freue mich über die unten stehende Antwort, wie das Gewicht um den Datumsabstand zwischen zwei Punkten exponentiell verringert werden kann.
Wie genau berücksichtigen die Gewichte beim Training dieses Modells in Caret? Der Gewichtswert in jeder der Trainingsreihen ist der Abstand zwischen einem Punkt in der Zukunft und dem Zeitpunkt, zu dem dieser Punkt historisch aufgetreten ist.
Kommen die Gewichte nur während der Vorhersage ins Spiel? Denn wenn sie während des Trainings ins Spiel kommen, würde das nicht alle möglichen Probleme verursachen, da verschiedene Kreuzfalten unterschiedliche Gewichte haben und versuchen, etwas vorherzusagen, das tatsächlich zu einem Zeitpunkt davor vorliegen könnte?
quelle
Antworten:
Wie ordne ich neueren Beobachtungen in R mehr Gewicht zu?
Ich denke, Sie haben mit jeder Beobachtung einen Zeitstempel verknüpft. Sie können eine Variable berechnen
timeElapsed = modelingTime - observationTime
. Jetzt wenden Sie eine einfache Exponentialfunktion anW=K*exp(-timeElapsed/T)
, wobeiK
eine Skalierungskonstante undT
die Zeitkonstante für die Abklingfunktion ist.W
arbeitet als Fallgewicht.Nach bestem meines Wissens viele Funktion in
caret
erlaubenweight
als Parameter, die eine Spalte von Fallgewichte ist zu erbringenden Beobachtung (also mit gleicher Länge wie #rows) zu entsprechen.quelle
caret::train
istweights
.Die Daten (nicht der Analyst, der Annahmen trifft - Vermutungen) können häufig die Form des Gewichtungsschemas vorschlagen. Dies erfolgt über GLS, wobei die geeigneten Gewichte für das Modell der gewichteten kleinsten Quadrate aus den statistisch signifikanten Unterschieden in der Fehlervarianz erhalten werden. Werfen Sie einen Blick auf die Erkennung von Änderungen und Ausreißern mithilfe von ARIMA (Tsay-Verfahren) und hier auf http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html . Wenn Sie Daten veröffentlichen möchten, tun Sie dies bitte hier. Ich werde versuchen, Ihnen weiter zu helfen, da ich routinemäßig auf Software zugreifen kann, die Sie aufklären könnte.
Es gibt eine R-Version der von mir verwendeten Software.
Sie könnten sich ansehen , wie Kontrollvariablen in eine Interventionsanalyse mit ARIMA einbezogen werden. Es gibt ein Beispiel dafür, wie die Gewichte identifiziert und verwendet werden, um die Fehlervarianz zu stabilisieren, wodurch bestimmte frühere Werte effektiv geglaubt / nicht geglaubt / abgezinst / gewichtet / vertraut werden.
quelle