Vorhersage treffen aus Zeitreihe mittels ML

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
torsten_156
User
Beiträge: 43
Registriert: Freitag 5. April 2019, 20:10

Hallo,
ich versuche schon eine Weile mit ML eine Zeitreihe auf Basis vorhandener Daten vorherzusagen. Um das passende Modell zu finden, habe ich mir einige Seiten im www angeschaut. Was ich jetzt sagen kann, ist dass die Daten keine Tendenz und auch keinen Trend aufweisen. Das führt mich dazu Modell RandomForestRegressor zu nutzen.

Der Datensatz ist ca. 9.000 Datensätze lang und hat lediglich eine Spalte (Feature) mit Messwerten. Das Zeitraster ist im 15min Abstand. Ich splitte diesen DS in Trainings- (80%) und Testdaten(20%) auf.
Nach dem Teilen erzeuge ich dann anhand des Datums weitere Features für das Training mit Werten aus Tag, Monat, Stunde. Somit erhalte ich ja dann drei Features für das Training.

Nach dem Training erhalte ich einen R2-Score von 1.0 (was ich nicht ganz glauben kann!). Nach dem Training lasse ich mir eine Vorhersage erstellen und plotte diese dann zusammen mit den Testdaten aus. Dabei zeigt sich allerdings eine aus meiner Sicht große Abweichung der Vorhersage zu den tatsächlichen Werten (Testdaten).

Bild

Den RFRegressor nutze ich mit folgenden Parametern:

Code: Alles auswählen

    model = RandomForestRegressor(
        bootstrap = False,
        ccp_alpha = 0.0,
        criterion = 'squared_error',
        max_depth = None,
        max_features = 'sqrt',
        max_leaf_nodes = None,
        max_samples = None,
        min_impurity_decrease = 0.0,
        min_samples_leaf = 1,
        min_samples_split = 2,
        min_weight_fraction_leaf = 0.0,
        monotonic_cst = None,
        n_estimators = 1000,
        n_jobs = -1,
        oob_score = False,
        random_state = None,
        verbose = 0,
        warm_start = False     
        )
Hier noch ein Auszug meines Datensatzes:

Code: Alles auswählen

01.11.2023, 00:15:00;2.078,03
01.11.2023, 00:30:00;1.568,97
01.11.2023, 00:45:00;2.265,16
01.11.2023, 01:00:00;2.146,81
01.11.2023, 01:15:00;2.322,03
01.11.2023, 01:30:00;2.413,89
01.11.2023, 01:45:00;2.161,25
01.11.2023, 02:00:00;2.035,89
01.11.2023, 02:15:00;1.895,81
01.11.2023, 02:30:00;1.695,30
01.11.2023, 02:45:00;1.574,23
01.11.2023, 03:00:00;1.917,37
01.11.2023, 03:15:00;1.768,80
01.11.2023, 03:30:00;1.586,68
01.11.2023, 03:45:00;1.530,01
01.11.2023, 04:00:00;1.878,30
01.11.2023, 04:15:00;2.182,48
01.11.2023, 04:30:00;2.094,95
01.11.2023, 04:45:00;2.120,60
...

Meine Fragen sind nun folgende:
1. ist das verwendete Modell überhaupt das richtige?
2. ist das schon die beste Vorhersage oder geht es besser?
3. welche Parameter muss ich wie verändern oder kombinieren, um eine genauere Vorhersage zu erhalten?

VG
Torsten
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was ist denn der unterliegende Prozess? Hat der irgendwelche Trends und Periodizitaeten? Wenn nicht, und er sich einfach wie ein Zufallsprozess verhaelt, dann kann da ja nun auch nix anderes bei rumkommen.
Antworten