# 使用时间序列部署进行预测

部署并批准时间序列模型后，您可以创建特定于时间的预测。在本教程中，我们将在 ML 部署中创建一个预测配置，并使用它来运行批量预测。

到目前为止，我们已经使用每日销售数据创建了一个机器学习模型。该过程的目标是通过机器学习识别模式，并将其应用于新数据。

## 理解时间序列模型的预测

区分时间序列模型的预测工作方式非常重要，因为它与其他模型类型的预测不同。您完成准备您的应用程序数据集的步骤与其他模型类型的步骤不同。

对于时间序列模型，新预测是作为新行添加的，而不是作为单独的列添加。

## 创建应用程序数据集

本部分概述了如何为这个时间序列问题创建您的应用程序数据集。编译数据集行的实际过程未显示，但工作流已显示。

线性图，概述了用于使用时间序列预测模型生成预测的应用数据集所需的组件和时间线。

线性图，概述了用于使用时间序列预测模型生成预测的应用数据集所需的组件和时间线。

线性图，概述了用于使用时间序列预测模型生成预测的应用数据集所需的组件和时间线。 ![](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/concept_ml-time-series-forecast-apply-data.png)

### 列结构

您的应用数据集需要包含与您部署的时间序列模型相同的架构。打开 ML 部署时可以找到该架构。

无论如何，应用数据集应包含与模型架构相同的列 — 换句话说，以下各项各占一列：

* 数据索引

* 目标

* 组

* 特征 (协变量)

### 行结构

您的数据集需要包含记录 (行)，如下所示：

* 包含在[训练数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#TrainPrepare)中的所有列的列和列标题。

* 与训练数据集相同的[时间步长](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm)。

* 训练数据集中存在的所有[组](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Groups)和组值。

  信息注释如果应用数据集中存在新的组值（这些值在训练数据中不存在），则不会为这些行生成预测。如果需要对这些新组值进行预测，建议您使用包含这些值的训练数据重新训练模型。

  信息注释

  在预测时或在应用数据集中，缺失的组值处理如下：

  * 允许缺少模型训练所依赖的[主组](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Primary)值。

  * 不允许缺少次要组值。预测将失败并报错。

  最好在预测期间尽可能收集并提供所有次要组数据。但是，如果预计次要组主要在预测时缺失，一种可能的解决方案是完全避免使用次要组。

  相反，您可以将原始的主组和次要组值合并到一个新的分组列中，将其用作新的主组，并基于该结构重新训练模型。在这种设置下，新模型仅依赖于新引入的主组。

  代价是您可能会丢失组之间的一些相关信息，因为它们现在将被视为完全独立的时间序列，而不是相互提供上下文信息的相关子序列。

* 在[预测截止时间](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#ForecastCutOff)之前的历史数据记录（每个目标和组）数量，等于或多于模型的[应用窗口](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#ApplyWindow)中的记录数。这些必须是包含历史观察到的日期或时间戳、[目标](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Target)和[协变量](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Covariates)值的完整记录。应用窗口由训练期间配置的[预测窗口和间隙](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#ForecastHorizon)决定——您需要预测的未来时间越长，在应用数据集中运行预测所需的历史数据就越多。

* 预测范围内的所有未来时间步长的记录。对于这些未来记录，仅包含日期索引列的值以及任何[未来特性](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#FutureFeatures)。将其他列的值留空。

### 其他修改

您可能需要对数据集进行其他修改，以使其与模型架构匹配。特别是，分组功能在训练期间被选为组时，会自动转换为分类功能类型，以便它们可以作为组使用。在您的应用数据中，如果您有包含数值数据并将其用作组的功能，则需要转换它们的数据类型，以便将其识别为分类数据。这方面的一个示例显示在[准备数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-series-tutorial-predict.htm#Preparing)。

### 准备数据集

本教程提供了一个已配置了所需的列和记录的应用数据集。但是，所提供的应用数据集包含一个数值列，store\_nbr，该列在模型中被配置为一个组。所以，您需要创建一个脚本来将此列转换为字符串数据。

执行以下操作：

1. 转到 Analytics 活动中心的“创建”页面，然后选择脚本。

2. 为您的脚本输入一个名称，例如，转换后的应用数据。

3. 为您的脚本选择一个空间。它需要与您存储原始应用数据集的空间相同。

4. 单击创建。

5. 在 脚本 中，切换到 编辑器。

6. 在 部分 下，单击 the 创建新分段 icon 以新增部分。

7. 将下面的加载脚本粘贴到编辑器中。

8. 单击 导出数据。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-series-tutorial-predict.htm)

#### 加载脚本

```
ApplyDataset_Transformed:

LOAD
    id,
    "date",
    text(store_nbr) as store_nbr,
    family,
    sales,
    onpromotion
FROM [lib://:DataFiles/ML - Multivariate forecasting - apply.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);

Store [ApplyDataset_Transformed] into [lib://:DataFiles/Final transformed apply dataset.qvd](QVD);
```

运行脚本以将应用数据集的新版本导出到 Qlik Cloud Analytics。

运行脚本以将应用数据集的新版本导出到 Qlik Cloud Analytics。

运行脚本以将应用数据集的新版本导出到 Qlik Cloud AnalyticsQlik Cloud Analytics。 ![脚本编辑器，其中加载脚本已粘贴到编辑器中，并且“导出数据”按钮已突出显示](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ml_time-series-run-script.png)

脚本运行后，一个新的应用数据集 Final transformed apply dataset.qvd应与原始应用数据集位于同一空间中。

## 创建预测

现在您已拥有兼容的应用数据集，请使用它从您的机器学习部署中创建预测。

执行以下操作：

1. 在目录中，打开您在[部署时间序列模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-series-tutorial-deploy.htm)中创建的销售预测部署部署。

2. 在右下角，单击创建预测。

3. 在右侧的预测配置窗格中的应用数据下，单击选择应用数据集。

4. 选择应用数据集文件： Final transformed apply dataset.qvd。

5. 比较训练的模式并应用数据集。不应存在任何架构不匹配错误。

6. 在预测配置窗格中，单击名称预测数据集。键入以下名称：ML - Sales predictions。使用默认的 Parquet 格式。

7. 选择一个空间，然后单击确认。

Predict 配置，显示架构比较和配置面板。

Predict 配置，显示架构比较和配置面板。

Predict 配置，显示架构比较和配置面板。 ![ML 部署时间序列模型，示出带模式的预测配置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ml-time-series-tutorial-deployment-predictions.png)

单击保存和关闭边的 the 现在保存并预测 icon 图标。选择。

可以在数据集预测中监控该过程。您可以通过单击出现的弹出窗口中的打开来查看目录中的输出。

当预测运行完成后，创建一个应用程序以查看您的预测。转到下一个主题。