Neuere Beobachtungen in der Regression stärker gewichten

9

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?

user3788557
quelle
3
Closevote, weil der Fragesteller die statistischen Fragen klären muss. Mir ist nicht klar, ob GBN oder RF hier angemessen sind. Wir
schlagen vor,
in Ordnung. Ich werde bald ein Beispiel hinzufügen. Ich sehe diese Art von Frage nur im ganzen Internet, aber keine konkreten Beispiele, wie man sie anwendet / löst.
user3788557

Antworten:

5

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 an W=K*exp(-timeElapsed/T), wobei Keine Skalierungskonstante und Tdie Zeitkonstante für die Abklingfunktion ist. Warbeitet als Fallgewicht.

Nach bestem meines Wissens viele Funktion in careterlauben weightals Parameter, die eine Spalte von Fallgewichte ist zu erbringenden Beobachtung (also mit gleicher Länge wie #rows) zu entsprechen.

Ujjwal Kumar
quelle
1
Die Funktion in caret::trainist weights.
Timcdlucas
Danke Ujjwal - aber wie lautet die Methode zur Bestimmung von 'K' in Ihrer Gleichung? Richtlinien oder Best Practices? Was meinen Sie mit der "Zeitspanne" für die Abklingfunktion?
user3788557
K ist nur eine Skalierungskonstante und hat keinen großen Einfluss auf die Modellergebnisse. Sie können einen bestimmten Wert festlegen, sodass der Bereich der Fallgewichtswerte möglicherweise in der Nähe des Bereichs 0-1 liegt. In Bezug auf "Zeitperiode" wird es auch als Zeitkonstante für eine exponentielle Abklingfunktion 1. Ordnung ODER mittlere Lebensdauer bezeichnet. Sie können es auf Wikipedia nachschlagen.
Ujjwal Kumar
Bitte beachten Sie mein Update zu meinem Beitrag. Funktioniert das während des Trainings richtig? Wird das Trainingsmodell eine Verzerrung aufweisen, da die Gewichte nur angewendet werden können, wenn sie gegen das Testset verwendet werden? Wenn das Trainingsset zufällig gemischt wird, kann es schlecht sein, wenn höhere Gewichte verwendet werden, um Preise in der Vergangenheit oder für einen Zeitraum vorherzusagen, der nicht in der Nähe liegt.
user3788557
Ohne Fallgewichte würde Ihr Modelltraining sowohl alten als auch neuen Daten die gleiche Bedeutung beimessen, aber mit den vorgeschlagenen Fallgewichten werden neuere Daten wichtiger. In diesem Sinne ist es auf neuere Beobachtungen ausgerichtet, aber das heißt was du wolltest. Ich verstehe nicht, warum "Gewichte nur für Testfälle erlaubt sein können" . Wie würden höhere Gewichte für ältere Werte verwendet, wenn der Trainingssatz zufällig gemischt wird? Beim Modellieren wird die Zeit für alle Trainingsfälle gleich gehalten. PS-Fallgewichte gelten nicht nur für die Verwendung eines Modells, sondern nur für die Einarbeitungszeit.
Ujjwal Kumar
0

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.

IrishStat
quelle