2017-10-20 1 views
0

Entschuldigung für die dummen Fragen - insgesamt n00b hier.Zeitreihen-Regression - RandomForest

Angenommen, ich habe den folgenden Datensatz.

date,site,category,locale,type,rank,sessions,logins 
01/01/2017,google.com,search,US,free,1,3393093,50000 
01/01/2017,google.com,overall,US,free,1,3393093,50000 
01/01/2017,yahoo.com,search,US,3,free,core,393093,40000 
01/01/2017,yahoo.com,news,US,9,free,393093,40000 
01/01/2017,yahoo.com,overall,US,23,free,393093,40000 
01/01/2017,wsj.com,news,US,21,free,200000,180000 
01/01/2017,wsj.com,news,US,21,subscription,200000,180000 
01/01/2017,wsj.com,overall,US,93,free,200000,180000 

wo Rang ist der Alexa-Rang dieser Website. Es sind mehrere Kategorien möglich (Suche, E-Mail, E-Commerce etc.) und der Rang entspricht dem Rang innerhalb dieser Kategorie.

Ich versuche, die Anzahl der Sitzungen und Logins einer bestimmten Website/locale/Rang für einen bestimmten Tag vorherzusagen, im Wesentlichen bis hinunter zu einem multivariaten Zeitreihen-Regression Problem und ich verwende sklearns RandomForestRegressor.

Im Moment habe ich behandle diese nicht als Zeitreihe Problem - für die Ausbildung, entferne ich die date und site Spalten, kodieren die category, locale und rank Spalten, verwenden Sie sie und rank als Eingänge und mein Modell trainieren vorauszusagen sessions und logins. Die Ergebnisse sehen gut aus, aber ich wollte wissen:

  1. Wie könnte dies in eine richtige Zeitreihenvorhersage umgewandelt werden? Ich sah some examples by Jason Brownlee, wo das Problem als ein überwachtes Lernproblem umgekrempelt wurde - aber das würde nicht funktionieren, da ich möglicherweise Millionen von Reihen von Trainingsdaten habe. Ich könnte die Trainingsdaten nach Kategorie/Gebietsschema/Typ gruppieren, nach Datum sortieren und zum Testen am Tag T für eine bestimmte Kombination aus Kategorie/Gebietsschema/Typ Daten bis zum Tag T-1 zum Training verwenden - aber dieser Ansatz wäre sehr teuer Da es potenziell Tausende solcher Kategorie/Gebietsschema/Typ-Kombinationen gibt

  2. Ich habe gelesen über die Verwendung von gleitenden Durchschnitten, um die Leistung zu steigern. Die Berechnung der gleitenden Mittelwerte von sessions und logins im Trainingssatz wäre trivial, aber da dies eine abhängige Variable ist, wie würde ich das im Testset erfassen?

  3. Gibt es ein besseres Werkzeug als RF für diese Aufgabe?

Antwort

0

würde ich die Methode in dem verknüpften Blogeintrag verwenden, sollte die Datentransformation kein Problem sein, wenn Sie vektorisiert numpy Operationen wie shift verwenden.

Durch die Art und Weise, wenn Sie nur das Datum ignorieren, sind Sie nur die durchschnittlichen Zahlen für jede Gruppe calcuating, dh Sie einen zufälligen Wald sind mit einer sehr extravagant Pivot-Tabelle ;-)

+0

Dank zu bauen, aber Die "shift" -Methode beinhaltet das Erstellen einer Spalte für jede Zeile. Wenn man sieht, dass es etwa eine Million Zeilen gibt, würde das zu einer Million + Spalten führen - ich bin mir nicht sicher über die Effizienz dort – Craig

+0

Sie machen keine Spalte für jede Zeile, Sie tun nur ein paar Schritte innerhalb einer Fenstergröße (in der verlinkte Blogpost verwenden sie nur den vorherigen Zeitschritt für jede Zeile) – maxymoo

Verwandte Themen