[アップデート] Amazon Forecastに時系列データセットの欠損値自動補完オプションが追加されました

2020.05.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の貞松です。

時系列予測のマネージドサービスであるAmazon Forecastに時系列データセットの欠損値自動補完オプションが追加されました。 これにより、予測のターゲットとなる時系列データ、およびターゲットデータに関連する任意の時系列データについて、欠損しているデータを設定したルールに基づいて自動で補完した上で予測子の作成(予測モデルの学習)を実行することができるようになりました。

Amazon Forecast now supports new automated data imputation options for the related and target time series datasets

欠損値データの補完ルール

欠損値データが補完されるデータセットタイプはTARGET_TIME_SERIES(予測対象の時系列データ)とRELATED_TIME_SERIES(予測対象に関連する時系列データ)で、それぞれのデータセットで設定可能な補完ルールは下表の通りです。

| データセットタイプ | 補完方法 | 使用可能な補完ルール | デフォルト値 | | :- | :- | :- | :- | | TARGET_TIME_SERIES | Middle fill Back fill | zero - 0で補完 value - Integerもしくはfloat nan - 値無しのまま mean - 時系列データの平均値 median - 時系列データの中央値 min - 時系列データの最小値 max - 時系列データの最大値 | zero | | RELATED_TIME_SERIES | Middle fill Back fill Future fill | zero - 0で補完 value - Integerもしくはfloat mean - 時系列データの平均値 median - 時系列データの中央値 min - 時系列データの最小値 max - 時系列データの最大値 | デフォルトでは補完設定なし |

補完方法によって、データのどの部分の欠損値が補完されるかは下図を参照してください。

画像引用元:https://docs.aws.amazon.com/ja_jp/forecast/latest/dg/howitworks-missing-values.html

欠損値補完の設定方法

AWSコンソール上でForecastを使用して時系列予測を作成する手順は以下の記事を参照してください。

Amazon Forecastでお手軽に時系列予測

ここでは欠損値補完の設定部分を抜粋して解説します。

Train Predictorのページ(新しい予測子の作成)で、Advanced configurations→FeaturizationsにJSON形式で設定を記述します。

下記は設定の一例です。 補完ルールにvalueを設定した場合は、補完する値を設定する必要もあります。例えば、backfillvalueに設定した場合は、backfill_valueに対して任意の値を設定します。

[
    //TARGET_TIME_SERIESに対する設定
    {
        "AttributeName": "target_value",
        "FeaturizationPipeline": [
            {
                "FeaturizationMethodName": "filling",
                "FeaturizationMethodParameters": {
                    "aggregation": "sum",
                    "middlefill": "zero"
                    "backfill": "zero"
                }
            }
        ]
    },
    //RELATED_TIME_SERIESに対する設定
    {
        "AttributeName": "price",
        "FeaturizationPipeline": [
            {
                "FeaturizationMethodName": "filling",
                "FeaturizationMethodParameters": {
                    "middlefill": "median",
                    "backfill": "value",
                    "backfill_value": "2",
                    "futurefill": "max"               
                    }
            }
        ]
    }
]

動作検証

TARGET_TIME_SERIESの欠損値あり/なしパターンと、欠損値ありの場合に補完ルールを0埋め/平均値に設定したパターンで実際に時系列予測を作成してみます。

使用する時系列データは毎度お馴染み、UCI Machine Learning リポジトリ(http://archive.ics.uci.edu/ml)で公開されている電力利用量データを用います。

欠損値なし

欠損値なしのデータを使用して時系列予測を作成した場合は、以下のような結果になりました。

欠損値あり・0埋め補完

意図的に欠損値を作り出したデータを用いて、補完ルールをzeroに設定して時系列予測を作成します。

作成結果は以下のようになりました。

欠損値あり・平均値で補完

こちらも欠損値を作り出したデータを用いて、今度は補完ルールとしてmeanを設定して時系列予測を作成します。

作成結果は以下のようになりました。

評価値の比較

上記3パターンの予測子(学習済みの予測モデル)について、評価値を比較してみると概ね同程度の値となっており、欠損値補完を適用した場合もそれほど性能は劣化していないようです。

まとめ

Amazon Forecastのアップデートにより、時系列データセットの欠損値を自動で補完できるようになりました。 対象とする時系列データの特性に応じて、補完する値を検討する必要はありますが、データが欠損しているデータについても、簡単な設定だけでデータを補完して予測を作成することができます。 実運用環境では、データの取り込みが遅延したり、失敗して歯抜けになるケースもあるかと思いますので、この設定を施しておくのが良いかと思います。