Erste Schritte (AWS CLI) - Amazon Forecast

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erste Schritte (AWS CLI)

Verwenden Sie in dieser Übung dasAWS Command Line Interface(AWS CLI) um Amazon Forecast zu erforschen Sie erstellen ein Amazon Forecast-Dataset, schulen einen Predictor und erstellen anhand dieses Predictors eine Prognose. Stellen Sie zunächst sicher, dass Sie ein AWS-Konto erstellt und dieAWS CLIaus. Weitere Informationen finden Sie unter Einrichten.

Anmerkung

Die CLI-Befehle in dieser Übung wurden unter Linux getestet. Weitere Informationen zur Verwendung der CLI-Befehle unter Windows finden Sie unterAngeben von Parameterwerten für die AWS-BefehlszeilenschnittstelleimAWS Command Line Interface-Benutzerhandbuchaus.

Erstellen Sie zunächst ein Dataset und importieren Sie die Stromverbrauchsdaten darin.

So erstellen Sie ein Amazon Forecast-Dataset

  1. Entscheiden Sie, welche Domäne und welcher Dataset-Typ geeignet ist.

    Welche Domäne und welchen Typ Sie für Ihr Dataset auswählen, ist abhängig von den Schulungsdaten, die Sie in das Dataset importieren. Sehen wir uns daher zunächst einige Beispielzeilen der Stromverbrauchsdaten an:

    2014-01-01 01:00:00, 2.53807106598985, client_0 2014-01-01 01:00:00, 23.648648648648624, client_1 2014-01-01 02:00:00, 9.648648648612345, client_0

    Das Dateiformat ist CSV (durch Komma getrennte Werte) und die Daten werden stündlich erfasst (erkennbar an den Zeitstempeln). Die Datei enthält die folgenden Spalten:

    • Spalte 1 — Zeitstempel, die angeben, wann der Stromverbrauch aufgezeichnet wurde

    • Spalte 2 — Stündliche Stromverbrauchswerte (die Zeitstempelwerte steigen stündlich an)

    • Spalte 3 — Kunden-ID-Werte, über die die Kunden identifiziert werden, die Strom verbrauchen

    Wählen Sie für diese Daten die folgenden vordefinierten Werte für Domäne und Typ des Datasets aus:

    • Benutzerdefinierte Domäne — Keine der Dataset-Domänen wie METRICS, RETAIL oder WEB_TRAFFIC bezieht sich auf diese Daten. Wählen Sie daher die CUSTOM-Domäne aus.

    • Ziel-Zeitreihen-Typ - Bei den Daten handelt es sich um eine Zeitreihe, da der Stromverbrauch im Zeitverlauf erfasst wird. Die Daten enthalten auch das Ziel, für das eine Prognose erstellt werden soll (Spalte 2, Stromverbrauch). Wählen Sie daher den Ziel-Zeitreihen-Dataset-Typ aus.

      Eine Erläuterung zur Auswahl dieses Typs finden Sie unter Vordefinierte Dataset-Domänen und Dataset-Typen.

  2. Legen Sie ein Dataset-Schema fest.

    Der Ziel-Zeitreihentyp für die CUSTOM-Domäne hat folgende Pflichtfelder: timestamp, target_value und item_id. Dietarget_valueFeld ist das Ziel. Amazon Forecast generiert die Prognose für dieses Feld.

    Um die erforderlichen Felder den Spalten in Ihren Daten zuzuordnen, erstellen Sie ein Schema. Jedes Attribut im Schema entspricht einem Feld in den Daten.

    Wichtig

    Die Reihenfolge der Attribute im Schema muss mit der Reihenfolge der Felder in den Schulungsdaten übereinstimmen.

    { "Attributes":[ { "AttributeName": "timestamp", "AttributeType": "timestamp" }, { "AttributeName": "target_value", "AttributeType": "float" }, { "AttributeName": "item_id", "AttributeType": "string" } ] }

    Jetzt haben Sie alle Informationen, die Sie brauchen, um ein Dataset zu erstellen und Daten darin zu importieren.

  3. Erstellen Sie das Dataset.

    aws forecast create-dataset \ --dataset-name electricity_demand_ds \ --domain CUSTOM \ --dataset-type TARGET_TIME_SERIES \ --data-frequency H \ --schema '{ "Attributes": [ { "AttributeName": "timestamp", "AttributeType": "timestamp" }, { "AttributeName": "target_value", "AttributeType": "float" }, { "AttributeName": "item_id", "AttributeType": "string" } ] }'

    Der data-frequency-Wert H in der Anforderung gibt an, dass die Datenerfassung stündlich erfolgt. Nachfolgend finden Sie eine Beispielantwort.

    { "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds" }

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt CreateDataset.

  4. (Optional) Rufen Sie die Beschreibung des Datasets ab.

    aws forecast describe-dataset \ --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds

    Nachfolgend finden Sie eine Beispielantwort.

    { "DatasetName": "electricity_demand_ds", "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds", "CreationTime": 1564533087.907, "LastModificationTime": 1564533087.907, "Domain": "CUSTOM", "DatasetType": "TARGET_TIME_SERIES", "DataFrequency": "H", "Schema": { ... }, "EncryptionConfig": {}, "Status": "ACTIVE" }
    Anmerkung

    Die Reihenfolge der Schlüssel-Wert-Paare in der Antwort ist beliebig.

  5. Erstellen Sie eine Dataset-Gruppe und fügen Sie ihr das Dataset hinzu: Der Wert des domain-Parameters muss mit der domain des Datasets übereinstimmen.

    aws forecast create-dataset-group \ --dataset-group-name electricity_ds_group \ --dataset-arns arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \ --domain CUSTOM

    Nachfolgend finden Sie eine Beispielantwort.

    { "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group" }

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt CreateDatasetGroup.

  6. (Optional) Rufen Sie die Beschreibung der Dataset-Gruppe ab.

    aws forecast describe-dataset-group \ --dataset-group-arn arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group

    Nachfolgend finden Sie eine Beispielantwort.

    { "DatasetGroupName": "electricity_ds_group", "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group", "DatasetArns": [ "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group" ], "Domain": "CUSTOM", "CreationTime": 1564533719.852, "LastModificationTime": 1564533719.852, "Status": "ACTIVE" }
  7. Importieren Sie die Schulungsdaten für den Stromverbrauch aus Ihrem Amazon S3 S3-Bucket in den Dataset. Die IAM-Rolle, die Sie angeben, muss über die Berechtigung zum Lesen von Daten aus Ihrem S3-Bucket verfügen. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unterErstellen einer IAM-Rolle für Amazon Forecast (AWS CLI)aus.

    aws forecast create-dataset-import-job \ --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \ --dataset-import-job-name electricity_ds_import_job \ --data-source '{ "S3Config": { "Path": "s3://bucket/electricityusagedata.csv", "RoleArn": "arn:aws:iam::acct-id:role/Role" } }'

    Nachfolgend finden Sie die Syntax-Kurzschrift für den data-source-Parameter.

    --data-source S3Config="{Path='s3://bucket/electricityusagedata.csv',RoleArn='arn:aws:iam::acct-id:role/Role'}"

    Nachfolgend finden Sie eine Beispielantwort.

    { "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job" }

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt CreateDatasetImportJob.

  8. Überprüfen Sie den Status des Imports.

    aws forecast describe-dataset-import-job \ --dataset-import-job-arn arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job

    Nachfolgend finden Sie eine Beispielantwort.

    { "DatasetImportJobName": "electricity_ds_import_job", "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job", "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds", "DataSource": { "S3Config": { "Path": "s3://bucket/electricityusagedata.csv", "RoleArn": "arn:aws:iam::acct-id:role/ForecastRole" } }, "DataSize": 0.14639010466635227, "TimeStampFormat": "yyyy-MM-dd HH:mm:ss", "CreationTime": 1564537011.114, "LastModificationTime": 1564537028.223, "Status": "CREATE_IN_PROGRESS" }

    Wenn alle Daten importiert wurden, ändert sich der Status in ACTIVE und die Antwort enthält Statistiken für die Daten, wie im folgenden Beispiel gezeigt.

    { "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds", "Status": "ACTIVE", "FieldStatistics": { "date": { "Min": "2014-01-01T01:00:00Z", "Max": "2015-01-01T00:00:00Z", "Count": 3241200, "CountDistinct": 8760, "CountNull": 0 }, "target": { "Min": "0.0", "Max": "168200.0", "Avg": 606.5167610461679, "Stddev": 3518.405223972031, "Count": 3241200, "CountDistinct": 1196961, "CountNull": 0, "CountNan": 0 }, "item": { "Count": 3241200, "CountDistinct": 370, "CountNull": 0 } }, ... }
    Wichtig

    Sie müssen warten, bis der Status ACTIVE lautet, bevor Sie einen Predictor mit der Dataset-Gruppe erstellen.

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt DescribeDatasetImportJob.

Verwenden Sie zum Erstellen eines Predictors die Operation CreateAutoPredictor und geben Sie die folgenden Informationen an.

  • Predictor-Name— Geben Sie dem Prädiktor einen Namen, damit Sie ihn von Ihren anderen Prädiktoren unterscheiden können

  • Dataset-Gruppe— Sie haben im vorherigen Schritt eine Dataset-Gruppe erstellt.

  • Forecast Frequenz— Die Granularität Ihrer Prognosen (stündlich, täglich, wöchentlich usw.).

  • Prognosezeitraum— Die Anzahl der prognostizierten Zeitschritte.

Nach dem Erstellen des Predictors überprüfen Sie die von Amazon Forecast generierten Genauigkeitsmetriken. Mithilfe der Metriken können Sie entscheiden, ob Sie den Predictor zum Erstellen einer Prognose verwenden möchten. Weitere Informationen zu Predictors finden Sie in Trainingsprädiktoren.

Erstellen eines Predictors und Überprüfen der Genauigkeitsmetriken

  1. Erstellen Sie den Predictor.

    aws forecast create-auto-predictor \ --predictor-name electricitypredictor \ --input-data-config DatasetGroupArn="arn:aws:forecast:us-west-2:acct-id:dsgroup/electricity_ds_group" \ --forecast-horizon 36 \ --forecast-frequency D

    Nachfolgend finden Sie eine Beispielantwort.

    { "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
  2. Rufen Sie den Status des Predictors ab.

    aws forecast describe-auto-predictor \ --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor

    Nachfolgend finden Sie eine Beispielantwort.

    { "PredictorArn": "arn:aws:forecast:<region>:<acct-num>:predictor/electricitypredictor", "PredictorName": "electricitypredictor", "ForecastHorizon": 36, "ForecastTypes": [ "0.1", "0.5", "0.9" ], "ForecastFrequency": "D", "DatasetImportJobArns": [ "arn:aws:forecast:<region>:<acct-num>:dataset-import-job/getting_started_dataset/gs_import" ], "DataConfig": { "DatasetGroupArn": "arn:aws:forecast:<region>:<acct-num>:dataset-group/getting_started", "AttributeConfigs": [ { "AttributeName": "target_value", "Transformations": { "aggregation": "sum", "backfill": "zero", "frontfill": "none", "middlefill": "zero" } } ] }, "EstimatedTimeRemainingInMinutes": 97, "Status": "CREATE_IN_PROGRESS", "CreationTime": "2022-02-23T09:26:24.643000-08:00", "LastModificationTime": "2022-02-23T09:49:26.899000-08:00", "ExplainabilityInfo": { "Status": "NOT_AVAILABLE" } }
    Wichtig

    Die Modellschulung nimmt einige Zeit in Anspruch. Fahren Sie erst fort, wenn die Schulung abgeschlossen ist und der Status des Predictors zu ACTIVE gewechselt hat.

  3. Rufen Sie die Genauigkeitsmetriken für den Predictor ab.

    aws forecast get-accuracy-metrics \ --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor

    Nachfolgend finden Sie eine Beispielantwort.

    { "PredictorEvaluationResults": [ { "TestWindows": [ { "EvaluationType": "SUMMARY", "Metrics": { "RMSE": 448.19602551622864, "WeightedQuantileLosses": [ { "Quantile": 0.9, "LossValue": 0.11574311406253326 }, { "Quantile": 0.5, "LossValue": 0.1706269067283527 }, { "Quantile": 0.1, "LossValue": 0.11724164222477837 } ] } }, { "EvaluationType": "COMPUTED", "Metrics": { "RMSE": 448.19602551622864, "WeightedQuantileLosses": [ { "Quantile": 0.9, "LossValue": 0.11574311406253326 }, { "Quantile": 0.5, "LossValue": 0.1706269067283527 }, { "Quantile": 0.1, "LossValue": 0.11724164222477837 } ] }, "TestWindowEnd": 1420070400.0, "TestWindowStart": 1420002000.0 } ] } ] }

    Die Metriken zeigen den Fehlerverlust für jedes Quantil. Beispielsweise gab es einen Fehler von 11,7 % für das erste Quantil. Die Metriken zeigen auchroot-mean-squareERROR (RMSE) enthalten.

    Die zusammenfassenden Metriken zeigen den Durchschnitt der berechneten Metriken über alle Testfenster an. Da es nur ein Testfenster gab, sind die zusammenfassenden und berechneten Metriken gleich.

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt GetAccuracyMetrics.

Amazon Forecast erstellt eine Prognose fürtarget_value-Feld (festgelegt durch die Domäne und den Typ des Datasets) für jede eindeutigeitem_idim Dataset. In dieser Übung stellt das target_value-Feld die Stromnutzung und item_id die Kunden-IDs bereit. Sie erhalten eine Prognose für den stündlichen Stromverbrauch pro Kunde.

Nachdem die Prognose erstellt wurde, können Sie ein einzelnes Element abfragen oder die vollständige Prognose exportieren.

Erstellen, Abrufen und Exportieren einer Prognose

  1. Erstellen Sie die Prognose.

    aws forecast create-forecast \ --forecast-name electricityforecast \ --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor

    Die Operation verwendet den Predictor zum Erstellen einer Prognose. In der Antwort erhalten Sie den Amazon-Ressourcennamen (ARN) der Prognose. Sie verwenden diesen ARN zum Abrufen und Exportieren der Prognose. Nachfolgend finden Sie eine Beispielantwort.

    { "ForecastArn": "arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast" }

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt CreateForecast.

  2. Rufen Sie die ersten zwei Stunden der Prognose für client_1 ab.

    Anmerkung

    Der Servicename forecastquery unterscheidet sich von dem Servicenamen, der an anderer Stelle verwendet wird.

    aws forecastquery query-forecast \ --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \ --start-date 2015-01-01T00:00:00 \ --end-date 2015-01-01T02:00:00 \ --filters '{"item_id":"client_1"}'

    Die Operation enthält die folgenden Parameter.

    • start-dateundend-date— Gibt einen optionalen Datumsbereich zum Abrufen der Prognose für an. Wenn Sie diese Parameter nicht angeben, wird die gesamte Prognose für client_1 zurückgegeben.

    • filters— Gibt dieitem_id-Filter zum Abrufen der Stromverbrauchsprognoseclient_1aus.

      Nachfolgend finden Sie die Syntax-Kurzschrift für den filters-Parameter.

      --filters item_id="client_1"

    Nachfolgend finden Sie eine Beispielantwort.

    { "Forecast": { "Predictions": { "mean": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 20.952411651611328 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 19.11078453063965 } ], "p90": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 24.524038314819336 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 22.319091796875 } ], "p50": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 20.7841739654541 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 19.237524032592773 } ], "p10": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 18.507278442382812 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 16.15062141418457 } ] } } }

    Da es sich hierbei um eine stündliche Prognose handelt, werden stündliche Prognosewerte angezeigt. In der Antwort ist Folgendes zu beachten:

    • mean— Für das angegebene Datum und die angegebene Uhrzeit ist der Mittelwert der prognostizierte durchschnittliche Stromverbrauch des Kunden.

    • p90,p50, undp10— Geben Sie das Konfidenzniveau an, bei dem der tatsächliche Wert zum angegebenen Datum und zur angegebenen Uhrzeit unterhalb des aufgeführten Werts liegen wird. Beispielsweise ist Amazon Forecast bei 2015-01-01T 01:00:00 zu 90% sicher, dass der Stromverbrauch unter 24,5 liegt. Amazon Forecast ist zu 50% sicher, dass die Nutzung unter 20,8 liegt, und zu 10% sicher, dass die Nutzung unter 18,5 liegt.

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt QueryForecast.

  3. Exportieren Sie die vollständige Prognose in Ihren Amazon S3 S3-Bucket. Die IAM-Rolle, die Sie angeben, muss über die Berechtigung zum Schreiben von Daten in Ihren S3-Bucket verfügen. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unterErstellen einer IAM-Rolle für Amazon Forecast (AWS CLI)aus.

    Erstellen Sie einen Exportauftrag für die Prognose.

    aws forecast create-forecast-export-job \ --forecast-export-job-name electricityforecast_exportjob \ --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \ --destination S3Config="{Path='s3://bucket',RoleArn='arn:aws:iam::acct-id:role/Role'}"

    Nachfolgend finden Sie eine Beispielantwort.

    { "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087" }

    Weitere Informationen zu dieser Operation finden Sie im Abschnitt CreateForecastExportJob.

  4. Rufen Sie den Status des Exportauftrags ab.

    aws forecast describe-forecast-export-job \ --forecast-export-job-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast

    Nachfolgend finden Sie eine Beispielantwort.

    { "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087", "ForecastExportJobName": "electricityforecast_exportjob", "Status": "CREATE_IN_PROGRESS" }

    Wenn der Status ACTIVE lautet, finden Sie die Prognosedateien im angegebenen S3-Bucket.