

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

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

# 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`。