

 Amazon Forecast 不再提供給新客戶。Amazon Forecast 的現有客戶可以繼續正常使用服務。[進一步了解」](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 訓練預測器
<a name="howitworks-predictor"></a>

預測器是一種 Amazon Forecast 模型，使用目標時間序列、相關時間序列、項目中繼資料以及您包含的任何其他資料集進行訓練。您可以使用預測器，根據您的時間序列資料產生預測。

根據預設，Amazon Forecast 會建立 AutoPredictor，其中 Forecast 會將演算法的最佳組合套用至資料集中的每個時間序列。

**Topics**
+ [建立預測器](#creating-predictors)
+ [升級至 AutoPredictor](#upgrading-autopredictor)
+ [不同預測頻率的資料彙總](data-aggregation.md)
+ [使用其他資料集](#using-additional-datasets)
+ [使用舊版預測器](#legacy-predictors)
+ [評估預測器準確性](metrics.md)
+ [重新訓練預測器](retrain-predictors.md)
+ [天氣索引](weather.md)
+ [假日特徵化](holidays.md)
+ [預測器可解釋性](predictor-explainability.md)
+ [預測器監控](predictor-monitoring.md)
+ [Amazon Forecast 演算法](aws-forecast-choosing-recipes.md)

## 建立預測器
<a name="creating-predictors"></a>

Amazon Forecast 需要下列輸入來訓練預測器：
+ **資料集群組** – 必須包含目標時間序列資料集的資料集群組。目標時間序列資料集包含目標屬性 (`item_id`) 和時間戳記屬性，以及任何維度。相關的時間序列和項目中繼資料是選用的。如需詳細資訊，請參閱[匯入資料集](howitworks-datasets-groups.md)。
+ **預測頻率** – 預測的精細程度 （每小時、每日、每週等）。當您提供頻率單位和值時，Amazon Forecast 可讓您判斷預測的確切精細程度。僅允許整數值    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/howitworks-predictor.html)

  例如，如果您想要每隔一週預測一次，您的頻率單位為每週一次，且值為 2。或者，如果您想要季度預測，您的頻率單位是每月，而值是 3。

  當以高於預測頻率的頻率收集您的資料時，它會彙總到預測頻率。這包括追蹤時間序列和相關的時間序列資料。如需彙總的詳細資訊，請參閱[不同預測頻率的資料彙總](data-aggregation.md)。
+ **預測時間範圍** – 預測的步驟次數。

您也可以為下列選用輸入設定值：
+  **時間對齊界限** – 時間界限預測使用 來彙總您的資料，並產生與您指定的預測頻率一致的預測。如需彙總的詳細資訊，請參閱[不同預測頻率的資料彙總](data-aggregation.md)。如需指定時間界限的資訊，請參閱[時間邊界](data-aggregation.md#time-boundaries)。
+ **預測維**度 – 維度是目標時間序列資料集中的選用屬性，可與目標值 (`item_id`) 搭配使用，以建立個別的時間序列。
+ **預測類型** – 用來評估預測器的四分位數。
+ **最佳化指標** – 用來最佳化預測器的準確度指標。
+ **其他資料集** – 內建 Amazon Forecast 資料集，例如天氣索引和假日。

您可以使用軟體開發套件 (SDK) 或 Amazon Forecast 主控台來建立預測器。

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

**建立預測器**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/)：// 開啟 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇**訓練新的預測器**。

1. 提供下列必要欄位的值：
   +  **Name** - 唯一的預測器名稱。
   + **預測頻率** - 預測的精細程度。
   + **預測時間範圍** - 要預測的時間步驟數目。

1. 選擇 **開始使用**。

如需其他資料集的詳細資訊，請參閱 [天氣索引](weather.md)和 [假日特徵化](holidays.md)。若要進一步了解自訂預測類型和最佳化指標，請參閱[評估預測器準確性](metrics.md)。

------
#### [ AWS CLI ]

若要使用 建立自動預測器 AWS CLI，請使用 `create-predictor`命令。下列程式碼會建立自動預測器，以預測未來 14 天。

提供 預測器的名稱，以及包含訓練資料的資料集群組的 Amazon Resource Name (ARN)。選擇性地修改預測時間範圍和預測頻率。選擇性地為預測器新增任何標籤。如需詳細資訊，請參閱 [標記 Amazon Forecast 資源](tagging-forecast-resources.md)。

如需必要和選用參數的詳細資訊，請參閱[CreateAutoPredictor](API_CreateAutoPredictor.md)。

```
aws forecast create-predictor \
--predictor-name predictor_name \
--data-config DatasetGroupArn="arn:aws:forecast:region:account:dataset-group/datasetGroupName" \
--forecast-horizon 14 \
--forecast-frequency D \
--tags Key=key1,Value=value1 Key=key2,Value=value2
```

若要進一步了解自訂預測類型和最佳化指標，請參閱`DataConfig`資料類型中定義的[評估預測器準確性](metrics.md)天氣索引和假日其他資料集。如需其他資料集的詳細資訊，請參閱 [天氣索引](weather.md)和 [假日特徵化](holidays.md)。

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 建立自動預測器，請使用 `create_auto_predictor`方法。下列程式碼會建立自動預測器，以預測未來 14 天。

提供 預測器的名稱，以及包含訓練資料的資料集群組的 Amazon Resource Name (ARN)。選擇性地修改預測時間範圍和預測頻率。選擇性地為預測器新增任何標籤。如需詳細資訊，請參閱 [標記 Amazon Forecast 資源](tagging-forecast-resources.md)。

如需必要和選用參數的詳細資訊，請參閱[CreateAutoPredictor](API_CreateAutoPredictor.md)。

```
import boto3
            
forecast = boto3.client('forecast')

create_predictor_response = forecast.create_auto_predictor(
    PredictorName = 'predictor_name',
    ForecastHorizon = 14,
    ForecastFrequency = 'D',
    DataConfig = {
      "DatasetGroupArn": "arn:aws:forecast:region:account:dataset-group/datasetGroupName"
    },
    Tags = [ 
      { 
         "Key": "key1",
         "Value": "value1"
      },
      { 
         "Key": "key2",
         "Value": "value2"
      }
    ]
)
print(create_predictor_response['PredictorArn'])
```

若要進一步了解自訂預測類型和最佳化指標，請參閱`DataConfig`資料類型中定義的[評估預測器準確性](metrics.md)天氣索引和假日其他資料集。如需其他資料集的詳細資訊，請參閱 [天氣索引](weather.md)和 [假日特徵化](holidays.md)。

------

## 升級至 AutoPredictor
<a name="upgrading-autopredictor"></a>

**Python 筆記本**  
如需將預測器升級至 AutoPredictor step-by-step指南，請參閱[將預測器升級至 AutoPredictor](https://github.com/aws-samples/amazon-forecast-samples/blob/main/notebooks/basic/Upgrading_to_AutoPredictor/UpgradeToAutoPredictor.ipynb)。

使用 AutoML 或手動選取 (CreatePredictor) 建立的預測器可以升級至 AutoPredictor。將現有的 升級至 AutoPredictor 將轉移所有相關預測器組態設定。

升級到 AutoPredictor 後，原始預測器將保持作用中狀態，升級的預測器將具有單獨的預測器 ARN。這可讓您比較兩個預測器之間的準確度指標，而且您仍然可以使用原始預測器產生預測。

您可以使用軟體開發套件 (SDK) 或 Amazon Forecast 主控台升級預測器。

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

**升級預測器**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/)：// 開啟 Amazon Forecast 主控台。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇要升級的預測器，然後選擇**升級**。

1. 設定升級預測器的唯一名稱。

1. 選擇**升級至 AutoPredictor**。

------
#### [ CLI ]

若要使用 升級預測器 AWS CLI，請使用 `create-predictor`方法，但*只*指定預測器名稱和 的值 `reference-predictor-arn`（您要升級的預測器 ARN)。

```
aws forecast create-predictor \
--predictor-name predictor_name \
--reference-predictor-arn arn:aws:forecast:region:account:predictor/predictorName
```

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 升級預測器，請使用 `create_auto_predictor`方法，但*只*指定預測器名稱和 的值 `ReferencePredictorArn`（您要升級的預測器 ARN)。

```
import boto3
            
forecast = boto3.client('forecast')

create_predictor_response = forecast.create_auto_predictor(
    PredictorName = 'predictor_name',
    ReferencePredictorArn = 'arn:aws:forecast:region:account:predictor/predictorName'
)
print(create_predictor_response['PredictorArn'])
```

------

# 不同預測頻率的資料彙總
<a name="data-aggregation"></a>

 建立預測器時，您必須指定預測頻率。預測頻率決定預測中預測的頻率。例如，每月銷售預測。Amazon Forecast predictor 可以產生高於您指定預測頻率的資料頻率預測。例如，即使每天記錄資料，您也可以產生每週預測。在訓練期間，預測會彙總每日資料，以每週預測頻率產生預測。

**Topics**
+ [彙總的運作方式](how-aggregation-works.md)
+ [時間邊界](#time-boundaries)
+ [資料彙總假設](aggregation-guidelines.md)

# 彙總的運作方式
<a name="how-aggregation-works"></a>

 在訓練期間，Amazon Forecast 會彙總不符合您指定預測頻率的任何資料。例如，您可能有一些每日資料，但指定每週預測頻率。預測會根據每日資料所屬的一週來調整。然後，預測會將它合併為每週的單一記錄。預測會根據資料與時間界限的關係，決定資料屬於哪個週 （或月份或日期等）。時間界限會指定時間單位的開頭，例如一天的開始時間或一週的開始時間。

 對於每小時和每分鐘預測或未指定的時間界限，預測會根據您頻率的時間單位使用預設的時間界限。對於具有每日、每週、每月或每年預測頻率的自動預測器，您可以指定自訂時間界限。如需時間界限的詳細資訊，請參閱 [時間邊界](data-aggregation.md#time-boundaries)。

 在彙總期間，預設的轉換方法是將資料加總。您可以在建立預測器時設定轉換。您可以在預測主控台中**建立預測器**頁面上的**輸入資料組態**區段中執行此操作。或者，您可以在 CreateAutoPredictor 操作的 中的 `Transformations` 參數[AttributeConfig](API_AttributeConfig.md)中設定轉換方法。

下表顯示使用預設時間界限的每小時預測頻率彙總範例：每小時從小時頂端開始。

**轉換前**


| 時間 | 資料 | 小時的整點 | 
| --- | --- | --- | 
| 2018-03-03 01:00:00 | 100 | 是 | 
| 2018-03-03 02:20:00 | 50 | 否 | 
| 2018-03-03 02:45:00 | 20 | 否 | 
| 2018-03-03 04:00:00 | 120 | 是 | 

**轉換後**


| 時間 | 資料 | 備註 | 
| --- | --- | --- | 
| 2018-03-03 01:00:00 | 100 |  | 
| 2018-03-03 02:00:00 | 70 | 介於 02:00:00-02:59:59 (50 \$1 20) 之間的值總和 | 
| 2018-03-03 03:00:00 | 空白 | 03:00:00-03:59:59 之間沒有值 | 
| 2018-03-03 04:00:00 | 120 |  | 

下圖顯示預測如何轉換資料以符合預設的每週時間界限。

![\[Raw sales data points transformed into a smooth demand time series curve over weekly intervals.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/data-alignment.png)


## 時間邊界
<a name="time-boundaries"></a>

時間界限會指定時間單位的開始，例如一週的開始日。在彙總您的資料之前，Amazon Forecast 會根據預測頻率的時間單位來調整資料。它會根據資料與時間界限的關係來執行此操作。

 例如，如果您指定每日預測頻率，但不是自己的時間界限，預測會根據記錄所屬的日期來調整每小時記錄。每天從 0 小時開始。一天開始時的定義，0 小時是時間界限。然後，預測會將每小時記錄彙總到當天的單一記錄。

預測會根據預測頻率的時間單位，使用預設的時間界限。如果您建立自動預測器，您可以指定自訂時間界限。

如果您同時指定自訂時間界限和自訂預測頻率，預測會在預測頻率內彙總您的資料，並將其與自訂時間界限對齊。預測頻率決定資料彙總的頻率，而自訂時間界限則決定對齊的位置。例如，假設您的資料是每天收集的，而且您希望 Amazon Forecast 在一年的每月 15 號產生季度預測。若要這樣做，請將預測頻率設定為每 3 個月一次，並將自訂時間界限設定為 15。請參閱下列 AWS Command Line Interface 範例。

```
aws forecast create-predictor \
--predictor-name predictor_name \
--data-config DatasetGroupArn="arn:aws:forecast:region:account:dataset-group/datasetGroupName" \
--forecast-horizon 4 \
--forecast-frequency 3M \
--time-alignment-boundary DayOfMonth=15
```

在此範例中，所有每日資料都會加總 （預設彙總） 至每三個月的 15 日。

請注意，此彙總不需要每日資料，只是每月或更頻繁地收集資料。

**Topics**
+ [預設時間界限](#default-time-boundaries)
+ [指定時間界限](#specifying-time-boundary)

### 預設時間界限
<a name="default-time-boundaries"></a>

下表列出預測在彙總資料時使用的預設時間對齊界限。


| 頻率 | 邊界 | 
| --- | --- | 
| 分鐘 | 一分鐘的最後一個整點 (45:00、06:00) | 
| 小時 | 一小時的最後一個整點 (09:00:00、13:00:00) | 
| 天 | 一天中的第一個小時 （第 0 小時） | 
| 週 | 最近的星期一 | 
| 月 | 一個月的第一天 | 
| 年 | 一年的第一天 (1 月 1 日) | 

### 指定時間界限
<a name="specifying-time-boundary"></a>

**注意**  
您只能指定自動預測器的時間界限。

 當您建立具有每日、每週、每月或每年預測頻率的自動預測器時，您可以指定預測用於彙總資料的時間界限。如果您的商業行事曆不符合預設的時間範圍，您可以指定時間界限。例如，您可能想要產生每月預測，其中每月從每月的第三天開始。如果您未指定時間界限，預測會使用一組 [預設時間界限](#default-time-boundaries)。

 您指定的時間界限單位必須是比預測頻率更精細的單位。下表列出您可以指定的時間界限單位和值，依預測頻率組織。

您只能指定邊界值為 `28`或更少`Monthly`的時間邊界。


| 預測頻率單位 | 邊界單位 | 邊界值 | 
| --- | --- | --- | 
| 每日 | 小時 | 0–23 | 
| 每週 | 週中的日 | 週一至週日 | 
| 每月 | 月中的日 | 1 到 28 | 
| 每年 | 月 | 1 月至 12 月 | 

建立預測器時，您可以指定時間對齊界限，如下所示。如需不同時間界限單位和界限值的資訊，您可以程式設計方式指定，請參閱 [TimeAlignmentBoundary](API_TimeAlignmentBoundary.md)。

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

****

**指定預測器的時間對齊界限**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 開啟 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇**訓練新的預測器**。

1. 提供必要**名稱**、**預測頻率**和**預測時間範圍**欄位的值。

1.  針對**時間對齊界限**，指定預測器在彙總資料時將使用的時間界限。此清單中的值取決於您選擇的**預測頻率**。

1. 選擇 **開始使用**。預測會使用您在建立預測器時指定的時間對齊界限來彙總資料。

------
#### [ AWS CLI ]

若要使用 指定預測器的時間對齊界限 AWS CLI，請使用 `create-predictor`命令。針對 `time-alignment-boundary` 參數，提供時間和界限值的單位。下列程式碼會建立 自動預測器，未來預測 5 週，每週會在星期二開始。

`DayOfWeek` 和 `DayOfMonth`值必須全部大寫。如需有關您可以指定之不同時間界限單位和界限值的資訊，請參閱 [TimeAlignmentBoundary](API_TimeAlignmentBoundary.md)。如需必要和選用參數的詳細資訊，請參閱[CreateAutoPredictor](API_CreateAutoPredictor.md)。

```
aws forecast create-predictor \
--predictor-name predictor_name \
--data-config DatasetGroupArn="arn:aws:forecast:region:account:dataset-group/datasetGroupName" \
--forecast-horizon 5 \
--forecast-frequency W \
--time-alignment-boundary DayOfWeek=TUESDAY
```

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 指定預測器的時間對齊界限，請使用 `create_auto_predictor`方法。針對 `TimeAlignmentBoundary` 參數，提供以時間單位做為索引鍵的字典，並以邊界值做為值。下列程式碼會建立 自動預測器，未來預測 5 週，每週會在星期二開始。

`DayOfWeek` 和 `DayOfMonth`值必須全部大寫。如需有關您可以指定之不同時間界限單位和界限值的資訊，請參閱 [TimeAlignmentBoundary](API_TimeAlignmentBoundary.md)。如需必要和選用參數的詳細資訊，請參閱[CreateAutoPredictor](API_CreateAutoPredictor.md)。

```
import boto3
            
forecast = boto3.client('forecast')

create_predictor_response = forecast.create_auto_predictor(
    PredictorName = 'predictor_name',
    ForecastHorizon = 5,
    ForecastFrequency = 'W',
    DataConfig = {
      "DatasetGroupArn": "arn:aws:forecast:region:account:dataset-group/datasetGroupName"
    },
    TimeAlignmentBoundary = {
      "DayOfWeek": "TUESDAY"
    }
)
print(create_predictor_response['PredictorArn'])
```

------

# 資料彙總假設
<a name="aggregation-guidelines"></a>

預測不會假設您的資料來自任何特定時區。不過，它會在彙總時間序列資料時假設下列事項：
+ 所有資料皆來自同一時區。
+ 所有預測與資料集中的資料皆為同一時區。
+ 如果您在 [CreatePredictor](API_CreatePredictor.md) 操作的 [InputDataConfig](API_InputDataConfig.md) 參數中指定 [SupplementaryFeature](API_SupplementaryFeature.md) 假日功能，則輸入資料來自相同的國家/地區。

## 使用其他資料集
<a name="using-additional-datasets"></a>

建立預測器時，Amazon Forecast 可以包含天氣索引和假日。天氣索引會將氣象資訊納入您的模型，而假日則納入有關國定假日的資訊。

天氣索引需要目標時間序列資料集中的「地理位置」屬性，以及時間戳記時區的相關資訊。如需詳細資訊，請參閱[天氣索引](weather.md)。

假日包含超過 250 個國家的假日資訊。如需詳細資訊，請參閱[假日特徵化](holidays.md)。

## 使用舊版預測器
<a name="legacy-predictors"></a>

**注意**  
若要將現有預測器升級至 AutoPredictor，請參閱 [升級至 AutoPredictor](#upgrading-autopredictor)

AutoPredictor 是使用 Amazon Forecast 建立預測器的預設和偏好方法。AutoPredictor 會透過將演算法的最佳組合套用至資料集中的每個時間序列來建立預測器。

使用 AutoPredictor 建立的預測器通常比使用 AutoML 或手動選取建立的預測器更準確。預測可解釋性和預測器重新訓練功能僅適用於使用 AutoPredictor 建立的預測器。

Amazon Forecast 也可以透過下列方式建立舊版預測器：

1. **AutoML** - 預測會尋找效能最佳的演算法，並將其套用至整個資料集。

1. **手動選擇** - 手動選擇套用至整個資料集的單一演算法。

您可能可以使用軟體開發套件 (SDK) 建立舊版預測器。

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

**使用 AutoML**

使用 [`CreatePredictor`](API_CreatePredictor.md)操作，將 的值設定為 `PerformAutoML` `"true"`。

```
{
    ...
    "PerformAutoML": "true",
}
```

如果您使用 AutoML，則無法為下列 CreatePredictor 參數設定值：`AlgorithmArn`、`HPOConfig`、`TrainingParameters`。

------

# 評估預測器準確性
<a name="metrics"></a>

Amazon Forecast 會產生準確性指標來評估預測器，並協助您選擇要用來產生預測的項目。預測會使用根均方誤差 (RMSE)、加權量化損失 (wQL)、平均絕對百分比誤差 (MAPE)、平均絕對縮放誤差 (MASE) 和加權絕對百分比誤差 (WAPE) 指標來評估預測器。

Amazon Forecast 使用回溯測試來調校參數並產生準確性指標。在回溯測試期間，預測會自動將您的時間序列資料分割成兩組：訓練集和測試集。訓練集用於訓練模型，並產生測試集中資料點的預測。預測會比較預測值與測試集中觀察值，藉此評估模型的準確性。

預測可讓您使用不同的預測類型來評估預測器，這可以是一組四分位數預測和平均預測。平均預測提供點估計值，而四分位數預測通常會提供一系列可能的結果。

**Python 筆記本**  
如需評估預測器指標step-by-step指南，請參閱[使用項目層級回溯測試運算指標。](https://github.com/aws-samples/amazon-forecast-samples/blob/master/notebooks/advanced/Item_Level_Accuracy/Item_Level_Accuracy_Using_Bike_Example.ipynb)

**Topics**
+ [解譯準確性指標](#predictor-metrics)
+ [加權量化損失 (wQL)](#metrics-wQL)
+ [加權絕對百分比錯誤 (WAPE)](#metrics-WAPE)
+ [均方根錯誤 (RMSE)](#metrics-RMSE)
+ [平均絕對百分比錯誤 (MAPE)](#metrics-mape)
+ [平均絕對擴展錯誤 (MASE)](#metrics-mase)
+ [匯出準確性指標](#backtest-exports)
+ [選擇預測類型](#forecast-types)
+ [使用舊版預測器](#legacy-metrics)

## 解譯準確性指標
<a name="predictor-metrics"></a>

 Amazon Forecast 提供根均方誤差 (RMSE)、加權量化損失 (wQL)、平均加權量化損失 （平均 wQL)、平均絕對擴展錯誤 (MASE)、平均絕對百分比錯誤 (MAPE) 和加權絕對百分比錯誤 (WAPE) 指標，以評估您的預測器。除了整體預測器的指標之外，預測也會計算每個回溯測試時段的指標。

您可以使用 Amazon Forecast Software Development Kit (SDK) 和 Amazon Forecast 主控台來檢視預測器的準確性指標。

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

使用 [GetAccuracyMetrics](API_GetAccuracyMetrics.md) 操作，指定 y `PredictorArn` 來檢視每個回溯測試的 RMSE、MASE、MAPE、WAPE、平均 wQL 和 wQL 指標。

```
{
    "PredictorArn": "arn:aws:forecast:region:acct-id:predictor/example-id"
}
```

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

在預測器頁面上選擇您的**預測器**。預測器的準確度指標會顯示在**預測器指標**區段中。

------

**注意**  
 對於平均 wQL、wQL、RMSE、MASE、MAPE 和 WAPE 指標，較低的值表示卓越的模型。

**Topics**
+ [解譯準確性指標](#predictor-metrics)
+ [加權量化損失 (wQL)](#metrics-wQL)
+ [加權絕對百分比錯誤 (WAPE)](#metrics-WAPE)
+ [均方根錯誤 (RMSE)](#metrics-RMSE)
+ [平均絕對百分比錯誤 (MAPE)](#metrics-mape)
+ [平均絕對擴展錯誤 (MASE)](#metrics-mase)
+ [匯出準確性指標](#backtest-exports)
+ [選擇預測類型](#forecast-types)
+ [使用舊版預測器](#legacy-metrics)

## 加權量化損失 (wQL)
<a name="metrics-wQL"></a>

加權量化損失 (wQL) 指標會測量指定四分位數的模型準確性。當低預測和高預測的成本不同時，特別有用。透過設定 wQL 函數的權重 (**τ)，您可以自動納入對低預測和高預測的不同懲罰。

損失函數的計算方式如下。

![\[Mathematical equation for weighted quantile loss function with tau parameter.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/metrics-quantile-loss.png)


其中：  
** τ - 集合 \$10.01、0.02、...、0.99\$1 中的四分位數  
qi,t(τ) - 模型預測的 τ 四分位數。  
yi,t - 點的觀察值 (i，t)

wQL 的四分位數 (τ) 範圍可從 0.01 (P1) 到 0.99 (P99)。無法計算平均預測的 wQL 指標。

根據預設，預測會在 `0.1`(P10)、 `0.5` (P50) 和 `0.9`(P90) 運算 wQL。
+ **P10 (0.1)** - 實際值預期低於預測值的時間 10%。
+ **P50 (0.5)** - 實際值預期低於預測值的時間 50%。這也稱為中位數預測。
+ **P90 (0.9)** - 實際值預期會低於預測值 90% 的時間。

在零售業中，庫存不足的成本通常高於庫存過多的成本，因此 P75 的預測 (**τ = 0.75) 可能比在中位數四分位數 (P50) 的預測更重要。在這些情況下，wQL【0.75】 會將較大的懲罰權重指派給預測不足 (0.75)，並將較小的懲罰權重指派給預測過度 (0.25)。

![\[Two probability distribution curves showing demand forecasting at P50 and P75 quantiles.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/p50-p75-prediction.jpg)


上圖顯示 wQL【0.50】 和 wQL【0.75】 的不同需求預測。P75 的預測值明顯高於 P50 的預測值，因為 P75 預測預期會滿足 75% 的時間需求，而 P50 預測預期只會滿足 50% 的時間需求。

當所有項目和時間點的觀察值總和在指定的回溯測試時段大約為零時，加權四分位數損失表達式即為未定義。在這些情況下，預測會輸出未加權的四分位數損失，這是 wQL 表達式中的分子。

預測也會計算平均 wQL，這是所有指定四分位數的加權四分位數損失平均值。根據預設，這將是 wQL【0.10】、wQL【0.50】 和 wQL【0.90】 的平均值。

## 加權絕對百分比錯誤 (WAPE)
<a name="metrics-WAPE"></a>

加權絕對百分比錯誤 (WAPE) 會測量預測值與觀察值的整體偏差。WAPE 的計算方式是取得觀察值的總和和預測值的總和，並計算這兩個值之間的錯誤。數值越低表示模型越準確。

 當所有時間點和所有項目的觀察值總和在指定的回溯測試時段大約為零時，加權絕對百分比錯誤表達式會未定義。在這些情況下，預測會輸出未加權絕對錯誤總和，這是 WAPE 表達式中的分子。

![\[Mathematical formula for WAPE showing summation of absolute differences divided by sum of absolute values.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/WAPE.png)


其中：  
yi,t - 點的觀察值 (i，t)  
i,t ŷ - 點的預測值 (i，t)

 預測會使用平均預測做為預測值 i,tŷ。

WAPE 對於極端值比根均方誤差 (RMSE) 更強大，因為它使用絕對誤差而非平方誤差。

Amazon Forecast 先前將 WAPE 指標稱為平均絕對百分比錯誤 (MAPE)，並使用中位數預測 (P50) 做為預測值。Forecast 現在使用平均預測來計算 WAPE。wQL【0.5】 指標等同於 WAPE【中位數】 指標，如下所示：

![\[Mathematical equation showing the equivalence of wQL[0.5] and WAPE[median] metrics.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/wql-to-wape.PNG)


## 均方根錯誤 (RMSE)
<a name="metrics-RMSE"></a>

Root Mean Square Error (RMSE) 是平方錯誤平均值的平方根，因此比其他準確度指標對極端值更為敏感。數值越低表示模型越準確。

![\[Mathematical formula for Root Mean Square Error (RMSE) with summation and square root.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/metrics-rmse.png)


其中：  
yi,t - 點的觀察值 (i，t)  
i,t ŷ - 點的預測值 (i，t)  
nT - 測試集中的資料點數量

預測會使用平均預測做為預測值 i,tŷ。計算預測器指標時，nT 是回溯測試視窗中的資料點數量。

RMSE 使用殘差的平方值，這會放大極端值的影響。在只有幾個大型錯誤預測可能非常昂貴的使用案例中，RMSE 是更相關的指標。

在 2020 年 11 月 11 日之前建立的預測器預設會使用 0.5 四分位數 (P50) 計算 RMSE。Forecast 現在使用平均預測。

## 平均絕對百分比錯誤 (MAPE)
<a name="metrics-mape"></a>

平均絕對百分比錯誤 (MAPE) 會取得每個時間單位觀察值和預測值之間百分比錯誤的絕對值，然後平均這些值。數值越低表示模型越準確。

![\[Mathematical formula for Mean Absolute Percentage Error (MAPE) calculation.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/mape.png)


其中：  
At - 點 *t* 的觀察值  
Ft - 點 *t* 的預測值  
n - 時間序列中的資料點數量

預測會使用平均預測做為預測值 Ft。

MAPE 適用於時間點和極端值之間值有顯著差異的情況。

## 平均絕對擴展錯誤 (MASE)
<a name="metrics-mase"></a>

平均絕對擴展錯誤 (MASE) 的計算方式是將平均錯誤除以擴展係數。此擴展因素取決於季節性值 *m*，根據預測頻率選擇。數值越低表示模型越準確。

![\[Mathematical formula for Mean Absolute Scaled Error (MASE) with summation and absolute value notations.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/mase.png)


其中：  
Yt - 點 *t* 的觀察值  
Yt-m - 點 *t-m* 的觀察值  
ej - 點 *j* 的錯誤 （觀察值 - 預測值）  
m - 季節性值

預測會使用平均預測做為預測值。

MASE 非常適合具有循環性質或季節性屬性的資料集。例如，預測在夏季高需求和在冬季低需求的項目，可以受益於考量季節性影響。

## 匯出準確性指標
<a name="backtest-exports"></a>

**注意**  
匯出檔案可以直接從資料集匯入傳回資訊。如果匯入的資料含公式或命令，這會使檔案受到 CSV 注入的攻擊。因此，匯出的檔案可能會提示安全性警告。若要避免惡意活動，請在讀取匯出的檔案時停用連結和巨集。

預測可讓您匯出回測期間產生的預測值和準確性指標。

您可以使用這些匯出來評估特定時間點和四分位數的特定項目，並進一步了解您的預測器。回溯測試匯出會傳送至指定的 S3 位置，並包含兩個資料夾：
+ **預測值**：包含 CSV 或 Parquet 檔案，每個回溯測試的每個預測類型都有預測值。
+ **accuracy-metrics-values**包含 CSV 或 Parquet 檔案，其中包含每個回測的指標，以及所有回測的平均值。這些指標包括每個四分位數的 wQL、平均 wQL、RMSE、MASE、MAPE 和 WAPE。

`forecasted-values` 資料夾包含每個回溯測試時段每個預測類型的預測值。它也包含項目 IDs、維度、時間戳記、目標值和回溯測試時段開始和結束時間的相關資訊。

`accuracy-metrics-values` 資料夾包含每個回測時段的準確性指標，以及所有回測時段的平均指標。它包含每個指定四分位數的 wQL 指標，以及平均 wQL、RMSE、MASE、MAPE 和 WAPE 指標。

兩個資料夾中的檔案都遵循命名慣例：`<ExportJobName>_<ExportTimestamp>_<PartNumber>.csv`。

您可以使用 Amazon Forecast 軟體開發套件 (SDK) 和 Amazon Forecast 主控台匯出準確性指標。

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

使用 [`CreatePredictorBacktestExportJob`](API_CreatePredictorBacktestExportJob.md)操作，指定[`DataDestination`](API_DataDestination.md)物件中的 S3 位置和 IAM 角色，以及 `PredictorArn`和 `PredictorBacktestExportJobName`。

例如：

```
{
   "Destination": { 
      "S3Config": { 
         "Path": "s3://bucket/example-path/",
         "RoleArn": "arn:aws:iam::000000000000:role/ExampleRole"
      }
   },
   "Format": PARQUET;
   "PredictorArn": "arn:aws:forecast:region:predictor/example",
   "PredictorBacktestExportJobName": "backtest-export-name",
}
```

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

在預測器頁面上選擇您的**預測器**。在**預測器指標**區段中，選擇**匯出回測結果**。

在**建立預測器回溯測試匯出**階段，設定**匯出名稱**、**IAM 角色**和 **S3 預測器回溯測試匯出位置**欄位。

![\[Form for exporting predictor backtest data to S3, with fields for name, IAM role, and location.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/console-export-screen.PNG)


------

## 選擇預測類型
<a name="forecast-types"></a>

Amazon Forecast 使用預測類型來建立預測和評估預測器。預測類型有兩種形式：
+ **平均預測類型** - 使用平均值做為預期值的預測。通常用作指定時間點的點預測。
+ **量化預測類型** - 指定四分位數的預測。通常用於提供預測間隔，這是可考慮預測不確定性的一系列可能值。例如，`0.65`四分位數的預測會預估低於觀察值 65% 的時間的值。

根據預設，預測會針對預測器預測類型使用下列值：`0.1`(P10)、`0.5`(P50) 和 `0.9`(P90)。您最多可以選擇五種自訂預測類型，包括 `0.01`(P1) 到 `0.99`(P99) 的 `mean`和 quantiles。

Quantiles 可以提供預測的上限和下限。例如，使用預測類型 `0.1`(P10) 和 `0.9`(P90) 提供稱為 80% 信賴區間的一系列值。觀察值預期低於 P10 值 10% 的時間，而 P90 值預期高於觀察值 90% 的時間。透過在 p10 和 P90 產生預測，您可以預期 80% 時間的真實值落在這些界限之間。此值範圍由下圖中 P10 和 P90 之間的陰影區域描述。

![\[Graph showing forecast quantiles with P99, P90, P50, P10, and P1 lines over time.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/quantiles-intervals.png)


當低預測成本與高預測成本不同時，您也可以使用四分位數預測作為點預測。例如，在某些情況下，庫存不足的成本高於庫存過多的成本。在這些情況下，0.65 (P65) 的預測比中位數 (P50) 或平均預測更重要。

訓練預測器時，您可以使用 Amazon Forecast Software Development Kit (SDK) 和 Amazon Forecast 主控台來選擇自訂預測類型。

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

使用 [`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作，在 `ForecastTypes` 參數中指定自訂預測類型。將 參數格式化為字串陣列。

例如，若要在 `0.01`、`0.65`、 `mean`和 `0.99` 預測類型建立預測器，請使用下列程式碼。

```
{
    "ForecastTypes": [ "0.01", "mean", "0.65", "0.99" ],
},
```

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

在**訓練預測器**階段，在預測類型欄位中指定自訂**預測類型**。選擇**新增預測類型**，然後輸入預測類型值。

 例如，若要使用 `0.01`、`0.65`、 `mean`和`0.99`預測類型建立預測器，請在如下所示的**預測類型**欄位中輸入下列值。

![\[Form for entering forecast types with fields for type names and quantile values between .01 and .99.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/predictor-custom-quantiles.png)


------

## 使用舊版預測器
<a name="legacy-metrics"></a>

### 設定回測參數
<a name="backtesting-parameters"></a>

預測使用回溯測試來計算準確性指標。如果您執行多個回溯測試，預測會平均所有回溯測試時段的每個指標。根據預設，預測會運算一個回測，回測視窗的大小 （測試集） 等於預測時間範圍的長度 （預測視窗）。您可以在訓練預測器時同時設定*回溯測試時段長度*和*回溯測試案例的數量*。

預測會省略來自回溯測試程序的填入值，且指定回溯測試時段內填入值的任何項目都會從該回溯測試中排除。這是因為預測只會比較預測值與回測期間觀察到的值，而填入的值不會觀察到。

回溯測試時段必須至少與預測時間範圍一樣大，且長度小於整個目標時間序列資料集的一半。您可以選擇 1 到 5 個回溯測試。

![\[Graph showing training and testing periods for four backtest scenarios over time.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/evaluation-backtests.png)


一般而言，增加回溯測試數量會產生更可靠的準確性指標，因為在測試期間使用時間序列的較大部分，且預測能夠在所有回溯測試中取得指標的平均值。

您可以使用 Amazon Forecast Software Development Kit (SDK) 和 Amazon Forecast 主控台來設定回溯測試參數。

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

使用 [CreatePredictor](API_CreatePredictor.md) 操作，在 [EvaluationParameters](API_EvaluationParameters.md) 資料類型中設定回溯測試參數。指定使用 `BackTestWindowOffset` 參數進行回溯測試期間測試集的長度，以及使用 `NumberOfBacktestWindows` 參數進行回溯測試時段的數量。

例如，若要執行 2 個具有 10 個時間點的測試集的回溯測試，請使用下列程式碼。

```
"EvaluationParameters": {
    "BackTestWindowOffset": 10,
    "NumberOfBacktestWindows": 2
}
```

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

在**訓練預測器**階段，使用 **Backtest 視窗偏移**欄位設定回測期間測試集的長度，並使用 Backtest 視窗欄位數設定**回測時段數**。

例如，若要執行 2 個測試組為 10 個時間點的回溯測試，請設定下列值。

![\[Input fields for number of backtest windows and backtest window offset with example values.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/predictor-backtest-windows.png)


------

### HPO 和 AutoML
<a name="HPO-AutoML"></a>

根據預設，Amazon Forecast 在超參數最佳化 `0.1`(HPO) 期間使用 `0.9`(P10)、`0.5`(P50) 和 (P90) 四分位數進行超參數調校，並在 AutoML 期間使用模型選擇。如果您在建立預測器時指定自訂預測類型，預測會在 HPO 和 AutoML 期間使用這些預測類型。

如果指定了自訂預測類型，預測會使用這些指定的預測類型來判斷 HPO 和 AutoML 期間的最佳結果。在 HPO 期間，預測會使用第一個回測時段來尋找最佳的超參數值。在 AutoML 期間，預測會使用所有回溯測試視窗的平均值，以及 HPO 的最佳超參數值，來尋找最佳演算法。

對於 AutoML 和 HPO，Forecast 會選擇選項，將預測類型的平均損失降至最低。您也可以在 AutoML 和 HPO 期間，使用下列其中一項準確度指標來最佳化預測器：平均加權量化損失 （平均 wQL)、加權絕對百分比錯誤 (WAPE)、根平均平方錯誤 (RMSE)、平均絕對百分比錯誤 (MAPE) 或平均絕對縮放錯誤 (MASE)。

您可以使用 Amazon Forecast Software Development Kit (SDK) 和 Amazon Forecast 主控台來選擇最佳化指標。

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

使用 [`CreatePredictor`](API_CreatePredictor.md)操作，在 `ObjectiveMetric` 參數中指定自訂預測類型。

`ObjectiveMetric` 參數接受下列值：
+ `AverageWeightedQuantileLoss` - 平均加權量化損失
+ `WAPE` - 加權絕對百分比錯誤
+ `RMSE` - 根均方錯誤
+ `MAPE` - 平均絕對百分比錯誤
+ `MASE` - 絕對擴展錯誤平均值 

例如，若要使用 AutoML 建立預測器並使用平均絕對擴展錯誤 (MASE) 準確度指標進行最佳化，請使用下列程式碼。

```
{
    ...
    "PerformAutoML": "true",
    ...
    "ObjectiveMetric": "MASE",
},
```

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

在**訓練預測器階段，選擇自動 ****(AutoML)**。在**目標指標**區段中，選擇要用來最佳化預測器的準確性指標。

例如，下圖顯示使用 AutoML 建立的預測器，並使用平均絕對擴展錯誤 (MASE) 準確度指標進行最佳化。

使用主控台時，您只能在使用 AutoML 建立預測器時指定目標指標。如果您手動選取演算法，則無法指定 HPO 的目標指標。

------

# 重新訓練預測器
<a name="retrain-predictors"></a>

**注意**  
重新訓練僅適用於使用 AutoPredictor () 建立的預測器[`CreateAutoPredictor`](API_CreateAutoPredictor.md)。您可以將現有的舊版預測器升級至 AutoPredictor。請參閱 [升級至 AutoPredictor](howitworks-predictor.md#upgrading-autopredictor)。

預測器可以與更新的資料集一起保留，讓您的預測器保持在最新狀態。重新訓練預測器時，Amazon Forecast 會維護相同的預測器組態設定。重新訓練後，原始預測器將保持作用中狀態，而重新訓練的預測器將具有單獨的預測器 ARN。

重新訓練預測器可以透過兩種方式提高預測準確性：

1. **較最新的資料**：您的重新訓練預測器會在訓練模型時納入更多up-to-date資料。

1. **預測器改善**：重新訓練的預測器會將任何更新和改善納入 Amazon Forecast 演算法和其他資料集。

重新訓練預測器的速度比從頭開始建立新的預測器最多快 50%。Predictor 訓練時間更快，預測會自動使用您現有的組態設定。

**Python 筆記本**  
如需重新訓練預測器step-by-step指南，請參閱[重新訓練預測器](https://github.com/aws-samples/amazon-forecast-samples/blob/main/notebooks/advanced/Retraining_AutoPredictor/Retraining.ipynb)。

您可以使用軟體開發套件 (SDK) 或 Amazon Forecast 主控台重新訓練預測器。

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

**重新訓練預測器**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 開啟 Amazon Forecast 主控台。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇要重新訓練的預測器。

1. 在**預測器動作**下拉式清單中，選擇**重新訓練**。

1. 設定升級預測器的唯一名稱。

1. 選擇**重新訓練預測器**。

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

**重新訓練預測器**

使用 [`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作，將唯一的名稱指派給預測器，並將 的值設定為您要重新訓練`ReferencePredictorArn`的預測器。

```
{
  "PredictorName": "RetrainedPredictor",
  "ReferencePredictorArn": "arn:aws:forecast:us-west-2:938097332257:predictor/OriginalPredictor"
}
```

重新訓練預測器時，僅將值指派給 `PredictorName`和 `ReferencePredictorArn` 參數。

------

# 天氣索引
<a name="weather"></a>

Amazon Forecast 天氣索引是內建功能，可將歷史和預測天氣資訊納入模型。它特別適用於零售使用案例，其中溫度和降水可能會對產品需求產生重大影響。

啟用天氣索引時，預測只會將天氣特徵套用到時間序列，在預測器訓練期間發現準確性改善。如果使用天氣資訊補充時間序列無法改善其在回溯測試期間的預測準確性，預測不會將天氣索引套用至該特定時間序列。

若要套用天氣索引，您必須在目標時間序列資料集和任何相關的時間序列資料集中包含[地理位置屬性](#adding-geolocation)。您也需要為目標[時間](#specifying-timezones)序列時間戳記指定時區。如需資料集需求的詳細資訊，請參閱[條件與限制](#weather-conditions-restrictions)。

**Python 筆記本**  
如需使用天氣索引step-by-step指南，請參閱 [NY Taxi： Amazon Forecast with Weather Index](https://github.com/aws-samples/amazon-forecast-samples/tree/master/notebooks/advanced/Weather_index)。

**Topics**
+ [啟用天氣索引](#enabling-weather)
+ [將地理位置資訊新增至資料集](#adding-geolocation)
+ [指定時區](#specifying-timezones)
+ [條件與限制](#weather-conditions-restrictions)

## 啟用天氣索引
<a name="enabling-weather"></a>

天氣索引會在預測器訓練階段期間啟用。使用 [`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作時，天氣索引會包含在 [AdditionalDataset](API_AdditionalDataset.md) 資料類型中。

啟用天氣索引之前，您必須在目標時間序列和相關時間序列資料集中包含地理位置屬性，並定義時間戳記的時區。如需詳細資訊，請參閱[新增地理位置資訊和](#adding-geolocation)[指定時區](#specifying-timezones)。

您可以使用預測主控台或預測軟體開發套件 (SDK) 來啟用天氣索引。

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

**啟用天氣索引**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 開啟 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇**訓練新的預測器**。

1. 選擇**啟用天氣索引**。

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

**啟用天氣索引**

使用 [`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作，透過在 [AdditionalDataset](API_AdditionalDataset.md) 資料類型`"Value": "true"`中新增 `"Name": "weather"`和 來啟用天氣索引。

```
    "DataConfig": { 
        ...
        "AdditionalDatasets": [
            ...                      
            {             
                "Name": "weather",       
            }      
            ]   
        },
```

------

## 將地理位置資訊新增至資料集
<a name="adding-geolocation"></a>

若要使用天氣索引，您必須在目標時間序列和相關時間序列資料集中包含每個項目的地理位置屬性。屬性是以資料集結構描述中的`geolocation`屬性類型定義。

資料集中的所有地理位置值必須僅在單一區域內。區域包括：美國 （不含夏威夷和阿拉斯加）、加拿大、南美洲、中南美洲、亞太區域、歐洲，以及非洲和中東。

以兩種格式之一指定地理位置屬性：
+ **緯度和經度** （所有區域） - 以十進位格式指定緯度和經度 （範例：47.61\$1-122.33)
+ **郵遞區號 **（僅限美國） - 指定國家/地區碼 （美國），後面接著 5 位數郵遞區號 （範例：US\$198121)

所有區域都支援緯度和經度格式。只有美國區域才支援郵遞區號格式。

**Topics**
+ [緯度和經度界限](#geolocation-bounds)
+ [在資料集結構描述中包含地理位置](#geolocation-schema)
+ [設定地理位置格式](#geolocation-format)

### 緯度和經度界限
<a name="geolocation-bounds"></a>

以下是接受區域的縱向和縱向邊界：

------
#### [ US Region ]

**界限**：緯度 (24.6、50.0)、經度 (-126.0、-66.4)。

![\[Map of North America showing United States, parts of Canada and Mexico with major cities.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-us-bounds.png)


------
#### [ Canada Region ]

**界限**：緯度 (41.0、75.0)、經度 (-142.0、-52.0)。

![\[Map showing northern Canada and parts of the US, highlighting territories and major cities.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-can-bounds.PNG)


------
#### [ Europe Region ]

**界限**：緯度 (34.8、71.8)、經度 (-12.6、44.8)。

![\[Map of Northern Europe and surrounding regions showing countries and major cities.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-euro-bounds.png)


------
#### [ South America Region ]

**界限**：緯度 (-56.6、14.0)、經度 (-82.4、-33.00)。

![\[Map of South America showing countries, major cities, and Brazilian states.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-sa-bounds.PNG)


------
#### [ Asia Pacific Region ]

**界限**：緯度 (-47.8、55.0)、經度 (67.0、180.60)。

![\[Map showing East Asia, Southeast Asia, and Australia with country names and ocean labels.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-apac-bounds.png)


------
#### [ Central America Region ]

**界限**：緯度 (6.80、33.20)、經度 (-118.80、-58.20)。

![\[Map showing southern US, Mexico, Central America, and Caribbean with major cities and bodies of water.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-ca-bounds.png)


------
#### [ Africa & Middle East Region ]

**界限**：緯度 (-35.60、43.40)、經度 (-18.80、-58.20)。

![\[Map showing North Africa, Middle East, and parts of Europe with country names and borders.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/weather-africa-bounds.png)


------

### 在資料集結構描述中包含地理位置
<a name="geolocation-schema"></a>

使用主控台或 [CreateDataset](API_CreateDataset.md) 操作，在目標時間序列和任何相關時間序列的 JSON 結構描述中，將位置屬性類型定義為「地理位置」。結構描述中的屬性必須依照顯示在資料集中的屬性排序。

```
 { 
  "Attributes":[
    {
       "AttributeName": "timestamp",
       "AttributeType": "timestamp"
    },
    {
       "AttributeName": "target_value",
       "AttributeType": "float"
    },
    {
       "AttributeName": "item_id",
       "AttributeType": "string"
    },
    {
       "AttributeName": "location",
       "AttributeType": "geolocation"
    }
  ]
}
```

### 設定地理位置格式
<a name="geolocation-format"></a>

地理位置屬性的格式可以是**郵遞區號**或**緯度和經度**格式。您可以使用預測主控台或預測軟體開發套件 (SDK) 來設定地理位置格式。

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

**將地理位置屬性新增至時間序列資料集**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 選擇 **Create dataset group (建立資料集群組)**。

1. 在**結構描述建置器**中，將您的地理位置**屬性類型**設定為 `geolocation`。

1. 在**地理位置格式**下拉式清單中，選擇您的位置格式。

![\[Dataset details form with name, frequency, and schema builder for attribute specification.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/schema-builder-geolocation.png)


您也可以以 JSON 格式定義屬性，並從**地理位置格式下拉式清單中選取位置格式**。

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

**將地理位置屬性新增至時間序列資料集**

使用 [ CreateDatasetImportJob](API_CreateDatasetImportJob.md) 操作，將 的值`GeolocationFormat`設定為下列其中一項：
+ **經緯度 **（所有區域）： `"LAT_LONG"`
+ **郵遞區號 **（僅限美國）： `"CC_POSTALCODE"`

例如，若要指定緯度和經度格式，請在`CreateDatasetImportJob`請求中包含下列項目：

```
{
    ...
    "GeolocationFormat": "LAT_LONG"
}
```

------

## 指定時區
<a name="specifying-timezones"></a>

您可以讓 Amazon Forecast 自動同步時區資訊與地理位置屬性，也可以手動將單一時區指派給整個資料集。

**Topics**
+ [自動同步時區與地理位置](#timezones-automatic)
+ [手動選取單一時區](#timezones-manual)

### 自動同步時區與地理位置
<a name="timezones-automatic"></a>

此選項適用於在多個時區包含時間戳記的資料集，這些時間戳記以本機時間表示。預測會根據項目的地理位置屬性，為目標時間序列資料集中的每個項目指派時區。

您可以使用 Forecast 主控台或 Forecast SDK，自動同步時間戳記與地理位置屬性。

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

**使用地理位置屬性同步時區**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 在導覽窗格中，選擇**建立資料集群組**。

1. 在**資料集匯入詳細資訊**中，選擇**同步時區與位置**。

![\[Dataset import form with fields for name, time zone, S3 data location, and IAM role.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/sync-timezone-with-geolocation.PNG)


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

**使用地理位置屬性同步時區**

使用 [ CreateDatasetImportJob](API_CreateDatasetImportJob.md) 操作，將 `"UseGeolocationForTimeZone"`設定為 `"true"`。

```
{
    ...
    "UseGeolocationForTimeZone": "true"
}
```

------

### 手動選取單一時區
<a name="timezones-manual"></a>

**注意**  
您可以手動選取*美國區域*、*加拿大區域*、*南美洲區域*、*中南美洲區域*、*亞太區域*、*歐洲區域*，以及*非洲和中東區域*以外的時區。不過，所有地理位置值仍必須位於其中一個區域內。

此選項非常適合具有單一時區內所有時間戳記的資料集，或將所有時間戳記標準化為單一時區。使用此選項會將相同的時區套用至資料集中的每個項目。

天氣索引接受下列時區：

 **美國區域** 
+  America/Los\$1Angeles 
+  美洲/鳳凰城 
+  美洲/丹佛 
+  美洲/芝加哥 
+  America/New\$1York 

 **加拿大區域** 
+ 美洲/丹佛
+ 美洲/愛德蒙頓
+ 美洲/區域 
+ 美洲/溫尼伯 
+ 美洲/多倫多
+ 美洲/哈里法克斯
+ America/St\$1Johns

 **歐洲區域** 
+ 歐洲/倫敦 
+ 歐洲/巴黎 
+ 歐洲/赫爾辛基 

 **南美洲區域** 
+ 美洲/布宜諾斯\$1Aires
+ 美洲/諾朗哈
+ 美洲/卡拉卡斯 

 **亞太區域** 
+ 亞洲/喀布爾 
+ 亞洲/喀拉蚩 
+ 亞洲/加爾各答 
+ 亞洲/加德滿都 
+ 亞洲/達卡 
+ Asia/Rangoon 
+ 亞洲/曼谷 
+ 亞洲/新加坡 
+ 亞洲/首爾 
+ 澳洲/阿德雷德 
+ 澳洲/墨爾本 
+ 澳洲/Lord\$1Howe 
+ 澳洲/尤加拉 
+ 太平洋/北部 
+ 太平洋/奧克蘭 

 **中南美洲** 
+ 美洲/波多黎各

 **非洲和中東** 
+ 非洲/奈洛比 
+ 亞洲/德黑蘭 
+ 亞洲/杜拜

 **Other (其他)** 
+ 太平洋/中途 
+ 太平洋/檀香山 
+ 太平洋/馬克沙 
+ 美洲/安克拉治 
+ Atlantic/Cape\$1Verde 
+ 亞洲/安多爾 
+ 太平洋/查坦 
+ Pacific/Enderbury 
+ Pacific/Kiritimati 

如果資料集中的項目位於其中一個接受區域內，但您的時間戳記標準化為該區域外的時區，請從**其他**清單中選取時區。

如需有效時區名稱的完整清單，請參閱 [Joda-Time 程式庫](http://joda-time.sourceforge.net/timezones.html)。

您可以使用預測主控台或預測 SDK，手動設定資料集的時區。

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

**為您的資料集選取單一時區**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 在導覽窗格中，選擇**建立資料集群組**。

1. 在**資料集匯入詳細資訊**中，選擇**選取時區**。

例如，使用下列項目將洛杉磯時間 （太平洋標準時間） 套用至您的資料集。

![\[Dataset import form with fields for name, time zone, data location, and IAM role.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/select-timezone.PNG)


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

**為您的資料集選取單一時區**

使用 [ CreateDatasetImportJob](API_CreateDatasetImportJob.md) 操作，`"TimeZone"`將 設定為有效的時區。

例如，使用下列項目將洛杉磯時間 （太平洋標準時間） 套用至您的資料集。

```
{
    ...
    "TimeZone": "America/Los_Angeles"
}
```

------

## 條件與限制
<a name="weather-conditions-restrictions"></a>

使用 天氣索引時，適用下列條件和限制：
+ **可用的演算法**：如果使用舊版預測器，則可以在使用 CNN-QR、DeepAR\$1 和 Prophet 演算法訓練預測器時啟用天氣索引。天氣索引不會套用至 ARIMA、ETS 和 NPTS。
+ **預測頻率**：有效的預測頻率為 `Minutely`、 `Hourly`和 `Daily`。
+ **預測期間**：預測期間不能超過未來 14 天。如需每個預測頻率的預測期間限制，請參閱下列清單：
  + `1 minute` - 500
  + `5 minutes` - 500
  + `10 minutes` - 500
  + `15 minutes` - 500
  + `Hourly` - 330
  + `Daily` - 14
+ **時間序列長度**：使用天氣索引訓練模型時，預測會在預測天氣資料集特徵化的開始日期之前截斷具有時間戳記的所有時間序列資料集。預測天氣資料集功能包含下列開始日期：
  + **美國區域**：2018 年 7 月 2 日
  + **歐洲區域**：2018 年 7 月 2 日
  + **亞太區域**：2018 年 7 月 2 日
  + **加拿大區域**：2019 年 7 月 2 日
  + **南美洲區域**：2020 年 1 月 2 日
  + **中南美洲區域**：2020 年 9 月 2 日
  + **非洲和中東區域**：2021 年 3 月 25 日

  啟用天氣索引後，在預測器訓練期間將不會使用開始日期之前具有時間戳記的資料點。
+ **位置數量**：目標時間序列資料集不能超過 2000 個唯一位置。
+ **區域界限**：資料集中的所有項目都必須位於單一區域內。
+ **時間序列長度下限**：由於測試天氣索引時的額外資料需求，時間序列資料集的長度下限為：

  `3 × ForecastHorizon + (BacktestWindows + 1) × BacktestWindowOffset`

  如果您的時間序列資料集不符合此要求，請考慮減少下列項目：
  + `ForecastHorizon` - 縮短預測期間。
  + `BacktestWindowOffset` - 在回溯測試期間縮短測試集的長度。
  + `BacktestWindows` - 減少回溯測試的數量。

# 假日特徵化
<a name="holidays"></a>

Holidays 是內建功能，可將功能工程設計的國定假日資訊資料集納入您的模型。它為 250 多個國家/地區的假日行事曆提供原生支援。Amazon Forecast 結合了[假日 API 程式庫](https://holidayapi.com/countries)和 [Jollyday API](https://jollyday.sourceforge.net/data.html) 來產生假日行事曆。

假日特徵化在零售網域中特別有用，其中國定假日可能會大幅影響需求。

假日特徵化支援最短預測頻率 5 分鐘，最長 1 個月。

**Topics**
+ [啟用假日特徵化](#enabling-holidays)
+ [國家/地區代碼](#holidays-country-codes)
+ [其他假日行事曆](#holiday-calendars)

## 啟用假日特徵化
<a name="enabling-holidays"></a>

Amazon Forecast 中包含假日特徵化作為[其他資料集](API_AdditionalDataset.md)，並在訓練預測器之前啟用。建議您的歷史資料至少包含兩年的資料。這可讓預測識別與特定假日相關聯的需求模式。選擇國家/地區之後，Holidays 會在訓練期間，將該國家/地區的假日行事曆套用至資料集中的每個項目。

 您可以使用 Amazon Forecast 主控台或 Forecast Software Development Kit (SDK) 來啟用假日。

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

使用 [`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作，透過新增 `"Name": "holiday`" 和 設定`"Configuration"`來映射兩個字母的國家/地區代碼`"CountryCode"`來啟用假日。請參閱 [國家/地區代碼](#holidays-country-codes)。

例如，若要包含美國假日行事曆，請使用下列程式碼。

```
      "DataConfig": {          
        "AdditionalDatasets": [          
            {             
                "Name": "holiday",            
                "Configuration": {
                    "CountryCode" : ["US"]
                }      
            },      
          ]   
        },
```

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

在**訓練預測器**階段期間，從**國別假日下拉式清單中選擇國家/**地區。

![\[Toggle switch to activate holidays and dropdown menu to select a country for forecast accuracy.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/holidays-dropdown-2.png)


------

## 國家/地區代碼
<a name="holidays-country-codes"></a>

 Amazon Forecast 為下列國家/地區的國定假日行事曆提供原生支援。使用 API 指定國家/地區時，請使用**國家/地區代碼**。


**支援的國家/地區**  

| Country | 國家代碼 | 
| --- | --- | 
|   阿富汗   |   AF   | 
|   奧蘭群島   |   AX   | 
|   阿爾巴尼亞   |   AL   | 
|   阿爾及利亞   |   DZ   | 
|   美屬薩摩亞   |   AS   | 
|   安道爾   |   AD   | 
|   安哥拉   |   AO   | 
|   安圭拉   |   AI   | 
|   南極   |   AQ   | 
|   安地卡及巴布達   |   AG   | 
|   阿根廷   |   AR   | 
|   亞美尼亞   |   AM   | 
|   阿魯巴島   |   AW   | 
|   澳洲   |   AU   | 
|   奧地利   |   AT   | 
|   亞塞拜然   |   AZ   | 
|   巴哈馬   |   BS   | 
|   巴林   |   BH   | 
|   孟加拉   |   BD   | 
|   巴貝多   |   BB   | 
|   白俄羅斯   |   BY   | 
|   比利時   |   BE   | 
|   貝里斯   |   BZ   | 
|   貝南   |   BJ   | 
|   百慕達   |   BM   | 
|   不丹   |   BT   | 
|   玻利維亞   |   BO   | 
|   波士尼亞與赫塞哥維納   |   BA   | 
|   波札那   |   BW   | 
|   布威島   |   BV   | 
|   巴西   |   BR   | 
|   英屬印度洋領地   |   IO   | 
|   英屬維京群島   |   VG   | 
|   汶萊和平之國   |   BN   | 
|   保加利亞   |   BG   | 
|   布吉納法索   |   BF   | 
|   蒲隆地   |   BI   | 
|   柬埔寨   |   KH   | 
|   喀麥隆   |   CM   | 
|   加拿大   |   CA   | 
|   維德角   |   CV   | 
|   荷蘭加勒比區   |   BQ   | 
|   開曼群島   |   KY   | 
|   中非共和國   |   CF   | 
|   查德   |   TD   | 
|   智利   |   CL   | 
|   中國   |   CN   | 
|   聖誕島   |   CX   | 
|   可可斯群島   |   CC   | 
|   哥倫比亞   |   CO   | 
|   葛摩   |   KM   | 
|   庫克群島   |   CK   | 
|   哥斯大黎加   |   CR   | 
|   克羅埃西亞   |   HR   | 
|   古巴   |   CU   | 
|   庫拉索   |   CW   | 
|   賽普勒斯   |   CY   | 
|   捷克   |   CZ   | 
|   剛果民主共和國   |   CD   | 
|   丹麥   |   DK   | 
|   吉布地   |   DJ   | 
|   多米尼克   |   DM   | 
|   多明尼加共和國   |   DO   | 
|   厄瓜多   |   EC   | 
|   埃及   |   EG   | 
|   薩爾瓦多   |   SV   | 
|   赤道幾內亞   |   GQ   | 
|   厄利垂亞   |   ER   | 
|   愛沙尼亞   |   EE   | 
|   史瓦帝尼   |   SZ   | 
|   衣索比亞   |   ET   | 
|   福克蘭群島   |   FK   | 
|   法羅群島   |   FO   | 
|   斐濟   |   FJ   | 
|   芬蘭   |   FI   | 
|   法國   |   FR   | 
|   法屬圭亞那   |   GF   | 
|   法屬玻里尼西亞   |   PF   | 
|   法屬南部領地   |   TF   | 
|   加彭   |   GA   | 
|   甘比亞   |   GM   | 
|   喬治亞   |   GE   | 
|   德國   |   DE   | 
|   迦納   |   GH   | 
|   直布羅陀   |   GI   | 
|   希臘   |   GR   | 
|   格陵蘭   |   GL   | 
|   格瑞那達   |   GD   | 
|   瓜地洛普   |   GP   | 
|   關島   |   GU   | 
|   瓜地馬拉   |   GT   | 
|   根西島   |   GG   | 
|   幾內亞   |   GN   | 
|   幾內亞比索   |   GW   | 
|   蓋亞納   |   GY   | 
|   海地   |   HT   | 
|   赫德島和麥克唐納群島   |   HM   | 
|   宏都拉斯   |   HN   | 
|   香港   |   HK   | 
|   匈牙利   |   HU   | 
|   冰島   |   IS   | 
|   印度   |   IN   | 
|   印尼   |   ID   | 
|   伊朗   |   IR   | 
|   伊拉克   |   IQ   | 
|   愛爾蘭   |   IE   | 
|   曼島   |   IM   | 
|   以色列   |   IL   | 
|   義大利   |   IT   | 
|   象牙海岸   |   CI   | 
|   牙買加   |   JM   | 
|   日本   |   JP   | 
|   澤西島   |   JE   | 
|   約旦   |   JO   | 
|   哈薩克   |   KZ   | 
|   肯亞   |   KE   | 
|   吉里巴斯   |   KI   | 
|   科索沃   |   XK   | 
|   科威特   |   KW   | 
|   吉爾吉斯   |   KG   | 
|   寮國   |   LA   | 
|   拉脫維亞   |   LV   | 
|   黎巴嫩   |   LB   | 
|   賴索托   |   LS   | 
|   賴比瑞亞   |   LR   | 
|   利比亞   |   LY   | 
|   列支敦斯登   |   LI   | 
|   立陶宛   |   LT   | 
|   盧森堡   |   LU   | 
|   澳門   |   MO   | 
|   馬達加斯加   |   MG   | 
|   馬拉威   |   MW   | 
|   馬來西亞   |   MY   | 
|   馬爾地夫   |   MV   | 
|   馬利   |   ML   | 
|   馬爾他   |   MT   | 
|   馬紹爾群島   |   MH   | 
|   馬丁尼克   |   MQ   | 
|   茅利塔尼亞   |   MR   | 
|   模里西斯   |   MU   | 
|   馬約特島   |   YT   | 
|   墨西哥   |   MX   | 
|   密克羅尼西亞   |   FM   | 
|   摩爾多瓦   |   MD   | 
|   摩納哥   |   MC   | 
|   蒙古   |   MN   | 
|   蒙特內哥羅   |   ME   | 
|   蒙特色拉特島   |   MS   | 
|   摩洛哥   |   MA   | 
|   莫三比克   |   MZ   | 
|   緬甸   |   MM   | 
|   納米比亞   |   NA   | 
|   諾魯   |   NR   | 
|   尼泊爾   |   NP   | 
|   荷蘭   |   NL   | 
|   新喀里多尼亞   |   NC   | 
|   紐西蘭   |   NZ   | 
|   尼加拉瓜   |   NI   | 
|   尼日   |   NE   | 
|   奈及利亞   |   NG   | 
|   紐埃島   |   NU   | 
|   諾福克島   |   NF   | 
|   北韓   |   KP   | 
|   北馬其頓   |   MK   | 
|   北馬里亞納群島   |   MP   | 
|   挪威   |   NO   | 
|   阿曼   |   OM   | 
|   巴基斯坦   |   PK   | 
|   帛琉   |   PW   | 
|   巴勒斯坦   |   PS   | 
|   巴拿馬   |   PA   | 
|   巴布亞紐幾內亞   |   PG   | 
|   巴拉圭   |   PY   | 
|   秘魯   |   PE   | 
|   菲律賓   |   PH   | 
|   皮特肯群島   |   PN   | 
|   波蘭   |   PL   | 
|   葡萄牙   |   PT   | 
|   波多黎各   |   PR   | 
|   卡達   |   QA   | 
|   剛果共和國   |   CG   | 
|   留尼旺   |   RE   | 
|   羅馬尼亞   |   RO   | 
|   俄羅斯聯邦   |   RU   | 
|   盧安達   |   RW   | 
|   聖巴泰勒米島   |   BL   | 
|   “聖赫勒拿島、亞森欣島和特里斯坦達庫尼亞島”   |   SH   | 
|   聖克里斯多福及尼維斯   |   KN   | 
|   聖露西亞   |   LC   | 
|   法屬聖馬丁   |   MF   | 
|   聖皮埃赫及密克隆   |   PM   | 
|   聖文森及格瑞那丁   |   VC   | 
|   薩摩亞   |   WS   | 
|   聖馬利諾   |   SM   | 
|   聖多美普林西比   |   ST   | 
|   沙烏地阿拉伯   |   SA   | 
|   塞內加爾   |   SN   | 
|   塞爾維亞   |   RS   | 
|   賽席爾   |   SC   | 
|   獅子山   |   SL   | 
|   新加坡   |   SG   | 
|   荷屬聖馬丁   |   SX   | 
|   斯洛伐克   |   SK   | 
|   斯洛維尼亞   |   SI   | 
|   索羅門群島   |   SB   | 
|   索馬利亞   |   SO   | 
|   南非   |   ZA   | 
|   南喬治亞和南桑威奇群島   |   GS   | 
|   南韓   |   KR   | 
|   南蘇丹   |   SS   | 
|   西班牙   |   ES   | 
|   斯里蘭卡   |   LK   | 
|   蘇丹   |   SD   | 
|   蘇利南   |   SR   | 
|   斯瓦巴和揚馬延   |   SJ   | 
|   瑞典   |   SE   | 
|   瑞士   |   CH   | 
|   敘利亞阿拉伯共和國   |   SY   | 
|   臺灣   |   TW   | 
|   塔吉克   |   TJ   | 
|   坦尚尼亞   |   TZ   | 
|   泰國   |   TH   | 
|   東帝汶   |   TL   | 
|   多哥   |   TG   | 
|   托克勞   |   TK   | 
|   東加   |   TO   | 
|   千里達及托巴哥   |   TT   | 
|   突尼西亞   |   TN   | 
|   土耳其   |   TR   | 
|   土庫曼   |   TM   | 
|   英屬土克斯及開科斯群島   |   TC   | 
|   吐瓦魯   |   TV   | 
|   烏干達   |   UG   | 
|   烏克蘭   |   UA   | 
|   阿拉伯聯合大公國   |   AE   | 
|   英國   |   GB   | 
|   聯合國   |   UN   | 
|   美國   |   US   | 
|   美國本土外小島嶼   |   UM   | 
|   美屬維京群島   |   VI   | 
|   烏拉圭   |   UY   | 
|   烏茲別克   |   UZ   | 
|   萬那杜   |   VU   | 
|   梵蒂岡   |   VA   | 
|   委內瑞拉   |   VE   | 
|   越南   |   VN   | 
|   瓦利斯和富圖那   |   WF   | 
|   西撒哈拉   |   EH   | 
|   葉門   |   YE   | 
|   尚比亞   |   ZM   | 
|   辛巴威   |   ZW   | 

## 其他假日行事曆
<a name="holiday-calendars"></a>

Amazon Forecast 也支援印度、韓國和阿拉伯聯合大公國的假日。他們的假日如下所列。

------
#### [ India - "IN" ]

1 月 26 日 - 共和日 

8 月 15 日 - 獨立日

10 月 2 日 - Gandhi Jayanti

------
#### [ Korea - "KR" ]

1 月 1 日 — 新年 

3 月 1 日 - 獨立移動日 

5 月 5 日 - 兒童節

6 月 6 日 - 國殤日

8 月 15 日 - 解放日

10 月 3 日 - 國家基金會日

10 月 9 日 - Hangul Day

12 月 25 日 - 聖誕節

------
#### [ United Arab Emirates - "AE" ]

1 月 1 日 — 新年 

12 月 1 日 - 遞交日

12 月 2 日至 3 日 - 國定日

齋月\$1

Eid al-Fitr\$1

Eid al-Adha\$1

伊斯蘭新年\$1

\$1關卡假日由月球週期決定。

------

# 預測器可解釋性
<a name="predictor-explainability"></a>

Predictor Explainability 可協助您更加了解資料集中的屬性如何影響您的目標變數。預測使用稱為影響分數的指標來量化每個屬性的相對影響，並判斷它們是否增加或減少預測值。

例如，假設目標所為 `sales` 且有兩個相關屬性的預測案例：`price` 與 `color`。預測可能會發現項目的價格大幅影響銷售額 （高影響分數），而項目的顏色具有可忽略的效果 （低影響分數）。

若要啟用預測器可解釋性，您的預測器必須至少包含下列其中一項：相關時間序列、項目中繼資料或假日和天氣索引等其他資料集。如需詳細資訊，請參閱[限制和最佳實務](#predictor-explainability-best-practices)。

若要針對特定時間序列和時間點建立影響分數，請使用預測可解釋性而非預測器可解釋性。請參閱[預測可解釋性](forecast-explainability.md)。

**Topics**
+ [解譯影響分數](#predictor-explainability-impact-scores)
+ [建立預測器可解釋性](#creating-predictor-explainability)
+ [匯出預測器可解釋性](#exporting-predictor-explainability)
+ [限制和最佳實務](#predictor-explainability-best-practices)

## 解譯影響分數
<a name="predictor-explainability-impact-scores"></a>

影響分數會衡量屬性對預測值的相對影響。例如，如果 "price" 屬性的影響分數是 "store location" 屬性的兩倍，您可以得出以下結論：項目的價格對預測值的影響是 "store location" 的兩倍。

 影響分數也會提供屬性是否增加或減少預測值的相關資訊。在 主控台中，這會以兩個圖形表示。具有藍色長條的屬性會增加預測值，而具有紅色長條的屬性會減少預測值。

![\[Bar graphs showing Price and Promo increasing impact scores, StoreLocation decreasing impact score.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/quicksight-unfiltered.png)


在主控台中，影響分數範圍從 0 到 1，分數 0 表示沒有影響，分數接近 1 表示重大影響。在 SDKs 中，影響分數的範圍是 -1 到 1，其中符號表示影響的方向。

值得注意的是，影響力分數衡量的是屬性的相對影響，而不是絕對影響。因此，影響分數無法用於確定特定屬性是否可以改善模型的準確性。如果某個屬性的影響分數較低，不一定表示它對預測值的影響較低； 這表示與它對預測值的影響比預測器使用的其他屬性要小。

## 建立預測器可解釋性
<a name="creating-predictor-explainability"></a>

**注意**  
每個預測器最多可以建立一個預測器可解釋性

當您啟用預測器可解釋性時，Amazon Forecast 會計算資料集中所有屬性的影響分數。影響分數可以解譯為屬性對整體預測值的影響。您可以在建立預測器時啟用預測器可解釋性，也可以在建立預測器後啟用此功能。

### 啟用新預測器的預測器可解釋性
<a name="creating-predictor-explainability-new"></a>

在建立新的預測器時啟用預測器可解釋性，將會同時建立預測器資源和可解釋性資源。您可以使用軟體開發套件 (SDK) 或 Amazon Forecast 主控台，為新預測器啟用預測器可解釋性。

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

**啟用預測器可解釋性**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇**訓練新的預測器**。

1. 在**預測器組態**區段中，選擇**啟用可解釋性**。

1. 提供下列必要欄位的值：
   + **名稱** - 唯一的預測器名稱。
   + **預測頻率** - 預測的精細程度。
   + **預測期間** - 要預測的時間步驟數目。

1. 選擇 **Start (啟動)**。

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 啟用新預測器的可解釋性，請使用 `create_auto_predictor`方法並將 ExplainPredictor 設定為 true。

下列程式碼會建立自動預測器，未來預測 24 (`ForecastHorizon`) 天 (`ForecastFrequency`)，並將 `ExplainPredictor`設為 true。如需必要和選用參數的詳細資訊，請參閱[CreateAutoPredictor](API_CreateAutoPredictor.md)。

```
import boto3
                            
forecast = boto3.client('forecast')

create_predictor_response = forecast.create_auto_predictor(
    PredictorName = 'predictor_name',
    ForecastHorizon = 24,
    ForecastFrequency = 'D',
    DataConfig = {
        "DatasetGroupArn": "arn:aws:forecast:region:account:dataset-group/datasetGroupName"
    },
    ExplainPredictor = True
)
```

------

### 啟用現有預測器的預測器可解釋性
<a name="creating-predictor-explainability-old"></a>

為現有預測器啟用預測器可解釋性會為該資源建立可解釋性資源。您只能為尚未包含可解釋性資源的預測器建立可解釋性資源。若要檢視更新資料集的影響分數，請使用更新的資料重新訓練或重新建立預測器。

您可以使用軟體開發套件 (SDK) 或 Amazon Forecast 主控台，為新預測器啟用預測器可解釋性。

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

**啟用預測器可解釋性**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇您的預測器。

1. 在**預測器可解釋性**區段中，選擇**啟用可解釋性**。

1. 提供 Predictor Explainability 的唯一名稱。

1. 選擇 **Start (啟動)**。

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 為現有預測器啟用預測器可解釋性，請使用 `create_explainability`方法。指定解釋性的名稱、預測器的 ARN，以及 的 ARN`ExplainabilityConfig`，同時將 `TimePointGranularity`和 `TimeSeriesGranularity` 設定為 **ALL**。若要建立可在主控台中檢視的可解釋性視覺化，請將 `EnableVisualization` 設定為 **True**。

如需必要和選用參數的詳細資訊，請參閱 [CreateExplainability](API_CreateExplainability.md)。

```
import boto3
                            
forecast = boto3.client('forecast')

create_explainability_response = forecast.create_explainability(
    ExplainabilityName = 'explainability_name',
    ResourceArn = 'arn:aws:forecast:region:accountNumber:predictor/predictorName',
    ExplainabilityConfig = { 
      "TimePointGranularity": "ALL",
      "TimeSeriesGranularity": "ALL"
    },
    EnableVisualization = True
)
```

------

## 匯出預測器可解釋性
<a name="exporting-predictor-explainability"></a>

**注意**  
匯出檔案可以直接從資料集匯入傳回資訊。如果匯入的資料含公式或命令，這會使檔案受到 CSV 注入的攻擊。因此，匯出的檔案可能會提示安全性警告。若要避免惡意活動，請在讀取匯出的檔案時停用連結和巨集。

預測可讓您將影響分數的 CSV 或 Parquet 檔案匯出至 S3 位置。影響分數範圍從 -1 到 1，其中符號表示影響的方向。您可以使用 Amazon Forecast 軟體開發套件 (SDK) 和 Amazon Forecast 主控台匯出 Impact 分數。

![\[Table showing normalized impact scores for price, promotion, weather index, and US holidays.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/explainability-global.png)


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

**匯出預測器可解釋性**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇您的預測器。

1. 在**預測器可解釋性**區段中，選擇**匯出**。

1. 在**匯出名稱**欄位中，提供匯出的唯一名稱。

1. 針對 **S3 可解釋性匯出位置**欄位，提供 S3 位置以匯出 CSV 檔案。

1. 針對 **IAM 角色**欄位，為角色提供指定 S3 位置的存取權。

1. 選擇**建立匯出。**

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 匯出預測器可解釋性，請使用 `create_explainability_export`方法。為任務命名、指定可解釋性的 ARN，並在 `Destination` 物件中指定您的 Amazon S3 目的地位置和 IAM 服務角色。

如需必要和選用參數的詳細資訊，請參閱 [CreateExplainabilityExport](API_CreateExplainabilityExport.md)。

```
import boto3
                        
forecast = boto3.client('forecast')

export_response = forecast.create_explainability_export(
    Destination = {
        "S3Config": {
            "Path": "s3://bucketName/filename.csv",
            "RoleArn": "arn:aws:iam::accountNumber:role/roleName"
        }
    },
    ExplainabilityArn = 'arn:aws:forecast:region:accountNumber:explainability/explainabilityName',
    ExplainabilityExportName = 'job_name'
)
```

------

## 限制和最佳實務
<a name="predictor-explainability-best-practices"></a>

使用 Predictor Explainability 時，請考慮下列限制和最佳實務。
+ **Predictor Explainability 僅適用於使用 AutoPredictor 建立的某些預測器** - 您無法為使用 AutoML 或透過手動選擇建立的舊版預測器啟用 Explainability。請參閱[升級至 AutoPredictor](howitworks-predictor.md#upgrading-autopredictor)。
+ **Predictor Explainability 不適用於所有模型** - ARIMA (AutoRegressive移動平均值）、ETS （指數平滑狀態空間模型） 和 NPTS （非參數時間序列） 模型不包含外部時間序列資料。因此，即使您包含其他資料集，這些模型也不會建立可解釋性報告。
+ 可**解釋性需要屬性** - 您的預測器必須至少包含下列其中一項：相關時間序列、項目中繼資料、假日或天氣索引。
+ **預測器僅限於一個可解釋性資源** - 您無法為預測器建立多個可解釋性資源。如果您對已更新資料集的影響分數感興趣，請重新訓練您的預測器。
+ **零的影響分數表示沒有影響** - 如果屬性的影響分數為 0，則該屬性對預測值沒有重大影響。
+ **重試失敗的預測器可解釋性任務 **- 如果預測成功建立預測器但預測器可解釋性任務失敗，您可以重試在主控台中或使用 CreateExplainability 操作建立預測器可解釋性。
+ **您無法針對特定時間點和時間序列建立影響分數 **- 若要檢視特定時間點和時間序列的影響分數，請參閱[預測可解釋性](forecast-explainability.md)。
+ **Predictor Explainability 視覺化效果可在建立後 90 天內使用** - 若要在 90 天後檢視視覺化效果，請重新訓練預測器。

# 預測器監控
<a name="predictor-monitoring"></a>

**注意**  
 如果您啟用預測器監控，即使刪除預測資料，Amazon Forecast 仍會儲存每個預測中的資料，以進行預測器效能分析。若要刪除此資料，請刪除監控資源。

 預測器監控可讓您查看預測器的效能如何隨時間變化。各種因素都可能導致效能變更，例如經濟發展或客戶行為的變更。

 例如，假設目標所為 `sales` 且有兩個相關屬性的預測案例：`price` 與 `color`。在建立第一個預測器後的幾個月內，某些顏色可能會意外地變得更受您的客戶歡迎。這可能會提高具有此屬性之項目的銷售額。此新資料可能會影響預測器的效能及其產生的預測準確性。

 啟用預測器監控後，預測會在您產生預測和匯入更多資料時分析預測器的效能。預測會將新資料與先前的預測進行比較，以偵測效能的任何變更。您可以在預測主控台中檢視不同準確度指標如何隨時間變化的圖表。或者，您可以使用 [ListMonitorEvaluations](API_ListMonitorEvaluations.md)操作取得監控結果。

 預測器監控有助於判斷是否需要重新訓練預測器。如果效能下降，您可能想要重新訓練較近期資料上的預測器。如果您選擇重新訓練預測器，新的預測器將包含上一個預測器的監控資料。您也可以使用預測器監控來收集生產環境的相關內容資料，或對不同的實驗執行比較。

預測器監控僅適用於 AutoPredictors。您可以將現有的舊版預測器升級至 AutoPredictor。請參閱[升級至 AutoPredictor](howitworks-predictor.md#upgrading-autopredictor)。

**Topics**
+ [預測器監控工作流程](#predictor-monitoring-workflow)
+ [啟用預測器監控](enabling-predictor-monitoring.md)
+ [檢視監控結果](predictor-monitoring-results.md)
+ [限制和最佳實務](#predictor-monitoring-best-practices)

## 預測器監控工作流程
<a name="predictor-monitoring-workflow"></a>

若要取得預測器監控結果，您必須先使用預測器產生預測，然後匯入更多資料。監控工作流程如下所示。

1. 啟用自動預測器的預測器監控：
   + 在啟用監控的情況下建立新的預測器。請參閱 [啟用新預測器的預測器監控](enabling-predictor-monitoring.md#enabling-predictor-monitoring-new)。
   + 或啟用現有預測器的監控。請參閱 [啟用現有預測器的預測器監控](enabling-predictor-monitoring.md#enabling-predictor-monitoring-existing)。

1. 使用預測器產生一或多個預測。

1. 匯入更多資料。如需將資料匯入預測的資訊，請參閱 [匯入資料集](howitworks-datasets-groups.md)。

1. 檢視預測器監控結果：
   + 您可以在預測器的**監控**索引標籤上檢視結果。
   + 或者，您可以使用 [ListMonitorEvaluations](API_ListMonitorEvaluations.md)操作取得監控結果。

   如需詳細資訊，請參閱[檢視監控結果](predictor-monitoring-results.md)。

# 啟用預測器監控
<a name="enabling-predictor-monitoring"></a>

您可以在建立預測器時啟用預測器監控，也可以為現有的預測器啟用它。

**注意**  
預測器監控僅適用於 AutoPredictors。您可以將現有的舊版預測器升級至 AutoPredictor。請參閱[升級至 AutoPredictor](howitworks-predictor.md#upgrading-autopredictor)。

**Topics**
+ [啟用新預測器的預測器監控](#enabling-predictor-monitoring-new)
+ [啟用現有預測器的預測器監控](#enabling-predictor-monitoring-existing)

## 啟用新預測器的預測器監控
<a name="enabling-predictor-monitoring-new"></a>

您可以使用 主控台、 AWS CLI、 AWS SDKs和 [CreateAutoPredictor](API_CreateAutoPredictor.md)操作啟用新預測器的預測器監控。

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

**啟用預測器監控**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇**訓練新的預測器**。

1. 在**預測器組態**區段中，選擇**啟用監控**。

1. 提供下列必要欄位的值：
   + **名稱** - 唯一的預測器名稱。
   + **預測頻率** - 預測的精細程度。
   + **預測期間** - 要預測的時間步驟數目。

1. 選擇**開始**以建立啟用監控的自動預測器。當您使用預測器產生預測，然後匯入更多資料時，您會看到監控結果。

------
#### [ Python ]

若要使用適用於 Python (Boto3) 的 SDK 啟用新預測器的預測器監控，請使用 `create_auto_predictor`方法，並在 中提供監視器名稱`MonitoringConfig`。

下列程式碼會建立自動預測器，未來預測 24 (`ForecastHorizon`) 天 (`ForecastFrequency`)，並將 指定`MyPredictorMonitor`為 `MonitorName`。產生預測並匯入更多資料後，您可以檢視預測器監控的結果。如需擷取結果的詳細資訊，請參閱 [檢視監控結果](predictor-monitoring-results.md)。

 如需建立預測器所需和選用參數的資訊，請參閱 [CreateAutoPredictor](API_CreateAutoPredictor.md)。

```
import boto3
                            
forecast = boto3.client('forecast')

create_predictor_response = forecast.create_auto_predictor(
    PredictorName = 'predictor_name',
    ForecastHorizon = 24,
    ForecastFrequency = 'D',
    DataConfig = {
        "DatasetGroupArn": "arn:aws:forecast:region:account:dataset-group/datasetGroupName"
    },
    MonitorConifg = {
        "MonitorName": "MyMonitorName"
    }
)
```

------

## 啟用現有預測器的預測器監控
<a name="enabling-predictor-monitoring-existing"></a>

您可以使用 主控台 AWS CLI和 AWS SDKs 啟用現有預測器的預測器監控。

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

**啟用預測器監控**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 的 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇您的預測器。

1. 導覽至**監控**索引標籤。

1. 在**監控詳細資訊**區段中，選擇**開始監控** 

   當**監控狀態**為作用中時，會啟用預測器監控。產生預測並匯入更多資料後，您可以檢視預測器監控的結果。如需詳細資訊，請參閱 [檢視監控結果](predictor-monitoring-results.md)

------
#### [ Python ]

若要使用適用於 Python 的 SDK (Boto3) 啟用現有預測器的預測器監控，請使用 `create_monitor`方法。指定監控的名稱，以及`ResourceArn`指定預測器要監控的 Amazon Resource Name (ARN)。使用 `describe_monitor`方法並提供監視器 ARN，以取得監視器的狀態。產生預測並匯入更多資料後，您可以檢視預測器監控的結果。如需更多資訊，請參閱[檢視監控結果](predictor-monitoring-results.md)。

如需必要和選用參數的資訊，請參閱 [CreateMonitor](API_CreateMonitor.md)和 [DescribeMonitor](API_DescribeMonitor.md)。

```
import boto3
                            
forecast = boto3.client('forecast')

create_monitor_response = forecast.create_monitor(
    MonitorName = 'monitor_name',
    ResourceArn = 'arn:aws:forecast:region:accountNumber:predictor/predictorName'
)

monitor_arn = create_monitor_response['MonitorArn']

describe_monitor_response = forecast.describe_monitor(
    MonitorArn = monitor_arn
)
print("Monitor status: " + describe_monitor_response['Status'])
```

------

# 檢視監控結果
<a name="predictor-monitoring-results"></a>

產生預測並匯入更多資料後，您可以檢視預測器監控的結果。您可以使用預測主控台查看結果的視覺化，或使用 [ListMonitorEvaluations](API_ListMonitorEvaluations.md)操作以程式設計方式擷取結果。

 預測主控台會顯示每個[預測器指標](metrics.md)的結果圖表。圖形包括每個指標在預測器和預測器事件的生命週期內如何變更，例如重新訓練。

 [ListMonitorEvaluations](API_ListMonitorEvaluations.md) 操作會傳回不同時段的指標結果和預測器事件。

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

**檢視預測器監控結果**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/) 開啟 Amazon Forecast 主控台。

1. 從**資料集群組**中，選擇您的資料集群組。

1. 在導覽窗格中，選擇**預測器**。

1. 選擇預測器，然後選擇**監控**索引標籤。
   +  **監控結果**區段顯示不同準確度指標如何隨時間變化。使用下拉式清單來變更圖形追蹤的指標。
   + **監控歷史記錄**區段會列出結果中追蹤的不同事件的詳細資訊。

    以下是預測器`Avg wQL`分數如何隨時間變化的圖表範例。在此圖表中，請注意`Avg wQL`值會隨著時間增加。此增加表示預測器準確度正在降低。使用此資訊來判斷是否需要重新驗證模型並採取動作。  
![\[Graph showing increasing Avg wQL score over time, indicating decreasing predictor accuracy.\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/predictor-drift.png)

------
#### [ SDK for Python (Boto3) ]

 若要使用適用於 Python 的 SDK (Boto3) 取得監控結果，請使用 `list_monitor_evaluations`方法。提供監視器的 Amazon Resource Name (ARN)，並選擇性地指定使用 `MaxResults` 參數擷取的最大結果數量。選擇性地指定 `Filter`來篩選結果。您可以依 `SUCCESS`或 `EvaluationState`的 篩選評估`FAILURE`。下列程式碼最多可獲得 20 次成功的監控評估。

```
import boto3
                            
forecast = boto3.client('forecast')

monitor_results = forecast.list_monitor_evaluations(
    MonitorArn = 'monitor_arn',
    MaxResults = 20,
    Filters = [ 
      { 
         "Condition": "IS",
         "Key": "EvaluationState",
         "Value": "SUCCESS"
      }
   ]
)
print(monitor_results)
```

 以下是 JSON 回應的範例。

```
{
  "NextToken": "string",
  "PredictorMonitorEvaluations": [
    {
      "MonitorArn": "MonitorARN",
      "ResourceArn": "PredictorARN",
      "EvaluationTime": "2020-01-02T00:00:00Z",
      "EvaluationState": "SUCCESS",
      "WindowStartDatetime": "2019-01-01T00:00:00Z",
      "WindowEndDatetime": "2019-01-03T00:00:00Z",
      "PredictorEvent": {
        "Detail": "Retrain",
        "Datetime": "2020-01-01T00:00:00Z"
      },
      "MonitorDataSource": {
        "DatasetImportJobArn": "arn:aws:forecast:region:accountNumber:dataset-import-job/*",
        "ForecastArn": "arn:aws:forecast:region:accountNumber:forecast/*",
        "PredictorArn": "arn:aws:forecast:region:accountNumber:predictor/*",
      
      },
      "MetricResults": [
        {
          "MetricName": "AverageWeightedQuantileLoss",
          "MetricValue": 0.17009070456599376
        },
        {
          "MetricName": "MAPE",
          "MetricValue": 0.250711322309796
        },
        {
          "MetricName": "MASE",
          "MetricValue": 1.6275608734888485
        },
        {
          "MetricName": "RMSE",
          "MetricValue": 3100.7125081405547
        },
        {
          "MetricName": "WAPE",
          "MetricValue": 0.17101159704738722}
      ]
    }
  ]
}
```

------

## 限制和最佳實務
<a name="predictor-monitoring-best-practices"></a>

使用預測器監控時，請考慮下列限制和最佳實務。
+ **預測器監控僅適用於自動預測器** – 您無法啟用監控使用 AutoML 或透過手動選擇建立的舊版預測器。請參閱[升級至 AutoPredictor](howitworks-predictor.md#upgrading-autopredictor)。
+ **預測器監控每個自動預測器都是唯一的** – 每個自動預測器只能建立一個監視器。
+ **預測器監控需要新資料並產生預測** – 當您匯入用於產生新預測的新資料時，預測器監控結果就會可用。如果您未匯入新資料，或新匯入的資料未涵蓋完整的預測期間，則不會看到監控結果。
+ **預測器監控需要新的預測** – 您必須持續產生新的預測，才能產生監控結果。如果您未產生新的預測，則不會看到監控結果。
+  **Amazon Forecast 將儲存來自每個預測的資料以進行預測器效能分析** – 即使您刪除預測，預測仍會儲存這些資料。若要刪除這些資料，請刪除相關聯的監視器。
+ [StopResource](API_StopResource.md) 操作將停止所有目前的評估和所有未來的評估。
+ 只有在您產生平均值以外的分位數預測時，才能使用 avgWQL 指標。
+ [ListMonitorEvaluations](API_ListMonitorEvaluations.md) 操作中不會顯示進行中監視器評估。

# Amazon Forecast 演算法
<a name="aws-forecast-choosing-recipes"></a>

Amazon Forecast 預測器使用演算法來訓練具有時間序列資料集的模型。然後，訓練的模型會用來產生指標和預測。

 如果您不確定要使用哪種演算法來訓練模型，請在建立預測器時選擇 AutoML，並讓預測人員訓練資料集的最佳模型。否則，您可以手動選取其中一個 Amazon Forecast 演算法。

**Python 筆記本**  
如需使用 AutoML step-by-step指南，請參閱 [ AutoML 入門](https://github.com/aws-samples/amazon-forecast-samples/blob/master/notebooks/advanced/Getting_started_with_AutoML/Getting_started_with_AutoML.ipynb)。

## 內建預測演算法
<a name="forecast-algos"></a>

 Amazon Forecast 提供六個內建演算法供您選擇。這些範圍包括常用的統計演算法，例如 Autoregressive Integrated Moving Average (ARIMA)，以及複雜的神經網路演算法，例如 CNN-QR 和 DeepAR\$1。

### [CNN-QR](aws-forecast-algo-cnnqr.md)
<a name="cnnqr"></a>

 `arn:aws:forecast:::algorithm/CNN-QR` 

 Amazon Forecast CNN-QR，卷積神經網路 - 量化迴歸，是一種專有的機器學習演算法，用於使用因果卷積神經網路 (CNNs) 預測時間序列。CNN-QR 最適合包含數百個時間序列的大型資料集。它接受項目中繼資料，並且是唯一接受相關時間序列資料的預測演算法，而沒有未來的值。

### [DeepAR\$1](aws-forecast-recipe-deeparplus.md)
<a name="deeparplus"></a>

`arn:aws:forecast:::algorithm/Deep_AR_Plus`

 Amazon Forecast DeepAR\$1 是一種專有的機器學習演算法，用於使用遞歸神經網路 (RNNs) 預測時間序列。DeepAR\$1 最適合包含數百個特徵時間序列的大型資料集。演算法接受前瞻相關時間序列和項目中繼資料。

### [Prophet](aws-forecast-recipe-prophet.md)
<a name="prophet"></a>

`arn:aws:forecast:::algorithm/Prophet`

 Prophet 是一種時間序列預測演算法，以附加模型為基礎，其中非線性趨勢符合每年、每週和每日季節性。它最適合具有強烈季節性效果和數個季節歷史資料的時間序列。

### [NPTS](aws-forecast-recipe-npts.md)
<a name="npts"></a>

`arn:aws:forecast:::algorithm/NPTS`

 Amazon Forecast 非參數時間序列 (NPTS) 專屬演算法是可擴展、概率的基準預測器。NPTS 在處理稀疏或間歇時間序列時特別有用。預測提供四種演算法變體：標準 NPTS、季節性 NPTS、氣候預測器和季節性氣候預測器。

### [ARIMA](aws-forecast-recipe-arima.md)
<a name="arima"></a>

`arn:aws:forecast:::algorithm/ARIMA`

 自動迴歸整合移動平均 (ARIMA) 是一種常用的統計演算法，用於時間序列預測。此演算法對於具有低於 100 個時間序列的簡單資料集特別有用。

### [ETS](aws-forecast-recipe-ets.md)
<a name="ets"></a>

`arn:aws:forecast:::algorithm/ETS`

 指數平滑 (ETS) 是用於時間序列預測的常用統計演算法。該演算法對於具有 100 個時間序列以下的簡單資料集以及具有季節性模式的資料集特別有用。ETS 計算時間序列資料集中所有觀測值的加權平均值作為其預測，權重隨著時間的推移呈指數下降。

## 比較預測演算法
<a name="comparing-algos"></a>

 使用下表尋找時間序列資料集的最佳選項。


|  | 神經網路 | 彈性本機演算法 | 基準演算法 |  | CNN-QR | DeepAR\$1 | Prophet | NPTS | ARIMA | ETS | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 運算密集的訓練程序 | 高 | 高 | 中 | 低 | 低 | 低 | 
| 接受歷史相關時間序列\$1 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 
| 接受前瞻相關時間序列\$1 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 
| 接受項目中繼資料 （產品顏色、品牌等） | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 
| 接受內建特徵化的天氣索引 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 
| 適用於稀疏資料集 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 
| 執行超參數最佳化 (HPO) | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 
| 允許覆寫預設超參數值  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/icon-no.png)  | 

\$1如需相關時間序列的詳細資訊，請參閱[相關時間序列](related-time-series-datasets.md)。

# 整合移動平均自回歸模型 (ARIMA) 演算法
<a name="aws-forecast-recipe-arima"></a>

整合移動自回歸模型 ([ARIMA](https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average)) 是一種常用的本機統計演算法針對時間序列預測。ARIMA 擷取輸入資料集內的標準時間結構 (規律的時間組織)。Amazon Forecast ARIMA 演算法會在 Comprehensive R Archive Network (CRAN) `Package 'forecast'`的 中呼叫 [Arima 函數](https://cran.r-project.org/web/packages/forecast/forecast.pdf#Rfn.Arima.1)。

## ARIMA 的運作方式
<a name="aws-forecast-recipe-arima-how-it-works"></a>

ARIMA 演算法特別適用於可對應到固定時間序列的資料集。固定的時間序列的統計屬性，例如自回歸模型，與時間無關。資料集的固定時間序列通常由信號和雜訊組成。信號有可能呈現正弦振盪模式或具有季節性成分。ARIMA 的作用類似於過濾器，可將信號與雜訊分離，然後推導未來的信號以進行預測。

## ARIMA 的超參數和調校
<a name="aws-forecast-recipe-arima-hyperparamters"></a>

如需有關 ARIMA 超參數和調校的資訊，請參閱 [CRAN](https://cran.r-project.org) [套件「預測」](https://cran.r-project.org/web/packages/forecast/forecast.pdf)中的`Arima`函數文件。

Amazon Forecast 會使用下表，將 [CreateDataset](API_CreateDataset.md)操作中指定的 `DataFrequency` 參數轉換為 R [ts](https://www.rdocumentation.org/packages/stats/versions/3.6.1/topics/ts) 函數的 `frequency` 參數：


| DataFrequency (字串) | R ts frequency (整數) | 
| --- | --- | 
| Y | 1 | 
| M | 12 | 
| W | 52 | 
| D | 7 | 
| H | 24 | 
| 30min | 2 | 
| 15min | 4 | 
| 10min | 6 | 
| 5min | 12 | 
| 1min | 60 | 

對於小於 24 或短時間序列的頻率，會使用 `Package 'forecast'` [CRAN](https://cran.r-project.org) 的 `auto.arima`函數設定超參數。對於大於或等於 24 的頻率和長時間序列，我們使用 Fourier 序列與 K = 4，如這裡所述，[以長季節期間預測](https://robjhyndman.com/hyndsight/longseasonality/)。

不在資料表中的支援資料頻率預設為 1 的 `ts` 頻率。

# CNN-QR 演算法
<a name="aws-forecast-algo-cnnqr"></a>

 Amazon Forecast CNN-QR，卷積神經網路 - 量化迴歸，是一種專有的機器學習演算法，用於使用因果卷積神經網路 (CNNs) 預測純量 （一維） 時間序列。此監督式學習演算法會從大量時間序列中訓練一個全域模型，並使用四分位數解碼器進行概率預測。

**Topics**
+ [CNN-QR 入門](#aws-forecast-algo-cnnqr-getting-started)
+ [CNN-QR 的運作方式](#aws-forecast-algo-cnnqr-how-it-works)
+ [搭配 CNN-QR 使用相關資料](#aws-forecast-algo-cnnqr-using-rts)
+ [CNN-QR 超參數](#aws-forecast-algo-cnnqr-hyperparameters)
+ [使用秘訣與最佳實務](#aws-forecast-algo-cnnqr-tips)

## CNN-QR 入門
<a name="aws-forecast-algo-cnnqr-getting-started"></a>

 您可以透過兩種方式使用 CNN-QR 訓練預測器：

1. 手動選取 CNN-QR 演算法。

1. 選擇 AutoML (CNN-QR 是 AutoML 的一部分）。

 如果您不確定要使用哪種演算法，建議您選取 AutoML，如果 CNN-QR 是資料最準確的演算法，則預測會選取 CNN-QR。若要查看是否已選取 CNN-QR 做為最準確的模型，請使用 [DescribePredictor](https://docs.aws.amazon.com/forecast/latest/dg/API_DescribePredictor.html) API 或在主控台中選擇預測器名稱。

以下是 CNN-QR 的一些關鍵使用案例：
+  **使用大型且複雜的資料集進行預測** - CNN-QR 在使用大型且複雜的資料集進行訓練時，效果最佳。神經網路可以跨許多資料集學習，當您有相關的時間序列和項目中繼資料時，這很有用。
+  **具有歷史相關時間序列的預測** - CNN-QR 不需要相關時間序列，即可在預測期間包含資料點。此增加的彈性可讓您包含更廣泛的相關時間序列和項目中繼資料，例如項目價格、事件、Web 指標和產品類別。

## CNN-QR 的運作方式
<a name="aws-forecast-algo-cnnqr-how-it-works"></a>

CNN-QR 是一種sequence-to-sequence(Seq2Seq) 模型，用於概率預測，以編碼序列為條件，測試預測重建解碼序列的能力。

演算法允許編碼和解碼序列中的不同功能，因此您可以在編碼器中使用相關的時間序列，並從解碼器中省略它 （反之亦然）。根據預設，編碼器和解碼器中都會包含預測期間具有資料點的相關時間序列。沒有預測期間資料點的相關時間序列只會包含在編碼器中。

CNN-QR 會執行四分位數迴歸，並以階層式因果 CNN 做為可學習的特徵擷取器。

為了促進學習與時間相關的模式，例如週末的尖峰，CNN-QR 會根據時間序列精細程度自動建立特徵時間序列。例如，CNN-QR 會以每週時間序列頻率建立兩個特徵時間序列 (day-of-monthday-of-year。演算法使用這些衍生特徵時間序列，以及訓練和推論期間提供的自訂特徵時間序列。下列範例顯示目標時間序列、 `zi,t`和兩個衍生的時間序列功能： `ui,1,t`代表一天的小時， `ui,2,t`代表一週的一天。

![\[\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/cnnqr-time-frequencies.PNG)


CNN-QR 會根據資料頻率和訓練資料的大小，自動包含這些特徵時間序列。下表列出可針對每個支援的基本時間頻率衍生的特徵。


****  

| 時間序列的頻率 | 衍生特徵 | 
| --- | --- | 
| 分鐘 | 小時中的分鐘、一天的幾時、星期幾、月中的日、年中的日 | 
| 小時 | 一天的幾時、星期幾、月中的日、年中的日 | 
| 天 | 星期幾、月中的日、年中的日 | 
| 週 | week-of-month、week-of-year | 
| 月 | 年中的月 | 

在訓練期間，訓練資料集中的每個時間序列都包含一組相鄰的內容和預測時段，具有固定的預先定義長度。這會顯示在下圖中，其中內容視窗以綠色表示，而預測視窗以藍色表示。

您可以使用在指定訓練集上訓練的模型，為訓練集中的時間序列以及其他時間序列產生預測。訓練資料集包含目標時間序列，可能與相關時間序列和項目中繼資料的清單相關聯。

下圖顯示這對於 編製索引之訓練資料集的 元素如何運作`i`。訓練資料集包含目標時間序列、 `zi,t`和兩個相關聯的時間序列，`xi,1,t`以及 `xi,2,t`。第一個相關的時間序列 `xi,1,t`是前瞻性的時間序列，第二個 `xi,2,t`是歷史時間序列。

![\[\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/cnnqr-short-long-rts.png)


CNN-QR 會跨目標時間序列、 `zi,t`和相關時間序列，`xi,1,t`以及 學習`xi,2,t`，以在預測視窗中產生預測，以橘色行表示。

## 搭配 CNN-QR 使用相關資料
<a name="aws-forecast-algo-cnnqr-using-rts"></a>

 CNNQR 同時支援歷史和未來相關時間序列資料集。如果您提供前瞻相關時間序列資料集，則任何遺失值都會使用[未來的填充方法來](howitworks-missing-values.md)填充。如需歷史和未來相關時間序列的詳細資訊，請參閱[使用相關時間序列資料集](related-time-series-datasets.md)。

您也可以搭配 CNN-QR 使用項目中繼資料資料集。這些是具有目標時間序列中項目靜態資訊的資料集。項目中繼資料對於冷啟動預測案例特別有用，其中幾乎沒有歷史資料。如需項目中繼資料的詳細資訊，請參閱[項目中繼資料。](item-metadata-datasets.md)

## CNN-QR 超參數
<a name="aws-forecast-algo-cnnqr-hyperparameters"></a>

 Amazon Forecast 會在選取的超參數上最佳化 CNN-QR 模型。手動選取 CNN-QR 時，您可以選擇傳遞這些超參數的訓練參數。下表列出 CNN-QR 演算法的可調校超參數。


| 參數名稱 | 值 | 描述 | 
| --- | --- | --- | 
| context\$1length |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-algo-cnnqr.html)  |  模型在進行預測之前讀取的時間點數量。一般而言，CNN-QR 的值`context_length`大於 DeepAR\$1，因為 CNN-QR 不會使用延遲來查看進一步的歷史資料。 如果 的值`context_length`在預先定義的範圍之外，CNN-QR 會自動將預設值設為`context_length`適當的值。  | 
| use\$1related\$1data |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-algo-cnnqr.html)  |  決定要包含在模型中的相關時間序列資料類型。 選擇四個選項之一： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-algo-cnnqr.html) `HISTORICAL` 包含所有歷史相關時間序列，並`FORWARD_LOOKING`包含所有前瞻相關時間序列。您無法選擇 `HISTORICAL`或`FORWARD_LOOKING`相關時間序列的子集。  | 
| use\$1item\$1metadata |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-algo-cnnqr.html)  |  決定模型是否包含項目中繼資料。 選擇兩個選項之一： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-algo-cnnqr.html) `use_item_metadata` 包含所有提供的項目中繼資料或無。您無法選擇項目中繼資料的子集。  | 
| epochs |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-algo-cnnqr.html)  |  通過訓練資料的完成次數。較小的資料集需要更多 epoch。 對於 `ForecastHorizon`和 的大型值`context_length`，請考慮減少 epoch，以改善訓練時間。  | 

### 超參數最佳化 (HPO)
<a name="aws-forecast-algo-cnnqr-hpo"></a>

超參數最佳化 (HPO) 是為特定學習目標選取最佳超參數值的任務。使用預測，您可以透過兩種方式自動化此程序：

1. 選擇 AutoML 和 HPO 會自動執行 CNN-QR。

1. 手動選取 CNN-QR 並設定 `PerformHPO = TRUE`。

其他相關的時間序列和項目中繼資料不一定能改善 CNN-QR 模型的準確性。當您執行 AutoML 或啟用 HPO 時，CNN-QR 會使用和不使用提供的相關時間序列和項目中繼資料來測試模型的準確性，並選取具有最高準確性的模型。

Amazon Forecast 會在 HPO 期間自動最佳化下列三個超參數，並提供您最終訓練的值：
+ **context\$1length** - 決定網路可看到的過去距離。HPO 程序會自動設定 的值`context_length`，以最大化模型準確性，同時考慮訓練時間。
+ **use\$1related\$1data** - 決定要包含在模型中的相關時間序列資料形式。HPO 程序會自動檢查您的相關時間序列資料是否改善模型，並選取最佳設定。
+ **use\$1item\$1metadata** - 決定是否在模型中包含項目中繼資料。HPO 程序會自動檢查您的項目中繼資料是否改善模型，並選擇最佳設定。

**注意**  
如果 `use_related_data` 設為 `NONE`或選取`Holiday`補充功能`HISTORICAL`時，這表示包含假日資料不會改善模型準確性。

如果您在手動選取`PerformHPO = TRUE`期間設定 ，則可以設定`context_length`超參數的 HPO 組態。不過，如果您選擇 AutoML，則無法變更 HPO 組態的任何層面。如需 HPO 組態的詳細資訊，請參閱 [IntergerParameterRange](https://docs.aws.amazon.com/forecast/latest/dg/API_IntegerParameterRange.html) API。

## 使用秘訣與最佳實務
<a name="aws-forecast-algo-cnnqr-tips"></a>

 **避免 ForecastHorizon 的大型值** - 針對 使用超過 100 的值`ForecastHorizon`，將增加訓練時間並降低模型準確度。如果您想要進一步預測未來，請考慮彙總到更高的頻率。例如，使用 `5min` 代替 `1min`。

 **CNNs更高的內容長度** - 使用 CNN-QR，您可以設定`context_length`略高於 DeepAR\$1 的 ，因為 CNNs通常比 RNNs 更有效率。

 **相關資料的功能工程** - 訓練模型時，使用相關時間序列和項目中繼資料的不同組合進行實驗，並評估額外資訊是否可提高準確性。相關時間序列和項目中繼資料的不同組合和轉換將提供不同的結果。

 **CNN-QR 不會在平均四分位數進行預測 ** – 當您`mean`使用 [ CreateForecast](https://docs.aws.amazon.com/forecast/latest/dg/API_CreateForecast.html) API 將 `ForecastTypes`設為 時，預測會在中位數四分位數 (`0.5` 或 ) 產生`P50`。

# DeepAR\$1 演算法
<a name="aws-forecast-recipe-deeparplus"></a>

Amazon Forecast DeepAR\$1 是一種監督式學習演算法，利用遞歸神經網路 (RNNs) 來預測純量 (單一維度) 時間序列。古典的預測方法，例如整合移動平均自回歸模型 (ARIMA) 或指數平滑法 (ETS)，針對每個個別的時間序列採用單一模型，然後使用該模型來推算未來的時間序列。但是在許多應用程式中，您在一組橫截面單位會有許多類似的時間序列。這些時間序列分組需要不同的產品、伺服器負載和網頁請求。在這種情況下，針對所有時間序列，來聯合訓練單一模型，可以帶來效益。DeepAR\$1 採用此方法。當您的資料集包含數百個特徵時間序列，DeepAR\$1 演算法優於標準 ARIMA 和 ETS 方法。您也可以使用訓練模型來對類似其已訓練過的新時間序列產生預測。

**Python 筆記本**  
如需使用 DeepAR\$1 step-by-step指南，請參閱 [ DeepAR\$1 入門](https://github.com/aws-samples/amazon-forecast-samples/blob/master/notebooks/advanced/Getting_started_with_DeepAR%2B/Getting_started_with_DeepAR%2B.ipynb)。

**Topics**
+ [DeepAR\$1 運作方式](#aws-forecast-recipe-deeparplus-how-it-works)
+ [DeepAR\$1 超參數](#aws-forecast-recipe-deeparplus-hyperparameters)
+ [調校 DeepAR\$1 模型](#aws-forecast-recipe-deeparplus-tune-model)

## DeepAR\$1 運作方式
<a name="aws-forecast-recipe-deeparplus-how-it-works"></a>

在訓練期間，DeepAR\$1 使用訓練資料集和選用的測試資料集。它使用測試資料集來評估訓練模型。一般而言，訓練和測試資料集不必包含相同的時間序列。您可以使用對指定訓練集進行訓練的模型，對訓練集中時間序列的未來以及其他時間序列產生預測。訓練和測試資料集都包含 (最好不只一個) 目標時間序列。或者，它們可以與特徵時間序列的向量和分類特徵的向量相關聯 （如需詳細資訊，請參閱 *SageMaker AI 開發人員指南*中的 [DeepAR 輸入/輸出界面](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html#deepar-inputoutput))。以下範例顯示其對於依據 `i` 編製索引之訓練資料集元素的運作方式。訓練資料集包含目標時間序列 `zi,t`，以及兩個關聯特徵時間序列 `xi,1,t` 和 `xi,2,t`。

![\[\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/forecast-recipe-deeparplus-ts-full-159.base.png)


目標時間序列可能包含遺漏值 (在圖中以時間序列的中斷點表示)。DeepAR\$1 僅支援未來已知的特徵時間序列。這可讓您執行反事實的「what-if」案例。例如，「如果我以某種方式變更產品的價格，會發生什麼事？」 

每個目標時間序列也可以與多個分類特徵建立關聯。您可以使用這些來編碼時間序列屬於特定群組。使用類別特徵可讓模型了解這些分組的典型行為，以提高準確性。模型透過學習每個群組的內嵌向量 (用於擷取群組中所有時間序列的共通屬性) 來實作這件事。

為了促進學習時間相依模式，例如週末的尖峰值，DeepAR\$1 會根據時間序列精細程度自動建立特徵時間序列。例如，DeepAR\$1 會以每週時間序列的頻率，建立兩個特徵時間序列 (一個月的某一天和一年的某一天)。它會使用這些衍生特徵時間序列搭配您在訓練和推論期間提供的自訂特徵時間序列。以下範例顯示兩個衍生時間序列特徵：`ui,1,t` 代表一天中小時，而 `ui,2,t` 代表星期幾。

![\[\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/forecast-recipe-deeparplus-ts-full-159.derived.png)


DeepAR\$1 會根據資料頻率和訓練資料的大小，自動包含這些特徵時間序列。下表列出可針對每個支援的基本時間頻率衍生的特徵。


****  

| 時間序列的頻率 | 衍生特徵 | 
| --- | --- | 
| 分鐘 | 小時中的分鐘、一天的幾時、星期幾、月中的日、年中的日 | 
| 小時 | 一天的幾時、星期幾、月中的日、年中的日 | 
| 天 | 星期幾、月中的日、年中的日 | 
| 週 | week-of-month、week-of-year | 
| 月 | 年中的月 | 

DeepAR\$1 模型透過從訓練資料集的每個時間序列隨機取樣數個訓練範例來接受訓練。每個訓練範例都包括一對相鄰內容和具有固定預先定義長度的預測視窗。`context_length` 超參數控制網路可以看到多遠的過去，而 `ForecastHorizon` 參數控制可對多遠的未來進行預測。在訓練期間，Amazon Forecast 會忽略訓練資料集內時間序列短於指定預測長度的元素。以下範例顯示從元素 `i` 提取的五個範例，其文本內容長度 (以綠色醒目顯示) 為 12 小時、預測長度 (以藍色醒目顯示) 為 6 小時。為求簡潔，我們排除了特徵時間序列 `xi,1,t` 和 `ui,2,t`。

![\[\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/forecast-recipe-deeparplus-ts-full-159.sampled.png)


為了擷取季節性模式，DeepAR\$1 也會從目標時間序列自動傳送延遲 (過去期間) 值。在我們每小時取樣一次的範例中，對於每個時間索引 `t = T`，模型會公開 `zi,t` 值 (發生在過去大約一天、兩天和三天，以粉紅色醒目顯示)。

![\[\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/images/forecast-recipe-deeparplus-ts-full-159.lags.png)


進行推論時，訓練過的模型會接受目標時間序列做為輸入 (這些時間序列在訓練時不一定使用過)，並預測下一個 `ForecastHorizon` 值的概率分佈。由於 DeepAR\$1 是以整個資料集進行訓練，因此預測會將來自類似時間序列的學會模式列入考慮。

如需 DeepAR\$1 背後數學的相關資訊，請參閱康乃爾大學圖書館網站上的 [DeepAR：利用遞歸神經網路來進行機率預測](https://arxiv.org/abs/1704.04110)。

## DeepAR\$1 超參數
<a name="aws-forecast-recipe-deeparplus-hyperparameters"></a>

下表列出您可用於 DeepAR\$1 演算法中的超參數。粗體參數會參與超參數最佳化 (HPO)。


| 參數名稱 | Description | 
| --- | --- | 
| context\$1length |  模型在進行預測之前所讀取時間點的數量。此參數的值應和 `ForecastHorizon` 大致相同。模型也會從目標接收到延遲的輸入，因此 `context_length` 可能會比典型的季節週期小上許多。例如，每日時間序列可以有每年季節性。模型會自動包含一年的延遲年，因此內容的長度可能會比一年短。模型所選擇的延遲值，取決於時間序列的頻率。例如，每日頻率的延遲值為：前一週、2 週、3 週、4 週和一年。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| epochs |  針對培訓資料的最高傳遞次數。最佳值取決於您的資料大小和學習速率。較小的資料集和較低的學習率都需要更多 epoch，才能獲得良好的結果。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| learning\$1rate |  在訓練中所使用的學習率。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| learning\$1rate\$1decay |  學習率下降的速率。學習率最多可降低 `max_learning_rate_decays` 次，接著訓練停止。只有在 `max_learning_rate_decays` 大於 0 時，才會使用此參數。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| likelihood |  此模型會產生機率預測，並可提供分佈的分位數並傳回樣本。根據您的資料，選擇適合用來估計不確定性的可能性 (雜訊模型)。 有效值 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| max\$1learning\$1rate\$1decays |  應發生的學習率降低數上限。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html) | 
| num\$1averaged\$1models |  在 DeepAR\$1 中，訓練軌跡可以遇到多個模型。每個模型可能會有不同的預測優點和缺點。DeepAR\$1 可以平均模型行為，以利用所有模型的優點。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| num\$1cells |  要在 RNN 的每個隱藏層中使用的單元數。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 
| num\$1layers |  RNN 中隱藏層的數量。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-deeparplus.html)  | 

## 調校 DeepAR\$1 模型
<a name="aws-forecast-recipe-deeparplus-tune-model"></a>

若要調校 Amazon Forecast DeepAR\$1 模型，請依照下列建議以最佳化訓練程序和硬體組態。

### 程序最佳化的最佳實務
<a name="aws-forecast-recipe-deeparplus-best-practices"></a>

 為了獲得最佳結果，請遵循以下建議：
+ 除了分割訓練和測試資料集以外，一律提供整個時間序列用於訓練和測試，以及呼叫模型以進行推論時。無論您如何設定 `context_length`，都不要分割時間序列或只提供一部分。對於延遲值特徵，模型將使用比 `context_length` 更往前的資料點。
+ 對於模型調校，您可以將資料集分割成訓練和測試資料集。在典型評估案例中，您應該在用於訓練的相同時間序列上測試模型，但是使用訓練期間可見的最後一個時間點之後的未來 `ForecastHorizon` 時間點。若要建立滿足這些條件的訓練和測試資料集，請使用整個資料集 (所有時間序列) 做為測試資料集，並從每個時間序列移除最後的 `ForecastHorizon` 點以用於訓練。這樣，在訓練期間，模型就看不到測試期間它所評估時間點的目標值。在測試階段，會保留測試資料集中每個時間序列最後的 `ForecastHorizon` 點，並產生預測。接著，會將預測值與最後 `ForecastHorizon` 點的實際值進行比較。您可以多次重複測試資料集內的時間序列，但在不同的終點切斷它們，藉以建立更複雜的評估。這會產生從不同時間點的多個預測進行平均的準確性指標。
+ 避免對 `ForecastHorizon` 使用非常大的值 (> 400)，因為這樣會使模型變慢而且較不準確。如果您想要進一步預測未來，請考慮彙總到更高的頻率。例如，使用 `5min` 代替 `1min`。
+ 由於延遲，模型可以比 `context_length` 看得更往前一點。因此，您不必將此參數設為大的值。此參數的良好起點是 `ForecastHorizon` 的相同值。
+ 使用盡可能多的時間序列來訓練 DeepAR\$1 模型。雖然在單一時間序列上訓練的 DeepAR\$1 模型可能已能良好運作，但標準預測方法 (例如 ARIMA 或 ETS) 可能更準確也更適合用於此使用案例。當您的資料集包含數百個特徵時間序列時，DeepAR\$1 會開始優於標準方法。目前，DeepAR\$1 要求所有訓練時間序列中可用的觀測總數至少為 300。

# 指數平滑法 (ETS) 演算法
<a name="aws-forecast-recipe-ets"></a>

指數平滑法 [(ETS)](https://en.wikipedia.org/wiki/Exponential_smoothing) 是一種常用的本機統計演算法針對時間序列預測。Amazon Forecast ETS 演算法會在 Comprehensive R Archive Network (CRAN) `Package 'forecast'`的 中呼叫 [ets 函數](https://cran.r-project.org/web/packages/forecast/forecast.pdf#Rfn.ets.1)。

## ETS 的運作方式
<a name="aws-forecast-recipe-ets-how-it-works"></a>

ETS 演算法特別適用於具備季節性和其他先前假設資料的資料集。ETS 會計算所有觀測的輸入時間序列資料集加權平均數，作為其預測。加權會隨著時間而逐漸下降，而不是簡單移動平均的常數加權平均法。加權取決於常數參數的值，這也稱為平滑參數。

## ETS 超參數和調校
<a name="aws-forecast-recipe-ets-hyperparamters"></a>

如需 ETS 超參數和調校的相關資訊，請參閱 [CRAN](https://cran.r-project.org) [套件預測](https://cran.r-project.org/web/packages/forecast/forecast.pdf)中的`ets`函數文件。

Amazon Forecast 會使用下表，將 [CreateDataset](API_CreateDataset.md)操作中指定的`DataFrequency`參數轉換為 R [ts](https://www.rdocumentation.org/packages/stats/versions/3.6.1/topics/ts) 函數的`frequency`參數：


| DataFrequency (字串) | R ts frequency (整數) | 
| --- | --- | 
| Y | 1 | 
| M | 12 | 
| W | 52 | 
| D | 7 | 
| H | 24 | 
| 30min | 2 | 
| 15min | 4 | 
| 10min | 6 | 
| 5min | 12 | 
| 1min | 60 | 

不在資料表中的支援資料頻率預設為 1 的 `ts` 頻率。

# 非參數時間序列 (NPTS) 演算法
<a name="aws-forecast-recipe-npts"></a>

Amazon Forecast 非參數時間序列 (NPTS) 演算法是一種可擴展的概率基線預測器。它透過從過去的觀察中抽樣來預測特定時間序列的未來值分佈。預測結果受到觀察值的限制。當時間序列是間歇性 (或稀疏的，包含許多 0) 和突增時，NPTS 會特別有用。例如，對於時間序列有很多低計數的個別項目，預測其需求。Amazon Forecast 提供 NPTS 的變體，它們對於採樣哪些過去的觀察值及採樣方式有所不同。若要使用 NPTS 變體，請選擇超參數設定。

## NPTS 的運作方式
<a name="aws-forecast-recipe-npts-how-it-works"></a>

與古典預測方法 (例如指數平滑法 (ETS) 和整合移動平均自回歸模型 (ARIMA)) 類似，NPTS 會為每個時間序列個別產生預測。資料集中的時間序列可以有不同的長度。有可用觀察值的時間點稱為訓練範圍，而期望預測的時間點稱為預測範圍。

Amazon Forecast NPTS 預測器提供下列變體：NTPS、季節性 NTPS、氣候預測器和季節性氣候預測器。

**Topics**
+ [NPTS](#aws-forecast-recipe-npts-variants-npts)
+ [季節性 NPTS](#aws-forecast-recipe-npts-variants-seasonal)
+ [氣候預測器](#aws-forecast-recipe-npts-variants-climatological)
+ [季節性氣候預測器](#aws-forecast-recipe-npts-variants-seasonal-climatological)
+ [季節性特徵](#aws-forecast-recipe-npts-seasonal-features)
+ [最佳實務](#aws-forecast-recipe-npts-recommended-practices)

### NPTS
<a name="aws-forecast-recipe-npts-variants-npts"></a>

在這個變體中，透過對時間序列訓練範圍內的所有觀察值進行採樣來產生預測。不過，這個變體不是從所有觀察中統一抽樣，而是根據與需要預測之目前時階距離多遠，來為每個過去的觀察值分配權重。特別是，它使用的權重會根據過去觀察值的距離呈指數衰減。利用這種方式，來自最近過去的觀察值的採樣機率，遠高於來自遙遠過去的觀察值。這裡假設近期過去比遙遠的過去更能預示未來。您可以使用 `exp_kernel_weights` 超參數來控制加權的衰減量。

若要在 Amazon Forecast 中使用此 NPTS 變體，請將 `use_seasonal_model` 超參數設為 `False` 並接受所有其他預設設定。

### 季節性 NPTS
<a name="aws-forecast-recipe-npts-variants-seasonal"></a>

季節性 NPTS 與 NPTS 類似，差別在於它不是從所有觀察中抽樣，而是僅使用過去*幾季*的觀察值。在預設情況下，季節取決於時間序列的精細程度。例如，對於每小時時間序列，若要預測第 *t* 小時，這個變體會從對應於前幾天的第 *t* 小時觀察中採樣。與 NPTS 類似的是，前一天第 *t* 小時的觀察值，會給予比更早幾天第 *t* 小時觀察值更多的權重。如需如何時間序列的精細程度來判斷季節性的詳細資訊，請參閱[季節性特徵](#aws-forecast-recipe-npts-seasonal-features)。

### 氣候預測器
<a name="aws-forecast-recipe-npts-variants-climatological"></a>

氣候預測器變體會以均勻機率對所有過去的觀察結果進行採樣。

若要使用氣候預測器，請將 `kernel_type` 超參數設定為 `uniform` 並將 `use_seasonal_model` 超參數設定為 `False`。對於所有其他超參數，接受預設設定。

### 季節性氣候預測器
<a name="aws-forecast-recipe-npts-variants-seasonal-climatological"></a>

與季節性 NPTS 類似，季節性氣候預測器會對過去幾季的觀察結果進行抽樣，但會以均勻機率來抽樣。

若要使用季節性氣候預測器，請將 `kernel_type` 超參數設定為 `uniform`。對於所有其他超參數，請接受所有其他預設設定。

### 季節性特徵
<a name="aws-forecast-recipe-npts-seasonal-features"></a>

若要判斷哪些項目對應至季節性 NPTS 和季節性氣候預測器的季節，請使用下表所列的特徵。下表根據精細程度，列出所支援基本時間頻率的衍生特徵。Amazon Forecast 包含這些特徵時間序列，因此您不需要提供。


****  

| 時間序列的頻率 | 決定季節性的特徵 | 
| --- | --- | 
| 分鐘 | 小時中的分鐘 | 
| 小時 | 一天的幾時 | 
| 天 | 週中的日 | 
| 週 | 月中的日 | 
| 月 | 年中的月 | 

### 最佳實務
<a name="aws-forecast-recipe-npts-recommended-practices"></a>

使用 Amazon Forecast NPTS 演算法時，請考慮準備資料和獲得最佳結果的以下最佳實務：
+ 由於 NPTS 會為每個時間序列個別產生預測結果，因此在呼叫模型以進行預測時，請提供整個時間序列。此外，也請接受 `context_length` 超參數的預設值。這會讓演算法使用整個時間序列。
+  如果您變更 `context_length` (因為訓練資料太長)，請確認它的大小足夠，可涵蓋多個過去季節。例如，對於每日時間序列，這個值必須至少有 365 天 (假設您擁有這麼多數量的資料)。

## NPTS 超參數
<a name="aws-forecast-recipe-npts-hyperparamters"></a>

下表列出您可用於 NPTS 演算法中的超參數。


| 參數名稱 | Description | 
| --- | --- | 
| context\$1length | 模型用於進行預測的過去時間點數量。在預設情況下，它會使用訓練範圍內的所有時間點。一般而言，這個超參數的值應該很大，也應該涵蓋多個過去的季節。例如，對於每日時間序列，這個值必須至少有 365 天。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-npts.html)  | 
| kernel\$1type | 核心，用來定義對過去觀察值進行採樣的權重。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-npts.html)  | 
| exp\$1kernel\$1weights |  只有在 `kernel_type` 為 `exponential` 時有效。 核心的擴展參數。如需對在遙遠過去的觀察值所給予權重的更快 (指數) 衰減，請使用大數值。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-npts.html)  | 
| use\$1seasonal\$1model | 是否使用季節性變體。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-npts.html)  | 
| use\$1default\$1time\$1features |  僅適用於*季節性 NPTS* 和*季節性氣候預測器*變體。 是否使用根據時間序列之精細程度的季節性特徵來判斷季節性。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/forecast/latest/dg/aws-forecast-recipe-npts.html)  | 

# Prophet 演算法
<a name="aws-forecast-recipe-prophet"></a>

[Prophet](https://facebook.github.io/prophet/) 是一種熱門的本機 Bayesian 貝式結構時間序列模型。Amazon Forecast Prophet 演算法使用 [Prophet Python 實作的 Prophet 類別](https://facebook.github.io/prophet/docs/quick_start.html#python-ap)。

## Prophet 的運作方式
<a name="aws-forecast-recipe-prophet-how-it-works"></a>

Prophet 特別適用於資料集具備：
+ 包含很長時間 (數月或數年) 的詳細歷史觀察 (每小時、每天或每週)
+ 有多個強烈的季節性
+ 包括之前已知的重要 (但不規則) 的事件
+ 有遺漏的資料點或大型極端值
+ 有接近極限的非線性成長趨勢

Prophet 是附加的回歸模型，具備分段線性或邏輯成長曲線趨勢。它包含使用傅立葉序列的每年季節性元件模型，以及使用 dummy 變數的每週使用季節元件模型。

如需詳細資訊，請參閱 [Prophet：預測的比例](https://research.facebook.com/blog/2017/2/prophet-forecasting-at-scale/)。

## Prophet 超參數和相關時間序列
<a name="aws-forecast-recipe-prophet-hyperparamters"></a>

Amazon Forecast 使用預設的 Prophet [超參數](https://facebook.github.io/prophet/docs/quick_start.html#python-ap)。Prophet 也支援相關時間序列做為功能，在相關時間序列 CSV 檔案中提供給 Amazon Forecast。