Ablauf der Forecast App

Ablauf der Forecast App mit den Basisparametern

Wenn nur die grundlegenden Parameter an die App übergeben werden, z. B.:

{
    "gai": "Target GAI",
    "target_attribute": "target attribute",
    "forecast_length": 2,
    "context_length": 10
}

führt die Forecast App automatisch die folgenden Schritte aus:


1. Start von Training und Forecasting

  • Sobald die Anfrage abgeschickt wurde, startet das Training und Forecasting gleichzeitig.

  • Forecasting wartet jedoch darauf, dass das erste Modell gespeichert wird.


2. Hyperparameter-Suche

Um ein für Ihre Daten passendes Modell zu finden, startet die App automatisch die Hyperparameter-Suche. Damit brauchen Sie sich nicht um die Auswahl der Modellparameter kümmern, da die App die beste Konfiguration flexibel und basierend auf den Eigenschaften Ihrer Daten bestimmt.

-> Was sind Hyperparameter?


Ablauf der Hyperparameter-Suche

  1. Teildatensatz: Die Suche wird auf 1% der Daten ausgeführt, um Zeit und Rechenleistung zu sparen.

    • Wichtig: Stellen Sie sicher, dass genug Daten vorhanden sind. Falls nötig, erhöhen Sie den Wert percent_data, z. B. auf 0.05 (5% der Daten).

  2. Maximale Versuche: Standardmäßig testet die App 100 verschiedene Modellkonfigurationen (max_trials: 100).

    • Tipp: Falls Sie sicherstellen wollen, dass die beste Architektur gefunden wird, erhöhen Sie diesen Wert.

  3. Trainingseinstellungen: Jede getestete Modellkonfiguration wird mit folgenden Standardparametern trainiert:

    • Epochs: 50 Durchläufe durch die Trainingsdaten. (epochs: 50)

    • Patience: 5 Durchläufe ohne Verbesserung auf den Validationsdaten, bevor das Training abgebrochen wird. (patience: 5)

    • Validation Split: 20% der Daten werden zur Validierung verwendet, um die Leistung der Konfiguration zu messen. (validation_split: 0.2)

  4. Speichern der besten Architektur: Nach jeder getesteten Modellkonfiguration überprüft die App deren Leistung auf den Validationsdaten.

    • Die beste Konfiguration wird zwischengespeichert und steht bereits für erste Vorhersagen zur Verfügung.


3. Optimierung der besten Architektur

  • Sobald die Hyperparameter-Suche abgeschlossen ist, wird die Top 5% der besten Modelle auf noch nicht gesehenen Testdaten getestet (best_trails_percent: 0.05).

  • Das am besten abschneidende Modell wird ausgewählt und anschließend auf den gesamten Datensatz trainiert.

  • Die finalen Parameter der besten Modellkonfiguration werden gespeichert.(parameters: {})


4. Trainingsprozess und Aktualisierung des Modells

Nachdem das Modell auf allen Daten trainiert wurde:

  • Trainingsruhe: Der Trainingsprozess „schläft“ für 1 Stunde (sleep_time: 3600 Sekunden).

  • Neues Training: Nach der Ruhezeit prüft die App, ob neue Daten vorhanden sind:

    • Sobald die Datenmenge um mindestens 15% gestiegen ist (percentage_data_when_to_retrain: 1.15), startet das Training erneut.

    • Das Modell wird inklusive der neuen Daten aktualisiert, um immer auf dem neuesten Stand zu bleiben.


5. Forecasting im laufenden Betrieb

Während das Training läuft oder pausiert:

  • Mit jedem neuen Datenpunkt, der in das Target-Attribut geschrieben wird, lädt die App das zuletzt gespeicherte Modell.

  • Dieses Modell wird auf den aktuellen Stand der Daten gebracht.

  • Eine neue Vorhersage für die nächsten Werte wird berechnet und in das Forecast-Attribut gespeichert.


Zusammenfassung des Ablaufs

  1. Start des Trainings: Hyperparameter-Suche auf 1% der Daten, um die beste Modellarchitektur zu finden.

  2. Optimierung: Top 5% der Architekturen werden getestet, das beste Modell wird auf allen Daten trainiert.

  3. Kontinuierliche Aktualisierung: Bei 15% neuen Daten wird das Training neu gestartet.

  4. Forecasting: Mit jedem neuen Datenpunkt wird das Modell aktualisiert und die nächste Vorhersage berechnet.

Bei großen Datenmengen wird empfohlen, Forecasting während der Hyperparameter-Suche zu deaktivieren (forecast: false), da jede neue gespeicherte Modellversion zu einem hohen Rechenaufwand führen kann.

Beispielhafte Hyperparameter-Konfiguration

Wenn keine eigenen Hyperparameter angegeben werden, verwendet die App folgende Standards für die Suche:

"hyperparameters": {
    "activation": ["tanh", "relu", "sigmoid", "linear"],
    "dense_activation": ["tanh", "relu", "sigmoid", "linear"],
    "num_lstm_layers": { "min_value": 1, "max_value": 4, "step": 1 },
    "lstm_units": { "min_value": 32, "max_value": 256, "step": 32 },
    "dropout_rate": { "min_value": 0.0, "max_value": 0.5, "step": 0.1 },
    "recurrent_dropout_rate": { "min_value": 0.0, "max_value": 0.5, "step": 0.1 },
    "num_dense_layers": { "min_value": 0, "max_value": 3, "step": 1 },
    "dense_units": { "min_value": 32, "max_value": 256, "step": 32 },
    "learning_rate": { "min_value": 0.0001, "max_value": 0.01, "sampling": "log" },
    "optimizer_type": ["adam", "sgd", "rmsprop", "adagrad", "adadelta", "adamax", "nadam"],
    "use_batch_norm": false,
    "percent_data": 0.01,
    "max_trials": 100,
    "best_trails_percent": 0.05
}
"trainingparameters":{
    "epochs": 50,
    "patience": 5,
    "validation_split":0.2,
    "sleep_time": 3600,
    "percentage_data_when_to_retrain": 1.15,
}
"parameters": { 
// Hier werden nach dem Hyperparametersearch die besten Parameter dann zu sehen sein
}

Mit diesen Standardparametern sorgt die App dafür, dass selbst ohne technisches Vorwissen ein optimales Modell gefunden und kontinuierlich aktualisiert wird.

Bei komplexeren Daten macht es sinn die "epochs" und "patience" deutlich zu erhöhen.

Last updated

Was this helpful?