Der Umgang mit Daten aus der realen in der Zeitreihenprognose

Zeitreihendaten aus der realen Welt sind oft unvollkommen und enthalten fehlende, doppelte oder nicht aufeinander abgestimmte Zeitschritte. Die ML-Funktionen für Prognosen und Anomalieerkennung enthalten diese Vorverarbeitungs-Features, damit Sie Ihre realen Daten nutzen können, um ein Modell zu trainieren, das nützliche Vorhersagen macht:

  • Sie können eine Häufigkeit der Ereignisse angeben, um die Häufigkeit zu überschreiben, die das Modell automatisch ableitet.

  • Das Modell kann Daten bei fehlenden Zeitschritten ableiten und mehrere Werte innerhalb eines Zeitschritts aggregieren. Sie können für jedes Feature oder jede Art von Feature angeben, wie die Aggregation erfolgen soll, oder dies automatisch von der Funktion ML erledigen lassen.

Mit diesen Funktionen können Sie ein nützliches Modell trainieren, selbst wenn Ihre Trainingsdaten allgemeine Konsistenzprobleme aufweisen. Im Allgemeinen gilt: Je konsistenter Ihre Daten sind, desto genauer wird Ihr Prognosemodell sein. Eine relativ geringe Anzahl solcher Anpassungen beeinträchtigt die Präzision des Modells jedoch nicht merklich.

Häufigkeit der Ereignisse festlegen

Beim Training eines Modells wird die Häufigkeit der Zeitschritte in Ihren Trainingsdaten mithilfe von Heuristiken abgeleitet, die in seltenen Fällen die falsche Häufigkeit auswählen. Um dieses Risiko zu vermeiden oder eine falsche Schlussfolgerung zu korrigieren, können Sie optional die gewünschte Häufigkeit beim Start des Trainings mit dem Parameter CONFIG_OBJECT frequency angeben. Dieser Parameter gibt einen Zeitraum in einer ähnlichen Form wie '1 day' oder '2 weeks' an.

  • Die Intervallangabe muss in einfache Anführungszeichen gesetzt werden, da es sich um eine Zeichenfolge handelt.

  • Unterstützte Intervalle sind Sekunden, Minuten, Stunden, Tage, Wochen, Monate, Quartale und Jahre.

  • Verwenden Sie die vollständigen Intervallnamen. Plurale sind akzeptabel. („Sekunde“ oder „Sekunden“, nicht „sek“).

Das folgende Beispiel zeigt, wie Sie ein Prognosemodell mit einer Häufigkeit von einem Tag trainieren.

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  CONFIG_OBJECT => {'frequency': '1 day'}
);
Copy

Wenn Sie keine Ereignishäufigkeit angeben, wird beim Trainingsprozess die am besten passende Ereignishäufigkeit ermittelt.

Auffüllen von Werten für fehlende Zeitschritte

Ein Zeitstempel, der keinen Zielwert hat, verwendet:

Fehlende Feature-Werte werden nicht aufgefüllt, sondern durch NULL-Werte ersetzt. Beim Modelltraining werden diese ignoriert.

Verarbeiten mehrerer Werte in einem Zeitschritt

Wenn es in einem Zeitschritt mehrere Ereignisse gibt, kann die Vorverarbeitung deren Werte auf verschiedene Weise aggregieren. Wenn die Häufigkeit der Ereignisse zum Beispiel stündlich ist, können Werte, die außerhalb der stündlichen Kadenz auftreten, gemittelt werden, um einen Wert für den nächstgelegenen kanonischen stündlichen Zeitstempel zu erhalten.

Die folgende Tabelle fasst die verfügbaren Aggregationsverhaltensweisen zusammen.

Art von Wert

Verfügbare Verhaltensweisen

Standardverhalten

Numerisch

  • MEAN: Durchschnitt der Werte

  • MEDIAN: mittlerer Wert

  • MODE: häufigster Wert

  • MIN: niedrigster Wert

  • MAX: höchster Wert

  • SUM: Summe der Werte

  • FIRST: frühester Wert

  • LAST: letzter Wert

MEAN

Kategorisch (Zeichenfolge oder boolesch)

  • MODE: häufigster Wert

  • FIRST: frühester Wert

  • LAST: letzter Wert

MODE

Tipp

Verwenden Sie die Methode SUM für Zähldaten, wie z. B. die Anzahl der verkauften Artikel. MEAN ist für die meisten anderen numerischen Werte geeignet.

Alle Verhaltensweisen ignorieren die NULL-Werte und gelten für den Zeitraum, der interpoliert oder aggregiert wird. Zum Beispiel ist die SUM der Werte in einem stündlichen Rhythmus die Summe der Werte innerhalb der Stunde, die auf dem kanonischen Zeitstempel basiert.

Sie können die Standardverhaltensweise für eine Spalte auf zwei Arten außer Kraft setzen:

  • Nach Art des Wertes (Ziel, numerisch oder kategorial)

  • Nach dem exakten Spaltennamen

Wenn Sie die Verhaltensweisen auf beide Arten überschreiben, hat die Überschreibung des Spaltennamens Vorrang.

Überschreiben nach Art des Wertes

Stellen Sie die folgenden Optionen im Parameter CONFIG_OBJECT der Funktion ein, um bestimmte Arten von Werten zu überschreiben: kategorial, numerisch und Ziel. Die Verhaltensweisen sind wie zuvor definiert.

Option

Mögliche Werte:

aggregation_categorical

MODE, FIRST, LAST

aggregation_numeric

MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST

aggregation_target

MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST

Bemerkung

Wenn aggregation_target nicht angegeben ist, verwendet die Ziel-Aggregation die Verhaltensweise, die ggf. durch aggregate_numeric angegeben ist. Andernfalls wird der Standardwert, MEAN, verwendet.

Das folgende Beispiel zeigt, wie Sie die Verhaltensweisen für kategoriale und numerische Features festlegen.

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  CONFIG_OBJECT => {
    'frequency': '1 day',
    'aggregation_categorical': 'MODE',
    'aggregation_numeric': 'MEDIAN'}
);
Copy

Tipp

Sie sollten alle diese Werte angeben, auch wenn Sie die Standardwerte verwenden. Auf diese Weise müssen Sie nicht wissen, was das Standardverhalten ist, um zu verstehen, was die Anweisung tut, und wenn Sie das Verhalten später ändern möchten, müssen Sie nicht den Namen des Parameters nachschlagen.

Überschreiben nach Spaltenname

Die Option aggregation_column in CONFIG_OBJECT ist ein Objekt, das Verhaltensweisen den Spaltennamen zuordnet. Diese Verhaltensweisen haben Vorrang vor allen Verhaltensweisen, die mit den oben beschriebenen Parametern festgelegt wurden.

Bemerkung

Das Aggregationsverhalten des Zielwertes kann nicht über den Spaltennamen angegeben werden. Verwenden Sie stattdessen die Option aggregation_target.

Vorgeschlagene Änderung: Die folgende SQL-Anweisung gibt beispielsweise die Verhaltensweise der Aggregation für zwei verschiedene Spalten unter Verwendung der Option aggregation_column an.

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  CONFIG_OBJECT => {
    'frequency': '1 day',
    'aggregation_target': 'MEDIAN',
    'aggregation_column': {
        'temperature': 'MEDIAN',
        'employee_id': 'FIRST'
    }
  }
);
Copy