Zeit-Serien - Daten-splitting und Modell Bewertung
Habe ich versucht die Maschine zu lernen, Vorhersage auf der Basis von Zeitreihen-Daten. In einer stackoverflow-Frage (createTimeSlices Funktion in der CARET-Paket in R) ist ein Beispiel für die Verwendung createTimeSlices cross-Validierung für das Modell Ausbildung und parameter-tuning:
library(caret)
library(ggplot2)
library(pls)
data(economics)
myTimeControl <- trainControl(method = "timeslice",
initialWindow = 36,
horizon = 12,
fixedWindow = TRUE)
plsFitTime <- train(unemploy ~ pce + pop + psavert,
data = economics,
method = "pls",
preProc = c("center", "scale"),
trControl = myTimeControl)
Mein Verständnis ist:
- Ich brauche, um split können Daten in Trainings-und test-set.
- Verwenden von Trainings-set für die Parameter-tuning.
- Bewerten, erhalten das Modell auf dem test-set (R2, RMSE, etc.)
Weil meine Daten ist Zeit-Serie, nehme ich an, dass ich nicht verwenden können, bootstraping für spliting Daten in Trainings-und test-set. So, meine Fragen sind: Bin ich richtig? Und Wenn ja - Wie zu verwenden createTimeSlices für Modell Bewertung?
Würde es helfen, wenn Sie definiert, was Sie bedeuten, von "model evaluation".
Ich habe bearbeitet Sie meine Frage. Vielleicht ist jetzt einfacher zu verstehen?
1. Paket 'pls' muss installiert werden 2. wenn Sie nur besorgt über die Reihenfolge der Proben (nicht den Monat oder das Jahr genau zu sein), könnten Sie geben Sie eine numerische ID und konnte Sie noch verwenden bootstrapping-3. warum nicht so etwas einfaches wie ein glm?
Ich habe bearbeitet Sie meine Frage. Vielleicht ist jetzt einfacher zu verstehen?
1. Paket 'pls' muss installiert werden 2. wenn Sie nur besorgt über die Reihenfolge der Proben (nicht den Monat oder das Jahr genau zu sein), könnten Sie geben Sie eine numerische ID und konnte Sie noch verwenden bootstrapping-3. warum nicht so etwas einfaches wie ein glm?
InformationsquelleAutor Jot eN | 2014-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass die ursprüngliche Frage, die Sie gebucht haben, kümmert sich um die timeSlicing, und Sie müssen nicht erstellen timeSlices mit der hand.
Aber hier ist, wie zu verwenden
createTimeSlices
für die Aufteilung der Daten auf und verwenden es für die Ausbildung und Prüfung eines Modells.Schritt 0: der Aufbau der Daten und der
trainControl
:(aus deiner Frage)Schritt 1: Erstellen der timeSlices für den index der Daten:
Dieser erstellt eine Liste der Ausbildung und Prüfung timeSlices.
Verständnis zu erleichtern, bin ich speichern Sie Sie in separaten Variablen:
Schritt 2: Training auf der ersten der
trainSlices
:Schritt 3: Prüfung auf der ersten der
trainSlices
:Schritt 4: Zeichnen:
Dann können Sie dies für alle Scheiben:
Wie bereits erwähnt, diese Art von timeSlicing ist getan, indem Sie Ihre ursprüngliche Funktion in einem Schritt:
Hoffe, das hilft!!
Richtig. Der Autor des Skripts auch sagt, dass Sie gehen in die Dokumentation zu verbessern, dieses in der nächsten Version.
Wirklich genial die Antwort - viel Dank, ich habe viel gelernt!
InformationsquelleAutor Shambho
Shambho Antwort liefert anständige Beispiel für die Verwendung der Cursor-Paket mit TimeSlices, allerdings kann es irreführend sein in Bezug auf die Modellierung Technik. Also, um nicht irrezuführen zukünftigen Leser, die wollen, verwenden Sie die Cursor-Paket für prädiktive Modellierung auf Zeit-Serie (und hier meine ich nicht autoregressive Modelle), möchte ich betonen, ein paar Dinge.
Das problem mit der Zeit-Serien Daten, die look-ahead-bias ist ganz einfach, wenn man nicht aufpasst. In diesem Fall, die Wirtschaft Datensatz ausgerichtet, Daten über die Wirtschafts-Berichterstattung Daten und nicht Ihre release-Datum, das ist nie der Fall in real live Anwendungen, (Wirtschafts-Daten, die Punkte haben unterschiedliche Zeitstempel). Daten zur Arbeitslosigkeit sind zwei Monate hinter den anderen Indikatoren in Bezug auf release-Datum, das wäre dann die Einführung einer Modell-bias in Shambho Beispiel.
Nächsten, dieses Beispiel ist nur eine deskriptive Statistik und nicht die Prognose (forecasting), weil die Daten, die wir prognostizieren wollen (unemploy) ist nicht verzögerte richtig. Es bloß die Züge ein Modell am besten erklären, die Unterschiede in der Arbeitslosigkeit (die auch in diesem Fall ist eine stationäre Zeitreihe erstellen alle Arten von Fragen, die im modelling-Prozess) basierend auf der Prädiktor-Variablen auf die gleiche wirtschaftliche Bericht Termine.
Schließlich die 12-Monats-Horizont in diesem Beispiel ist keine echte multi-Perioden-Prognose als Hyndman hat es in einem seiner Beispiele.
Hyndman auf cross-validation für die Zeit-Serie
InformationsquelleAutor P. Garnry
Tatsächlich, Sie können!
Erste, lassen Sie mich Ihnen ein wissenschaftlicher Artikel zum Thema.
In R:
Mithilfe der Paket -
caret
,createResample
können verwendet werden, um einfache bootstrap-samples undcreateFolds
können verwendet werden, um erzeugen balanced cross–Validierung Gruppierungen, die aus einer Reihe von Daten. So werden Sie wahrscheinlich verwenden wollencreateResample
. Hier ist ein Beispiel für die Verwendung:Die Werte, die Sie sehen in der
createResample
Funktion werden die Daten und die Anzahl der Partitionen zu erstellen, in diesem Fall 2. Sie können zusätzlich angeben, ob die Ergebnisse gespeichert werden sollen als eine Liste mitlist = TRUE
oderlist = FALSE
.Darüber hinaus
caret
enthält eine Funktion namenscreateTimeSlices
können, erstellen Sie die Indizes, die für diese Art der Aufteilung.Den drei Parametern, die für diese Art der Spaltung:
initialWindow
: die anfängliche Anzahl der aufeinander folgenden Werte in jedem training setzen samplehorizon
: Die Anzahl der aufeinander folgenden Werte in der test-set-BeispielfixedWindow
: Logisch: wenn FALSE, wird die Ausbildung beginnt mit dem ersten Beispiel und dem Trainings-set Größe variieren über die Daten teilt.Verwendung:
Quellen:
http://caret.r-forge.r-project.org/splitting.html
http://eranraviv.com/blog/bootstrapping-time-series-r-code/
http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=caret/man/createDataPartition.Rd&d=R_CC
CARET-Zeichen. Beziehung zwischen Daten aufteilen und trainControl
Sicher. Es gibt Beispiele in den beiden links, aber ich will hinzufügen, Sie direkt zur Lösung.
Tatsächlich, ja, ich denke, dass die mitgelieferten Beispieldateien Beispiele mit code, der weitere Funktionen, dann diskutiert createResample und nur gezeigt, das Ergebnis. Ich fand ein Beispiel und die Allgemeine Verwendung Beispiel für Sie.
Wussten Sie, dass Sie geben, was Sie brauchen?
Ja, außer das wichtigste - Wie zu verwenden createTimeSlices für spliting die Daten, die geeignet sein wird für Modellbahn und Modell Bewertung?
InformationsquelleAutor Hack-R