API を使用して時系列予測用の AutoML ジョブを作成する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

API を使用して時系列予測用の AutoML ジョブを作成する

機械学習における予測とは、過去のデータやパターンに基づいて将来の結果や傾向を予測するプロセスを指します。機械学習アルゴリズムは、過去の時系列データを分析し、根底にあるパターンを特定することで、予測を行い、将来の行動に関する貴重なインサイトを提供できます。予測における目標は、入力変数とターゲット変数の関係を時間の経過とともに正確に把握できるモデルを開発することです。これには、データ内の傾向、季節性、その他の関連パターンなど、さまざまな要因を調べることが含まれます。収集された情報は、機械学習モデルのトレーニングに使用されます。トレーニング済みモデルは、新しい入力データを取得し、学習したパターンと関係を適用することにより予測を生成できます。販売予測、株式市場の動向、天気予報、需要予測など、幅広いユースケースの予測を提供できます。

次の手順は、 SageMaker API リファレンス を使用して時系列予測問題タイプのパイロット実験として Amazon SageMaker Autopilot ジョブを作成する方法を示しています。

注記

テキストと画像の分類、時系列予測、大規模言語モデルの微調整などのタスクは、Autopilot API バージョン 2 でのみ使用できます。Python ユーザーの場合、 AWS SDK for Python (Boto3) を使用することをお勧めします。Amazon SageMaker Python SDK は現在、Autopilot API バージョン 2 ではサポートされていません。

ユーザーインターフェイスの利便性を好むユーザーは、Amazon SageMaker Canvas を使用して、事前トレーニング済みのモデルや生成 AI 基盤モデルにアクセスしたり、特定のテキスト、イメージ分類、予測ニーズ、生成 AI に合わせたカスタムモデルを作成したりできます。

Amazon Autopilot または でサポートされている任意の言語で CreateAutoMLJobV2 API を呼び出すことで、Autopilot SageMaker の時系列予測実験をプログラムで作成できますAWS CLI。

この API アクションが選択した言語の関数にどのように変換されるかについては、「CreateAutoMLJobV2」の「関連項目」セクションを参照して SDK を選択してください。例として、Python ユーザーの場合は、「AWS SDK for Python (Boto3)」の「create_auto_ml_job_v2 のすべてのリクエスト構文」を参照してください。

Autopilot は、ターゲットとなる時系列で複数のモデル候補をトレーニングし、与えられた目標メトリクスに最適な予測モデルを選択します。モデル候補がトレーニングされると、BestCandidateDescribeAutoMLJobV2 へのレスポンスから最適な候補メトリクスを見つけることができます。

以下のセクションでは、時系列予測に使用される CreateAutoMLJobV2 API の必須およびオプションの入力リクエストパラメータを定義します。

注記

実用的で実践的な時系列予測の例については、ノートブック「Amazon SageMaker Autopilot による時系列予測」を参照してください。このノートブックでは、Amazon SageMaker Autopilot を使用して時系列モデルをトレーニングし、トレーニングされたモデルを使用して予測を生成します。ノートブックは、Amazon S3 にある表形式の履歴データの既製のデータセットを取得する手順について説明します。

前提条件

Autopilot を使用して で時系列予測実験を作成する前に SageMaker、必ず次のことを確認してください。

  • 時系列データセットを準備します。データセットの準備には、さまざまなソースから関連データを収集し、クリーニングとフィルタリングを行ってノイズや不整合を取り除き、構造化された形式に整理することが含まれます。Autopilot の時系列フォーマットの要件について詳しくは、「時系列データセットの形式と欠損値の filling メソッド」を参照してください。オプションで、選択した国の祝日カレンダーをデータセットに追加して、関連するパターンを把握することもできます。祝日カレンダーの詳細については、「祝祭日カレンダー」を参照してください。

  • 時系列データを Amazon S3 バケットに配置します。

  • 実験の実行に使用される SageMaker 実行ロールの入力データを含む Amazon S3 バケットへのフルアクセスを許可します。これが完了すると、Autopilot API リクエストでこの実行ロールの ARN を使用できます。

    • SageMaker 実行ロールの取得については、「」を参照してください実行ロールを取得する

    • Amazon S3 の 1 つ以上の特定のバケットにアクセスするためのアクセス許可 SageMaker を実行ロールに付与する方法については、「 SageMaker の実行ロールに追加の Amazon S3 アクセス許可を追加する」を参照してください実行ロールを作成する

必須パラメータ

CreateAutoMLJobV2 を呼び出して、時系列予測用のオートパイロットテストを作成する場合は、以下の値を指定する必要があります。

  • ジョブの名前を指定する AutoMLJobName。名前は string 型で、最小長は 1 文字、最大長は 32 文字です。

  • AutoMLJobInputDataConfig に少なくとも 1 つの AutoMLJobChannel を指定し、データが含まれている Amazon S3 バケット名を指定します。オプションで、コンテンツ (CSV または Parquet ファイル) と圧縮 (GZip) タイプを指定できます。

  • 時系列予測ジョブの設定を構成する TimeSeriesForecastingJobConfig タイプの AutoMLProblemTypeConfig。特に、以下を指定する必要があります。

    • 予測の目的の粒度 (時間単位、日単位、月単位など) を指す、予測の頻度

      有効な間隔は、整数の後に Y (年)、M (月)、W (週)、D (日)、H (時)、min (分) をつけたものです。例えば、1D は毎日を示し、15min は 15 分ごとを示します。頻度の値は、次に大きい頻度と重ならないようにします。たとえば、60min の代わりに 1H の頻度を使用する必要があります。

      各頻度の有効な値は以下のとおりです。

      • 分 - 1~59

      • 時間 - 1~23

      • 日 - 1~6

      • 週 - 1~4

      • 月 - 1~11

      • 年 - 1

    • 予測における予測の期間。モデルが予測するタイムステップの数を指します。予測期間は予測長とも呼ばれます。最大予測期間は、500 タイムステップまたはデータセット内のタイムステップの 1/4 のいずれか小さい方です。

    • 以下を指定して、列ヘッダーを予測にマッピングするデータセットのスキーマTimeSeriesConfigを定義する 。

      • TargetAttributeName: 予測するターゲットフィールドの履歴データを含む列。

      • TimestampAttributeName: 特定の項目のターゲット値が記録された時点を含む列。

      • ItemIdentifierAttributeName: ターゲット値を予測する項目識別子を含む列。

    これらのパラメータのリクエストの例を次に示します。この例では、20 日間にわたる特定の項目の予想数量または需要水準の日次予測を設定します。

    "AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },
  • AutoML ジョブのアーティファクトを保存する Amazon S3 出力パスを指定する OutputDataConfig

  • データへのアクセスに使用するロールの ARN を指定する RoleArn。データへのアクセス権が付与された実行ロールの ARN を使用できます。

その他のすべてのパラメータは省略可能です。例えば、特定の予測分位数を設定したり、データセット内の欠損値の filling メソッドを選択したり、予測頻度と合わないデータの集計方法を定義したりすることができます。これらの追加パラメータの設定方法については、「任意指定のパラメータ」を参照してください。

任意指定のパラメータ

以下のセクションでは、時系列予測の AutoML ジョブに渡すことができるいくつかのオプションパラメータの詳細を説明します。

Autopilot は、ターゲットの時系列で 6 つのモデル候補をトレーニングし、スタッキングアンサンブルメソッドを使用してこれらのモデルを組み合わせ、特定の目標メトリクスに最適な予測モデルを作成します。各オートパイロット予測モデルは、P1 と P99 の間の分位数で予測を生成することによって確率予測を生成します。これらの分位数は、予測の不確実性を考慮するために使用されます。デフォルトでは、0.1 (p10)、0.5 (p50)、0.9 (p90) の予測が生成されます。独自の分位数を指定することもできます。

Autopilot では、 の ForecastQuantiles 属性で 0.01 (p1) から 0.99 (p99) までの 5 つの予測分位数を 0.01 以上の増分で指定できますTimeSeriesForecastingJobConfig

次の例では、20 日間にわたる特定の品目の予測数量または需要レベルについて、10 パーセンタイル、25 パーセンタイル、50 パーセンタイル、75 パーセンタイル予測、90 パーセンタイル予測を毎日設定しています。

"AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "ForecastQuantiles": ["p10", "p25", "p50", "p75", "p90"], "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },

予測モデル (実験における最適なモデル候補とも呼ばれる) を作成するには、予測頻度を指定する必要があります。予測頻度によって、予測に含まれる予測の頻度が決定します。例えば、月次販売予測です。Autopilot の最適なモデルは、データが記録される頻度よりも高いデータ頻度の予測を生成することができます。

トレーニング中、Autopilot は指定した予測頻度と一致しないデータを集約します。例えば、日次データはあるが、毎週予測頻度を指定するような場合です。Autopilot は、そのデータが属する週に基づいて日次データを調整します。その後、Autopilot はそれを週ごとに 1 つのレコードにまとめます。

集約時、デフォルトの変換メソッドは、データを合計することです。の Transformations 属性で AutoML ジョブを作成するときに、集約を設定できますTimeSeriesForecastingJobConfig。サポートされている集約メソッドは sum (デフォルト) avgfirstminmax です。集約はターゲット列でのみサポートされます。

次の例では、個々のプロモーション予測の平均を計算し、最終的な集約予測値を提供するように集約を構成します。

"Transformations": { "Aggregation": { "promo": "avg" } }

Autopilot には、時系列データセットのターゲット列やその他の数値列の欠損値を処理するための filling メソッドが多数用意されています。サポートされている filling メソッドのリストと使用可能な filling ロジックについては、「欠損値の処理」を参照してください。

AutoML ジョブを作成するTimeSeriesForecastingJobConfigときに、 の Transformations 属性で filling 戦略を設定します。

filling メソッドを設定するには、キーと値のペアを指定する必要があります。

  • キーは、filling メソッドを指定する列の名前です。

  • キーに関連付けられている値は、その列の filling 戦略を定義するオブジェクトです。

1 つの列に複数の filling メソッドを指定できます。

filling メソッドに特定の値を設定するには、fill パラメータに目的の filling メソッド値 (例: "backfill" : "value") を設定し、「_value」をサフィックスを付けた追加パラメータで実際の filling 値を定義します。たとえば、backfill の値を 2 に設定するには、"backfill": "value" および "backfill_value":"2" の 2 つのパラメータを含める必要があります。

以下の例では、不完全データ列「price」の filling 戦略を以下のように指定します。項目の最初のデータポイントから最後のデータポイントまでの間の欠損値はすべて 0 に設定され、その後、データセットの終了日まで、すべての欠損値は値 2 で埋められます。

"Transformations": { "Filling": { "price": { "middlefill" : "zero", "backfill" : "value", "backfill_value": "2" } } }

Autopilot は、モデル候補を評価し、予測の生成に使用するモデルを選択するのに役立つ精度メトリクスを生成します。時系列予測実験を実行する場合、AutoML を選択して Autopilot に予測子を最適化させるか、手動で予測子のアルゴリズムを選択することができます。

デフォルトでは、Autopilot は平均重み付き分位損失を使用します。ただし、AutoML の MetricName 属性で AutoMLJobObjective ジョブを作成するときに、目標メトリクスを設定できます。

利用可能なアルゴリズムのリストについては、「アルゴリズムは時系列予測をサポートします。」を参照してください。

Autopilot では、特徴エンジニアリングされた祝祭日情報データセットを時系列に組み込むことができます。Autopilot は 250 か国の祝祭日カレンダーをネイティブにサポートします。国を選択すると、Autopilot は、トレーニング中にその国の祝祭日カレンダーを、データセット内のすべての項目に適用します。これにより、モデルは特定の祝祭日に関連するパターンを特定できます。

オブジェクトを の HolidayConfig 属性HolidayConfigAttributesに渡すことで、AutoML ジョブの作成時に祝祭日特徴量化を有効にできますTimeSeriesForecastingJobConfigHolidayConfigAttributes オブジェクトには、時系列データセットを補強するために使用される祝祭日カレンダーの国を決定する 2 文字の CountryCode 属性が含まれています。

サポートされているカレンダーのリストとそれに対応する国コードについては、「国コード」を参照してください。

Autopilot を使用すると、予測モデルをエンドポイントに自動的にデプロイできます。AutoML ジョブの最適なモデル候補の自動デプロイを有効にするには、AutoML ジョブリクエストに ModelDeployConfig を含めます。これにより、最適なモデルを SageMaker エンドポイントにデプロイできます。カスタマイズできる設定は以下のとおりです。