使用多元时间序列预测 | Qlik Cloud帮助
跳到主要内容 跳到补充内容

使用多元时间序列预测

借助 Qlik Predict,您可以训练机器学习模型来预测特定时间的指标。使用基于神经网络的方法,模型可以学习并预测涉及特定时间关联、分组目标数据、历史特性和已知未来变量的复杂模式。要创建时间序列预测,请准备训练数据集,将其用于时间序列实验,部署模型,然后创建可用于生成预测的应用数据集。

时间序列问题的组成部分

对于时间序列预测,目标是预测未来特定日期的目标值。例如,您可能希望预测下周、下个月或下个季度的销售额。

在开发时间序列问题时,请定义以下组成部分:

  • 目标和组

  • 日期索引

  • 预测范围

  • 协变量

信息注释此框架描述了如何为时间序列预测问题定义机器学习问题。要为分类和回归问题定义机器学习问题,请参阅 定义机器学习问题

概述 Qlik Predict 中时间序列预测问题组成部分的简化图解。

目标

与其他实验类型一样,目标是您希望模型预测其未来值的列。对于时间序列实验,目标需要包含数值数据,例如销售额或库存。

如果您在时间序列预测中使用,模型将在预测窗口中为每个时间步的每个组预测一个目标值。如果您不使用组,您训练的模型将为预测窗口中的每个时间步预测一个目标值。

日期索引

日期索引在连续的时间间隔(时间步)内跟踪时间序列指标。您需要在早期阶段决定您的时间步:您需要多久预测一次未来值?

具体而言,日期索引是出现在时间序列问题的训练和应用数据集中的一列。日期索引决定了这两个应用数据集的结构——每一行代表一个时间步(或者,如果使用组,则代表每个唯一分组的一个时间步)。

当您在时间序列实验中添加训练数据集时,可能的日期索引列会被自动识别,并在列级别作为 洞察 呈现给您。您可以从架构视图中的 可能的日期索引 洞察中识别它们。

组是包含分类信息的特性,您希望为其单独生成预测。组的经典示例包括商店编号和产品,它们可用于组织销售额等目标的数据。通过选择商店编号和产品类型作为组,您的时间序列模型将为这些列中的每个单独值提供预测。例如,以销售额为目标,如果您有三个商店编号(1、2 和 3)和两种产品类型(杂货和农产品),您的模型将为这些值的每个唯一组合生成销售额预测。

如果您有数据并且需要按类别进行单独预测,则应将组纳入您的时间序列问题中。组的另一个优点是模型可以全局学习,更好地理解您定义的不同分组之间存在的模式。

您可以配置用于每个实验版本的组。如果您没有指定组,但在您的训练数据集中识别出了组,则训练将使用组。

组由日期索引列中的重复值标识——例如,对于 2025 年 1 月 14 日的日期,您有两条记录:一条用于商店 A,另一条用于商店 B。

时间序列实验中的每个组(包括单独的目标)都被视为数据集内独立的时间序列。请参阅 什么是时间序列?

主要组和次要组

对于具有两个组列的时间序列问题,一个组是主要组,另一个是次要组。有关示例,请参阅 准备训练数据集训练数据集示例——两个组应用数据集示例 — 两个组

主要分组定义了独立的时间序列。例如,每个商店都成为其自己独立的时间序列,从而允许模型学习不同商店的不同行为和模式。

次要分组的处理方式有所不同。系统不会创建完全独立的序列,而是将这些值透视为额外的特性(协变量),从而允许相关的子序列相互提供上下文信息。

您通常不需要知道哪个组是主要组,哪个是次要组,尽管您可以选择在实验中指定一个主要组。使用已部署的时间序列模型进行预测时需要考虑某些事项——请参阅 准备应用数据集

信息注释

所有主要组应共享相同的次要组。例如,如果商店是主要组,产品是次要组,则每个商店应包含相同的一组产品。缺少次要组会导致跨时间序列的特性维度不一致。

如果您预计在预测时次要组值与主要组值不一致,一种可能的方法是将原始的主要组和次要组值合并到一个新的分组列中,并在重新训练模型时将其用作主要组。在这种设置中,模型不再依赖于次要组,但组之间的相关信息可能会减少。

预测范围

预测范围指定了您希望预测到未来的多远。预测范围由预测窗口(您需要预测的时间步数)和预测间隙(历史数据之后您不需要预测的可选时间步数)组成。

您在配置实验版本时设置预测窗口和间隙大小。这些值在模型训练期间以及从作为 ML 部署进行部署的模型生成预测时都会使用。

预测窗口是您希望预测未来的时间步数。例如,如果您的时间步是一天,并且您希望预测未来两周的销售额,则应将预测窗口设置为 14。

预测间隙是未来您不需要预测的时间量。设置预测间隙是可选的,因为您可能需要也可能不需要。预测间隙从您提供的已记录历史训练数据的末尾开始。预测窗口从预测间隙结束的地方开始。

例如,您可能希望预测未来的销售额,但您只对输入数据结束后一周之后的日期的未来销售额感兴趣。在这种情况下,如果时间步为天,您可以将预测间隙大小设置为七个时间步。

您选择的预测窗口以及您拥有的训练数据量,限制了您可以预测到未来的多远。有关更多信息,请参阅 最大预测窗口

协变量

在时间序列问题中,特性通常被称为协变量。与其他机器学习问题类似,协变量是您怀疑对目标结果有影响的其他变量。每个协变量在您的训练数据集中表示为单独的一列。

在时间序列预测中,有几种类型的协变量,它们有一些重要的区别:

  • 静态协变量:在时间序列过程中不发生变化的列。静态协变量适用于使用组的时间序列实验。例如,假设您有产品和商店编号的组,并且有一个特性“默认折扣”。如果商店 1 中的产品 A 的默认折扣为 10%,而商店 2 中的产品 B 的默认折扣为 20%,则“默认折扣”将是一个静态协变量。也就是说,它在它出现的组的数据内不会发生变化。

    静态协变量会从您包含在实验中的历史特性中自动检测出来。您不需要指明哪些特性是静态协变量。

  • 过去协变量:仅在历史数据中可用且在这些数据中发生变化的时间相关变量。过去协变量会从您包含在实验中的历史特性中自动检测出来。您不需要明确指明哪些特性是过去协变量。

  • 未来协变量:未来协变量,也称为未来特性,是时间相关的变量,您将知道其在预测范围内的未来值。在训练中使用未来协变量时,您需要在训练配置中将它们指明为未来特性。

未来特性

借助未来特性,您可以向模型提供有关您已知或可以合理预期的未来信息的额外数据。特别是,您可以访问跨越您选择的预测范围的此特性的未来值。在定义未来特性时,您需要提供历史数据以及未来数据。

例如,对于预测可能受商店未来提供的折扣影响的指标的模型,您可以包含历史上观察到的折扣,以及预测窗口内未来时间段的折扣。未来特性的其他示例可能包括天气或日历信息。

其他重要概念

本部分概述了与您的时间序列问题相关,但您不会在实验或 ML 部署中直接配置的概念。这些是由您的数据或您为模型配置的其他属性定义的属性。

时间步

时间步由您的训练数据集定义,对于训练和预测都很重要。

在您的训练数据集中,时间步是记录日期索引中数据的间隔。例如,时间步可以是每天、每小时、每分钟或每秒。 检测到的最小时间步是毫秒。

了解训练数据中使用的时间步非常重要。您定义的其他实验参数(例如预测窗口和预测间隙大小)将遵循此时间步间隔。

部署模型后,您希望为其创建预测的应用数据将需要遵循与训练数据集中定义的相同时间步。

质量

当您选择训练数据集时,系统会推断所使用的时间步。如果日期索引中存在一些缺失值或间隙,系统可以自动对目标、组和协变量等列进行插值。但是,如果您的数据包含的时间间隔不一致,以至于检测到不同的时间步,则必须首先修复数据。例如,如果您有几个月的数据是每天记录一次的,但有一部分数据是一直按周记录的,则无法使用该数据集,因为会检测到多个时间步。

应用窗口

应用窗口(或回溯期)是算法可用于为您指定的预测窗口提供预测的训练数据部分。

应用窗口由系统计算并设置。它以时间步为单位进行测量。应用窗口由您设置为预测窗口和间隙(预测范围)的内容定义。 在运行至少一个实验版本后,您的应用窗口大小将显示在实验配置面板和 模型训练摘要 中。在创建或编辑批处理预测配置时,它也会显示在 ML 部署的 模型架构 中。

应用窗口会从您的训练配置中自动识别。要为给定的预测窗口生成预测,您需要提供至少涵盖您的应用窗口的历史数据。这在您的应用数据集中提供。请参阅 准备应用数据集

最大预测窗口

最大预测窗口在您配置时间序列实验时进行估算。在您运行了一个版本的训练后,最大预测窗口将被确定。当您在实验配置面板中打开 目标和实验类型 时,最大预测窗口将作为 估计的最大预测最大预测 显示在 基于您的数据 下。最大预测窗口是您可以生成预测的最大时间步数,前提是您选择了预测窗口、提供了多少历史数据以及系统预期的最小样本量。您提供的历史数据越多,您能够预测的时间就越远。但是,为了生成可靠的预测,选择合理的预测窗口非常重要。

最大预测窗口最多可达 180 个时间步长。

预测截止时间

在预测期间定义应用数据集时,预测截止时间尤为重要。预测截止时间是样本中具有目标值的最后一个日期。本质上,此截止时间之后的日期是您希望为其生成预测的日期。

什么是时间序列?

Qlik Predict 时间序列预测中,每个组(包括单独的目标)都被视为训练数据集内独立的时间序列。例如,假设您的训练数据集包含销售指标。这些销售指标是为每个商店和产品类型定义的。将“商店”和“产品类型”列定义为组后,训练数据集中将存在三个时间序列。

准备训练数据集

对于多元时间序列预测,您的训练数据集需要包含以下列:

  • 日期索引

  • 目标列

  • 组列(可选)

  • 特性列(可选——如果没有特性,您将训练一个单变量预测模型)

显示时间序列训练数据集所需列和数据的图解。描述了没有组、一个组和两个组的场景。

概述时间序列预测模型训练数据集所需组成部分和时间线的线性图。

日期索引列

您需要一个包含完整日期或时间戳的日期索引。此列是跟踪目标和协变量指标的按时间顺序排列的索引。日期索引列沿着一致的时间间隔(时间步)按顺序组织基于时间的测量值。

日期索引列的组织方式如下,具体取决于您是否使用组:

  • 无组:每个时间步一条记录。例如,对于每日预测,每一行代表一天。

  • 有组:每个时间步有一个或多个重复条目,具体取决于所使用的组。

对于多元训练数据集,每个时间步将有一个或多个重复条目,具体取决于所使用的组。您使用的时间步具有灵活性——例如,您可以每天、每周或每月记录一次或多次日期,等等。

如果可以进行插值,此列中缺失或记录不一致的值有时是可以接受的。但是,您的日期索引值不能包含多个不同的时间步。例如,如果确定间隔为每天一次,但在某个时刻识别出每天两次的间隔,则在训练期间将发生错误。

目标列和组列

您的数据集需要有一个目标列,其中包含您想要预测的数值指标。一个常见的例子是销售额。

如果您使用组,则需要为您添加的中的每个可能值提供历史目标值。例如,如果您的目标是销售额,并且您添加了一个包含商店 A 和商店 B 数据的组“商店编号”,则您的数据集需要为每个时间步包含两条单独的记录:一条包含商店 A 的销售额值,另一条包含商店 B 的销售额值。

信息注释如果您有两个组,请确保所有主要组共享相同的次要组。请参阅 主要组和次要组

特性列

您可以训练没有任何协变量的时间序列模型。但是,如果您包含协变量,请在数据集中为每个特性提供一列。特性数据通常应为历史记录数据,除非您要添加未来特性。未来特性列可以包含历史数据和未来数据。只有当您确信在创建预测时将知道这些列的未来值时,才应在训练数据集中包含未来特性数据。

跟踪您将用作未来特性的特性,因为您需要在训练配置中将它们选择为未来特性。

数据量

您的数据集需要包含足够的记录——数据量由所有组共享的时间范围决定。只有来自此重叠期间的数据才用于训练实验。

历史数据的量在决定您可以预测到未来的多远方面起着一定作用。您期望的预测窗口也会影响您需要多少历史数据。

通常,历史数据越多越好。但是,数据需要具有良好的质量并捕捉到期望的趋势。如果数据提供不相关的信息或包含不准确之处,将其包含在模型中是没有帮助的。请考虑在优化数据量与保持质量和相关性之间取得平衡。

示例

准备应用数据集

部署时间序列模型后,您需要开发一个将为其进行预测的应用数据集

应用数据集——要求和验证

对于时间序列模型,应用数据集需要:

  • 包含在训练数据集中的所有列的列和列标题。

  • 与训练数据集相同的时间步长

  • 训练数据集中存在的所有和组值。

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

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

    • 允许缺少模型训练所依赖的主组值。

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

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

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

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

  • 预测截止时间之前的历史数据记录(每个目标和组)数量,等于或多于模型的应用窗口中的记录数。这些必须是包含历史观察到的日期或时间戳、目标协变量值的完整记录。应用窗口由训练期间配置的预测窗口和间隙决定——您需要预测的未来时间越长,在应用数据集中运行预测所需的历史数据就越多。

  • 预测范围内的所有未来时间步长的记录。对于这些未来记录,仅包含日期索引列的值以及任何未来特性。将其他列的值留空。

提示注释应用数据集的大部分历史数据要求是为了指定最小可接受数据量。您始终可以提供比所需更多的数据。当模型生成预测时,仅使用覆盖应用窗口所需的记录。

插图显示了用于从时间序列预测模型生成预测的应用数据集所需的列和数据。描述了没有组、一个组和两个组的场景。

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

示例

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!