Hallo. Zukunftssuche Ich bin Sugato aus Brasilien.
Ich weiß nicht, welche Zahl ich heute brauen soll, aber ich möchte über die Vorhersage von Zeitreihendaten schreiben.
Es gibt ein Bild, dass die Vorhersage von Zeitreihendaten grundsätzlich nicht so brauchbar ist, aber ich würde gerne sehen, wie viel es ist und ob es in der Praxis verwendet werden kann.
Die Einzelheiten, die ich ausprobiert habe, sind wie folgt
** Holen Sie sich tägliche Follower auf Twitter ** ~~ Das Adstringens ~~ Gib dein Bestes mit API
** Versuchen Sie, die Anzahl der Follower auf Ihrem Twitter vorherzusagen ** (1) Vorausgesagt durch das SARIMA-Modell ・ [Kombination eines neuronalen Netzwerkmodells mit einem ARIMA-Modell für saisonale Zeitreihen] https://www.sciencedirect.com/science/article/pii/S004016250000113X ・ [Analyse von Zeitreihendaten mit SARIMA (Vorhersage der PV-Zahl)] https://www.kumilog.net/entry/sarima-pv @xkumiyu
(2) Vorausgesagt vom Prophetenmodell ・ [Prophet Official] https://facebook.github.io/prophet/docs/quick_start.html ・ [Zeitreihenanalysebibliothek Prophet offizielle Dokumentübersetzung 1 (Übersicht & Funktionen)] https://qiita.com/japanesebonobo/items/96868e58d4da42d36807 @japanesebonobo
Die Vorhersage der Anzahl der Follower, die von Tag zu Tag abnimmt, ohne zu twittern, macht mein Herz noch tiefer. Zunächst einmal wird die Anzahl der Follower sinken, und es besteht keine Aussicht auf eine Zunahme.
Die täglichen Follower-Count-Daten sehen folgendermaßen aus. Ich kann es nicht ertragen, es zu sehen. (Https://twitter.com/Ndtn_/) http://web.sfc.wide.ad.jp/~nadechin/follower.csv
date follower
2018/9/6 39.569
2018/9/7 39.57
2018/9/8 39.573
. .
. .
. .
2019/12/10 37.861
Trainingsdaten und Testdaten trennen. Es ist egal, ob es Pandas oder Numpy ist, aber vorerst ・ 2018/09/06 ~ 2019/12/10 Originaldaten ・ 2018/09/06 ~ 2019/11/30 Lerndaten 01 Testdaten 2019/12/01 ~ 2019/12/10
Bestätigen Sie die Stabilität der Daten durch einen ADF-Test. ・ [Statsmodels.tsa.stattools.adfuller] http://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html ・ [Nullhypothese, Signifikanzniveau] http://www.gen-info.osaka-u.ac.jp/MEPHAS/express/express11.html
res = sm.tsa.stattools.adfuller(df.follower)
Das Ausgabeergebnis ist wie folgt
p-value = 0.9774
⇨p-value > 0.05
Daher kann nicht gesagt werden, dass es stabil ist. Um Konstanz zu haben, wird die Differenz genommen und die Saisonalität entfernt.
predict.py
data = [Scatter(x=df.index, y=df.follower.diff())]
Dann saisonale Entfernung.
predict.py
data = [Scatter(x=df.index, y=df.follower-res.seasonal)]
Dadurch wird der ADF-Test erneut durchgeführt.
p-value = 1.109e-25
⇨p-value < 0.05
Dadurch konnten wir Zeitreihendaten stetig verarbeiten.
Erstellen Sie im Fall des SARIMA-Modells ein Modell für alle Daten
predict.py
# coding:utf-8
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(
train,
order=(p, d, q),
seasonal_order=(sa, sd, sq, s),
enforce_stationarity=False,
enforce_invertibility=False)
result = model.fit()
Mach es mit. order = (p, d, q) ist ein Parameter des ARIMA-Modells saisonale_Ordnung = (sp, sd, sq, s) ist ein saisonaler Parameter
Siehe ↓ ・ [Statsmodels.tsa.statespace.sarimax.SARIMAX] https://www.statsmodels.org/dev/generated/statsmodels.tsa.statespace.sarimax.SARIMAX.html ・ [Analyse von Zeitreihendaten mit SARIMA (Vorhersage der PV-Zahl)] https://www.kumilog.net/entry/sarima-pv @xkumiyu
Erstellen Sie als Nächstes ein Prophetenmodell.
Der Prophet wird ein Modell erstellen, indem er einfach die Trainingsdaten eingibt. Es wird klar: "Ich weiß nicht, was ich tue, aber ich habe etwas getan, das vorhersehbar zu sein scheint." Ab heute kann ich mit einem 2-Sekunden-Kopieren und Einfügen Datenwissenschaftler werden.
predict.py
# coding:utf-8
import pandad as pd
import numpy as np
from fbprophet import Prophet
data = pd.read_csv('follower.csv')
data.follower= data.follower.apply(lambda x: int(x.replace(',', '')))
#Der Spaltenname lautet'ds','y'Muss eingestellt sein auf
data = data.rename(columns={'date': 'ds', 'follower': 'y'})
model = Prophet()
model.fit(data)
・ SARIMA-Modell
Vorhersage der auf das SARIMA-Modell angewendeten Testdaten
2019-12-01 38002.878685
2019-12-02 38001.204647
2019-12-03 37998.080676
2019-12-04 37988.324131
2019-12-05 37981.134367
2019-12-06 37974.569498
2019-12-07 37966.333432
2019-12-08 37958.270232
2019-12-09 37956.258566
2019-12-10 37952.875398
・ Prophetenmodell
Vorhersage der auf das Prophetenmodell angewendeten Testdaten
2019-12-01 37958.337506
2019-12-02 37959.963661
2019-12-03 37957.304699
2019-12-04 37943.272430
2019-12-05 37934.533210
2019-12-06 37920.537811
2019-12-07 37908.529618
2019-12-08 37905.819057
2019-12-09 37907.445213
2019-12-10 37904.786251
Ich bin einsam, also werde ich versuchen zu planen
[Überblick]
[Vorhersage Teil]
[Erwartete teilweise vergrößerte Ansicht]
Schauen wir uns die Prognosedaten für den Tag nach dem letzten Tag der Trainingsdaten an.
date, follower
#Echte Daten
2019-12-01, 38003.000000
# SARIMA
2019-12-01, 38002.878685
# Prophet
2019-12-01, 37958.337506
Wie Sie aus der [erweiterten Ansicht des vorhergesagten Teils] sehen können, sind die Vorhersagen für den nächsten Tag der Trainingsdaten in den SARIMA-Daten nahezu identisch. Die Vorhersage des nächsten Zeitpunkts der Trainingsdaten scheint geeignet zu sein.
Der Prophet war ehrlich subtil.
Ich dachte, dass es unerwartet funktionieren würde, wenn ich bis 2019/12/09 lernen und den vorhergesagten Wert von 2019/12/10 herausgeben würde, also werde ich es versuchen.
Ergebnisse unten
date, follower
#Echte Daten
2019-12-10, 37861.000000
# SARIMA
2019-12-10 37868.158032
Es fühlt sich gut an. Wenn es sich um eine Vorhersage für nur einen Tag handelt, scheint sich eine relativ gute Genauigkeit auf praktischem Niveau zu ergeben.
Wie ich oft sagte, war der Prophet ehrlich subtil.
Der Prophet ist bequem, aber es fehlt ihm die Praktikabilität. Mit dem SARIMA-Modell hatte ich das Gefühl, dass die Vorhersage von Zeitreihendaten nicht an einem Tag verwendet werden kann. Ich wollte ein bisschen mehr Modelle auf einmal vergleichen. Bis zum nächsten Mal.
Außerdem nimmt die Anzahl der Follower ab.
Recommended Posts