

 Amazon Forecast 不再向新买家开放。Amazon Forecast 的现有客户可以继续照常使用该服务。[了解更多](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

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

# 假设分析
<a name="what-if"></a>

 假设分析是一种工具，可用于调查和解释不同方案可能对 Amazon Forecast 创建的基准预测产生的影响。基准预测是 Amazon Forecast 根据您提供的原始相关时间序列创建的预测。

假设分析会根据您选择修改相关时间序列的方式创建一系列假设分析预测。将这些假设预测与基准预测进行比较和对比，有助于您了解具体的变化会如何影响您的模型。

有两种创建已修改的相关时间序列的方法。您可以在 Amazon S3 路径中提供已修改的相关时间序列，也可以为现有的相关时间序列指定一组转换。在指定一组转换时，会创建原始相关时间序列的副本以包含这些更改。

此转换允许您创建相关时间序列的子集并修改相关时间序列的特定属性。有关更多信息，请参阅[替换数据集](replacement-series.md) 和[转换函数](data-transformations.md)。

**Topics**
+ [创建假设分析](#how-what-if-works)
+ [转换函数](data-transformations.md)
+ [替换数据集](replacement-series.md)

## 创建假设分析
<a name="how-what-if-works"></a>

假设分析讨论了基准相关时间序列的变化如何影响预测。您只能根据使用. 的预测创建假设分析。 AutoPredictor在创建假设分析后，您可以创建一个或多个假设分析预测。比较假设分析预测和基准预测，然后导出一个或多个假设分析预测。

**注意**  
您的数据必须采用逗号分隔值（CSV）格式，以创建假设分析。

**Topics**
+ [创建假设分析](#create-analysis)
+ [创建假设分析预测](#create-forecast)
+ [比较假设分析预测](#compare-forecasts)
+ [导出假设分析预测](#export-forecasts)
+ [查询假设分析预测](#query-wi-forecasts)

### 创建假设分析
<a name="create-analysis"></a>

您可以使用 Forecast 控制台或 Forecast 软件开发工具包 (SDK) 创建假设分析。

------
#### [ Console ]

要创建假设分析，请完成以下步骤。

1. 创建使用训练过的预测 AutoPredictor。

1. 打开包含您感兴趣的预测的数据集组控制面板。

1. 选择**探索假设分析**。

1. 在 Insights 页面中的**假设分析**选项卡上，选择**创建**。

1. 在 **假设分析名称**字段中提供一个唯一名称，然后为此分析选择基准预测。

1. 在**项目选择**区域中，选择是否要在分析中自动包含所有项目，还是要指定包含带文件的项目。

   如果您选定**选择带文件的项目**，则必须提供一个数据集，该数据集正好包含要在假设分析预测中修改的项目。有关更多信息，请参阅 [指定时间序列](forecast-explainability.md#forecast-explainability-time-series)。

1. 选择**创建假设分析**。假设分析页面顶部的横幅会显示假设分析创建作业的状态。

------
#### [ SDK ]

使用该[CreateWhatIfAnalysis](API_CreateWhatIfAnalysis.md)操作，为其提供基准预测的唯一名称 WhatIfAnalysisName 并提供预测 ARN。 ForecastArn下面的示例显示了使用“item\_id”和“store\_location”维度组合的时间序列架构。有关更多信息，请参阅 [指定时间序列](forecast-explainability.md#forecast-explainability-time-series)。

```
{
  "ForecastArn": "arn:aws:forecast:region:acctNumber:forecast/baselineForecast",
  "WhatIfAnalysisName": "unique_name",
  "TimeSeriesSelector": {
    "TimeSeriesIdentifiers": {
      "DataSource": {
        "S3Config": {
          "Path": "s3://bucket/example-path",
          "RoleArn": "arn:aws:iam::000000000000:role/ExampleRole"
        }
      },
      "Schema": {
        "Attributes": [
          {
            "AttributeName": "item_id",
            "AttributeType": "string"
          }
          { 
            "AttributeName": "store_location",
            "AttributeType": "string"
          }
        ]
      }
    }
  }
}
```

------

### 创建假设分析预测
<a name="create-forecast"></a>

您可以使用 Forecast 控制台或 Forecast 软件开发工具包 (SDK) 创建假设分析预测。

------
#### [ Console ]

要创建假设分析预测，请完成以下步骤：

1. 在 Insights 页面的**假设分析**选项卡上，选择您感兴趣的假设分析。

1. 在**假设分析预测**部分中，选择**创建**。

1. 在创建假设分析预测的页面上，提供唯一的**假设分析预测名称**，然后选择**使用转换函数**或**使用替换数据集定义假设预测**。有关更多信息，请参阅[替换数据集](replacement-series.md) 和[转换函数](data-transformations.md)。

   1. 如果您选择**使用转换函数**，则必须使用**转换函数生成器**来选择和修改假设分析预测中包含的行。所有转换都将按其指定的顺序应用。条件按其指定的顺序应用，并使用 AND 操作进行连接。要满足所有条件才能应用转换。

   1. 如果您选择**使用替换数据集定义假设分析预测**，则必须提供一个替换数据集，该数据集只包含要为假设分析预测修改的行。

1. 选择**创建**。

------
#### [ SDK - Transformation Function ]

使用该[CreateWhatIfForecast](API_CreateWhatIfForecast.md)操作，为其提供唯一名称 WhatIfAnalysisName 并提供您的预测 ARN。 ForecastArn下面的示例显示了当“store\_location”不是“tacoma”时转换为“价格”的架构。

```
{
  "WhatIfAnalysisArn": "arn:aws:forecast:us-west-2:666488130463:what-if-analysis/jan2020forecast/PromotionAnalysis_01G8MB3PZM89J9V1VEXCC0BS63",
  "WhatIfForecastName": "unique_name",
  "TimeSeriesTransformations": [
    {
      "Action": {
        "AttributeName": "price",
        "Operation": "MULTIPLY",
        "Value": 0.85
      },
      "TimeSeriesConditions": [
        {
          "AttributeName": "store_location",
          "AttributeValue": "tacoma",
          "Condition": "NOT_EQUALS"
        }
      ]
    }
  ]
}
```

在此示例中，`jan2020forecast` 是基准预测，`PromotionAnalysis_01G8MB3PZM89J9V1VEXCC0BS63` 是假设分析的名称。

您也可以通过 [TimeSeriesReplacementsDataSource](API_TimeSeriesReplacementsDataSource.md) 操作指定一个替换数据集。

------
#### [ SDK - Replacement Dataset ]

使用该[CreateWhatIfForecast](API_CreateWhatIfForecast.md)操作，为其提供唯一名称 WhatIfAnalysisName 并提供您的预测 ARN。 ForecastArn下面的示例显示了一个替换数据源的架构。

```
{
  "WhatIfAnalysisArn": "arn:aws:forecast:us-west-2:666488130463:what-if-analysis/jan2020forecast/PromotionAnalysis_01G8MB3PZM89J9V1VEXCC0BS63",
  "WhatIfForecastName": "unique_name",
  "TimeSeriesReplacementsDataSource": {
    "S3config": {
      "Path" : "s3://{{bucket-name}}/replacementDatasource.csv",
      "RoleArn": "arn:aws:iam::{{acct-id}}:role/{{Role}}"
    },
    "Schema": {
      Attributes" : [
        {
          "AttributeName": "item_id",
          "AttributeType": "string"
        },
        {
          "AttributeName": "timestamp",
          "AttributeType": "timestamp"
        },
        {
          "AttributeName": "price",
          "AttributeType": "float"
        },
        {
          "AttributeName": "stock_count",
          "AttributeType": "integer"
        },
      ]
    }
  }
}
```

您还可以通过 [TimeSeriesTransformation](API_TimeSeriesTransformation.md) 操作来指定对相关时间序列的更改。

------

### 比较假设分析预测
<a name="compare-forecasts"></a>

要比较假设分析预测，请在 Forecast 控制台中完成以下步骤：

1. 在 Insights 页面中的**假设分析**选项卡上，选择您感兴趣的假设分析。

1. 在**比较假设分析预测**的部分中，指定要分析的项目、一个或多个**假设分析预测**以及至少一种**预测类型**。  
![](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/compareWhatIfForecasts.png)

   在此示例中，有两种假设分析预测，即 `priceCut10pct` 和 `priceIncrease20pct`，它们与 `item_105` 的预测类型 `p50`、`p10` 和 `p90` 进行了比较。该图表允许您查看这些预测与基准时间序列的对比情况。

1. 将鼠标悬停在图表上，以查看假设分析预测与基准预测的比较情况。

### 导出假设分析预测
<a name="export-forecasts"></a>

您可以使用 Forecast 控制台或 Forecast 软件开发工具包 (SDK) 导出假设分析预测。

------
#### [ Console ]

要导出假设分析预测，请执行以下步骤：

1. 在 Insights 页面中的**假设分析**选项卡上，选择您感兴趣的假设分析。

1. 在**假设分析预测导出**的部分中，选择**创建导出**。

1. 在创建假设分析预测导出的页面上，提供唯一的**假设分析预测导出名称**，指定要包含的**假设分析预测**，选择**导出位置**，然后提供 **IAM 角色**。

1. 选择**创建导出**。

------
#### [ SDK ]

使用 [CreateWhatIfForecastExport](API_CreateWhatIfForecastExport.md) 操作，将“目标”配置为指向将包含导出内容的 Amazon S3 存储桶。指定要导出的具体假设分析预测，并为导出提供一个唯一的名称。

```
{
  "WhatIfForecastArns": [ "arn:aws:forecast:region:acctNumber:what-if-forecast/id1" , "arn:aws:forecast:region:acctNumber:what-if-forecast/id2" ],
  "WhatIfForecastExportName": "unique_export_name",
  "Destination": {
    "S3Config": {
      "Path": "s3://bucket/example-path",
      "RoleArn": "arn:aws:iam::000000000000:role/ExampleRole"
    }
  },
}
```

------

### 查询假设分析预测
<a name="query-wi-forecasts"></a>

您可以使用 [QueryWhatIfForecast](API_forecastquery_QueryWhatIfForecast.md) 操作查询假设分析预测。默认情况下，返回预测的完整范围。您可以请求完整预测中的特定日期范围。

当您查询假设分析预测时，必须指定筛选条件。筛选条件是密钥值对。键是用于创建预测的其中一个数据集中的架构属性名称之一（包括预测维度）。值 是指定密钥的有效值。您可以指定多个密钥值对。返回的假设分析预测将只包含满足所有条件的项目。

例如，使用此代码获取 `product_42` 的假设分析预测。

```
{
          "Filters": { 
          "item_id" : "product_42"
          },
          "WhatIfForecastArn": "arn:aws:forecast:region:acctNumber:what-if-forecast/id1"
}
```