# 创建时间感知模型

通过时间感知训练，您可以构建模型，这些模型能够沿着训练数据中存在的基于时间的列预测数据。如果您需要对已知受此基于时间的列影响的目标进行预测，请激活时间感知训练。

时间感知训练通过对训练数据应用专门的数据处理来帮助减少数据泄露。这种处理允许机器学习算法更好地解释数据和预测上下文，因为它们取决于特定的日期或时间维度。

为了训练时间感知模型，您需要在训练数据集中有一列包含日期或时间戳数据。此列为日期索引，用于在训练前对数据集进行排序。关于日期索引的更多信息，请参阅[日期索引要求](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-aware-models.htm#Index) 。

## 何时使用时间感知训练

时间感知模型训练非常适合预测训练中已经存在的时间指标变化的模型。例如：

* 您想预测下个月的销售额，并且您的数据集中有一个 Transaction Date 列。

* 您想预测延迟发货的指标，并且您的数据集中有一个 Delivered Date 列。

## 时间感知训练的工作方式如何？

机器学习中的一个常见问题是找到一种方法来确保模型只在训练时可用的信息上进行训练。如果您的训练数据包含明确的日期和时间信息，这些信息可用于帮助防止数据泄露。

### 日期索引要求

要激活时间感知训练，您需要在数据集中有一列，其中包含模型训练所依赖的日期和时间信息。在为训练配置模型优化时，您可以选择该列。

要将列用作培训中的日期索引，该列必须具有以下所有内容：

* 完整日期。例如，不能使用由月份或天值组成的列。

* 日期或时间戳数据类型。

* 日期特性类型。

### 保留和交叉验证

在选择如何分离数据以进行保留和交叉验证过程时，随机选择方法可以将未来的数据引入模型训练中。当您激活时间感知训练时，Qlik Predict 会使用以下过程：

* 在将训练数据集分为训练数据和保留数据之前，它会沿着所选的索引列进行排序。

* 训练的每次迭代都使用固定的测试大小和逐渐增加的训练大小。随着每次迭代，数据变得越来越新。

有关完整地详细信息，请参阅[基于时间的交叉验证](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/holdout-crossvalidation.htm#TimeAware)。

### 其他处理

时间感知模型训练还使用与默认训练过程不同的其他过程。例如，时间感知训练使用修改后的 null 值插补过程。有关更多信息，请参阅[无效的插补](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/null-imputation.htm)。

## 开启时间感知训练

对于在实验中运行的每个版本，可以打开或关闭或重新配置时间感知模型训练。

执行以下操作：

1. 在实验中，单击 the 视图配置 icon 。

2. 如果您已经运行了至少一个版本的实验，请单击新建版本。

3. 在面板中，展开模型优化。

4. 在基于时间的测试训练分割下，选择用于对数据进行排序的日期索引。

您可以在模型细化过程中更改时间感知训练。例如，您可以关闭该设置，或选择一个新列作为日期索引。有关更多信息，请参阅[微调模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/refining-models.htm)。

## 限制和考虑事项

根据您的用例，时间感知模型训练可以帮助您构建更好的模型。在其他情况下，您可能会通过时间序列模型或分类和回归模型的默认训练过程获得更好的结果。当您不想训练时间序列模型但仍需要将一些基于时间的重点纳入结果模型时，时间感知训练会很有用。例如，当您的输入数据不允许[分组](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Groups)时，时间感知训练可以是时间序列模型训练的合适替代方案。

时间感知训练不会执行自动特性工程来为时间序列问题生成滞后特性。

时间感知训练不适用于时间序列实验。