跳到主要内容 跳到补充内容

使用多元时间序列预测

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

时间序列问题的组成部分

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

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

  • 目标和组

  • 数据索引

  • 预测范围

  • 协变量

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

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

目标

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

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

数据索引

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

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

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

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

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

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

组通过日期索引列中的复制值进行识别,例如,对于 2025 年 1 月 14 日的日期,您有两条记录:一条用于商店 A,另一条用于商店 B。

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

预测范围

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

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

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

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

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

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

协变量

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

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

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

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

  • 历史协变量:仅在历史数据中可用且在此数据中变化的时间相关变量。历史协变量会根据您在实验中包含的历史特性自动检测。您无需明确指出哪些特性是历史协变量。

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

未来特性

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

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

其他重要概念

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

时间步长

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

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

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

部署模型后,您要创建预测的应用程序数据需要关注与训练数据集中定义的时间步长相同的时间步长。

质量

当您选择训练数据集时,系统会推断所使用的时间步长。如果日期索引中存在一些缺失或不一致的值,系统可以自动插值这些特性。但是,如果您的数据包含时间间隔不一致,以至于检测到不同的时间步长,则必须首先修复数据。例如,如果您有几个月的数据是每天记录一次,但其中有一个部分的数据是每周记录一次,则该数据集无法使用,因为会检测到多个时间步长。

应用窗口

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

应用窗口由系统计算和设置。它以时间步长衡量。应用窗口由您设置的预测窗口和间隔(预测范围)定义。

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

最大值预测窗口

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

最大预测窗口可以达到 180 个时间步。

预测截止时间

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

什么是时间序列?

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

准备训练数据集

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

  • 数据索引

  • 目标列

  • 分组列(可选)

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

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

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

日期索引列

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

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

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

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

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

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

目标列和分组列

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

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

特征列

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

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

数据量

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

通常,历史数据越多越好。然而,数据需要具有良好的质量并捕捉到所需的趋势。如果数据提供不相关的信息或包含不准确之处,将其纳入模型将无济于事。请考虑在优化数据量与保持质量和相关性之间取得平衡。

实例

准备应用数据集

在部署时间序列模型后,您需要开发一个应用数据集,以便进行预测。

应用数据集 — 要求和验证

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

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

  • 与训练数据集一样的时间步长

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

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

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

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

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

示例

本页面有帮助吗?

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