转换函数 - Amazon Forecast

Amazon Forecast 不再向新买家开放。Amazon Forecast 的现有客户可以继续照常使用该服务。了解更多

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

转换函数

转换函数是一组操作,可用于选择和修改相关时间序列中的行。您可以通过条件操作来选择需要的行。然后,可以使用转换操作修改行。所有条件都与一个AND操作相结合,这意味着所有条件都必须为真才能应用转换。将按转换列出的顺序应用转换。

在创建假设分析预测时,请使用转换函数生成器来指定要应用的条件和转换。下图对此功能进行了说明。

Transformation function builder interface with options to modify price and stock count.

在突出显示的部分中,对于 tacoma(即华盛顿州塔科马市)商店中标颜色 blue 的项目,price 列乘以 0.90(即 10% 的折扣)。为此,Amazon Forecast 首先要创建一个基准相关时间序列的子集,使其仅包含 store 中等于 tacoma 的行。

该子集被进一步缩减为仅包含 color 中等于 blue 的行。最后,将 price 列中的所有值乘以 0.90,以创建一个在假设分析预测中使用的新相关时间序列。

Amazon Forecast 支持以下条件:

  • EQUALS - 此列中的值与条件中提供的值相同。

  • NOT_EQUALS - 此列中的值与条件中提供的值不同。

  • LESS_THAN - 此列中的值小于条件中提供的值。

  • GREATER_THAN - 此列中的值大于条件中提供的值。

Amazon Forecast 支持以下操作:

  • ADD - 此列中的所有行都加上提供的值。

  • SUBTRACT - 从此列中的所有行中减去提供的值。

  • MULTIPLY - 此列中的所有行乘以提供的值。

  • DIVIDE - 此列中的所有行除以提供的值。

以下是如何使用指定时间序列变换的示例SDK。

Example 1

此示例对西雅图商店的所有项目应用 10% 的折扣。请注意,“城市”是一个预测维度。

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

此示例对“电子产品”类别中的所有项目应用 10% 的折扣。请注意,“product_category”是一个项目元数据。

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

此示例对特定 item BOA21314K _id 应用了 20% 的加价。

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

此示例为西雅图和贝尔维尤商店的所有项目增加 1 美元。

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 美元。

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 美元。请注意,此类操作是按照声明的顺序应用的。

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操作相结合,并且商店只能存在于一个城市中,因此结果为空集。因此,此操作不适用。

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

使用时间戳的转换条件适用于边界对齐的数据,而不适用于原始数据。例如,您每小时输入一次数据,然后每天进行预测。在本用例中,Forecast 会将时间戳与当天对齐,因此将 2020-12-31 01:00:002020-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" }, ] } ]