

 Amazon Forecast は新規顧客には利用できなくなりました。Amazon Forecast の既存のお客様は、通常どおりサービスを引き続き使用できます。[詳細はこちら](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

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

# 変換関数
<a name="data-transformations"></a>

変換関数は、関連する時系列の行を選択して変更する一連のオペレーションです。条件オペレーションで必要な行を選択します。次に、変換オペレーションを行って行を変更します。すべての条件は AND 演算で結合されます。つまり、変換を適用するにはすべての条件を満たす必要があります。変換は、記載された順序で適用されます。

What-If 予想を作成するときは、**変換関数ビルダー**を使用して適用する条件と変換を指定します。以下の画像は、この機能を示しています。

![\[Transformation function builder interface with options to modify price and stock count.\]](http://docs.aws.amazon.com/ja_jp/forecast/latest/dg/images/transformationFunctionsMod.png)


強調表示されたセクションでは、`blue` 色の商品について、`tacoma` (ワシントン州タコマなど) の店舗で、`price` 列に0.90を掛けています (つまり、10% の割引)。そのために Amazon Forecast はまず、`tacoma` と等しい `store` の行のみが含まれるようベースラインに関連する時系列のサブセットを作成します。

そのサブセットは、`blue` と等しい `color` の行のみを含むようにさらに絞り込まれます。最後に、`price` 列のすべての値に 0.90 を掛けて、What-if 予想に使用する新しい関連時系列を作成します。

Amazon Forecast では、以下の条件がサポートされています。
+ `EQUALS` - 列の値が条件に入力された値と同じ。
+ `NOT_EQUALS` - 列の値が条件に入力された値と同じではない。
+ `LESS_THAN` - 列の値が条件に入力された値より小さい。
+ `GREATER_THAN` - 列の値が条件に入力された値より大きい。

Amazon Forecast では、次のアクションがサポートされます。
+ `ADD` - 指定した値を列のすべての行に加算する。
+ `SUBTRACT` - 指定した値を列のすべての行に減算する。
+ `MULTIPLY` - 指定した値を列のすべての行に乗算する。
+ `DIVIDE` - 指定した値を列のすべての行に除算する。

SDK を使用して時系列変換を指定する方法の例を以下に示します。

------
#### [ Example 1 ]

この例では、シアトルのストアのすべての商品に 10% の割引を適用します。「City」は予想ディメンションであることに注意してください。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "MULTIPLY",
      "Value": 0.90
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "seattle",
        "Condition": "EQUALS"
      }
    ]
  }
]
```

------
#### [ Example 2 ]

この例では、「electronics」カテゴリの全商品に 10% の割引を適用しています。「product\$1category」はアイテムのメタデータであることに注意してください。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "MULTIPLY",
      "Value": 0.90
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "product_category",
        "AttributeValue": "electronics",
        "Condition": "EQUALS"
      }
    ] 
  }
]
```

------
#### [ Example 3 ]

この例では、特定のアイテム ID BOA21314K に 20% のマークアップを適用しています。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "MULTIPLY",
      "Value": 1.20
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "item_id",
        "AttributeValue": "BOA21314K",
        "Condition": "EQUALS"
      }
    ] 
  }
]
```

------
#### [ Example 4 ]

この例では、シアトル店とベルビュー店の全商品に 1 USD 加算されます。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "ADD",
      "Value": 1.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "seattle",
        "Condition": "EQUALS"
      }
    ] 
  },
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "ADD",
      "Value": 1.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "bellevue",
        "Condition": "EQUALS"
      }
    ] 
  }
]
```

------
#### [ Example 5 ]

この例では、2022 年 9 月のシアトルの全商品から 1 USD を差し引きます。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "SUBTRACT",
      "Value": 1.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "seattle",
        "Condition": "EQUALS"
      },
      {
        "AttributeName": "timestamp",
        "AttributeValue": "2022-08-31 00:00:00",
        "Condition": "GREATER_THAN"
      },
      {
        "AttributeName": "timestamp",
        "AttributeValue": "2022-10-01 00:00:00",
        "Condition": "LESS_THAN"
      }
    ] 
  }
]
```

------
#### [ Example 6 ]

この例では、価格に最初に 10 を掛け、次に 5 USD を価格から差し引きます。アクションは、宣言された順序で適用されることに注意してください。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "MULTIPLY",
      "Value": 10.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "seattle",
        "Condition": "EQUALS"
      }
    ]
    },
    {
    "Action": {
      "AttributeName": "price",
      "Operation": "SUBTRACT",
      "Value": 5.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "seattle",
        "Condition": "EQUALS"
      }
    ] 
   }
]
```

------
#### [ Example 7 ]

この例では空のセットを作成しているため、アクションはどの時系列にも適用されません。このコードは、シアトルとベルビューにあるすべての商品の価格を変更しようとしています。条件は AND 演算で結合され、店舗は 1 つの都市にしか存在できないため、結果は空のセットになります。そのため、アクションは適用されません。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "MULTIPLY",
      "Value": 10.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "city",
        "AttributeValue": "seattle",
        "Condition": "EQUALS"
      },
      {
        "AttributeName": "city",
        "AttributeValue": "bellevue",
        "Condition": "EQUALS"
      },
    ] 
  }
]
```

複数の属性に条件を適用する方法の例については、例 4 を参照してください。

------
#### [ Example 8 ]

タイムスタンプを使用する変換条件は、未加工データではなく、境界が揃ったデータに適用されます。例えば、データを 1 時間ごとに入力し、予想を 1 日ごとに入力するとします。この場合、Forecast はタイムスタンプをその日に揃えるので、`2020-12-31 01:00:00` は `2020-12-31 00:00:00` と合っています。このコードでは、境界に沿ったタイムスタンプのタイムスタンプが指定されていないため、空のセットが作成されます。

```
TimeSeriesTransformations=[
  {
    "Action": {
      "AttributeName": "price",
      "Operation": "MULTIPLY",
      "Value": 10.0
      },
    "TimeSeriesConditions": [
      {
        "AttributeName": "timestamp",
        "AttributeValue": "2020-12-31 01:00:00",
        "Condition": "EQUALS"
      },
    ] 
  }
]
```

------