Microsoft时序算法技术参考

Microsoft时序算法包括两个单独的算法,用于分析时序:

  • 在 SQL Server 2005 中引入的 ARTXP 算法经过优化,用于预测序列中的下一个可能值。

  • ARIMA 算法已添加到 SQL Server 2008 中,以提高长期预测的准确性。

默认情况下,Analysis Services 单独使用每个算法来训练模型,然后将结果混合在一起,以便为可变数量的预测生成最佳预测。 还可以选择仅根据数据和预测要求使用其中一种算法。 在 SQL Server 2008 Enterprise 中,还可以自定义在预测期间控制算法混合的截止点。

该主题提供有关如何实现每个算法的进一步信息,以及如何通过参数设置定制算法以微调分析预测结果。

Microsoft时序算法的实现

Microsoft研究开发了 SQL Server 2005 中使用的原始 ARTXP 算法,该算法基于Microsoft决策树算法实现。 因此,ARTXP 算法可以描述为表示定期时序数据的自动回归树模型。 此算法将一个可变数量的过去项与要预测的每个当前项相关联。 名称 ARTXP 派生自自动回归树方法(ART 算法)应用于多个未知的先前状态。 有关 ARTXP 算法的详细说明,请参阅 用于 Time-Series 分析的自动回归树模型

ARIMA 算法已添加到 SQL Server 2008 中的Microsoft时序算法,以提高长期预测。 它是计算 Box 和 Jenkins 描述的自动回归集成移动平均值的过程的实现。 ARIMA 方法能够确定时间序列中的观察结果之间的相互依赖关系,并且随机扰动可以作为模型的一部分纳入。 ARIMA 方法还支持乘法季节性。 鼓励想要详细了解 ARIMA 算法的读者阅读 Box 和 Jenkins 的开创性作品:本部分旨在提供有关 ARIMA 方法如何在Microsoft时序算法中实现的具体详细信息。

默认情况下,Microsoft时序算法同时使用两种方法 ARTXP 和 ARIMA,并混合结果以提高预测准确性。 如果只想使用特定方法,可以将算法参数设置为仅使用 ARTXP 或仅 ARIMA,或控制算法结果的组合方式。 请注意,ARTXP 算法支持交叉预测,但 ARIMA 算法不支持。 因此,仅当使用混合算法或将模型配置为仅使用 ARTXP 时,交叉预测才可用。

了解 ARIMA 差分阶数

本部分介绍了了解 ARIMA 模型所需的一些术语,并讨论了 Microsoft 时序算法中 差分 的具体实现。 有关这些术语和概念的完整说明,我们建议查看 Box 和 Jenkins。

  • 术语是数学公式的一个组成部分。 例如,多项式公式中的术语可能包括变量和常量的组合。

  • Microsoft时序算法中包含的 ARIMA 公式使用 自动回归移动平均 术语。

  • 时序模型可以是 固定 的或 非静止的。 固定模型 是那些恢复为平均值的模型,尽管它们可能有周期,而 非静止 模型没有均衡的焦点,并且受到 冲击或外部变量引入的更大方差或变化的影响。

  • 差分的目标是使时序稳定下来,变得平稳。

  • 差异阶数表示在时间序列中,数值之间差异被计算的次数。

Microsoft时序算法的工作原理是采用数据系列中的值,并尝试将数据拟合到模式。 如果数据系列尚未固定,则算法会应用差异顺序。 差异顺序的每次增加往往使时序更加固定。

例如,如果你有时序(z1、z2、...、zn)并使用一个差异顺序执行计算,则获取一个新序列(y1,y2,...., yn-1),其中 yi = zi+1-zi。 当差异顺序为 2 时,该算法基于派生自第一个顺序公式的 y 系列生成另一个序列(x1、x2、...、xn-2)。 差分的正确数量取决于数据。 在显示常量趋势的模型中,最常见的是单一差异顺序;差异的第二个顺序可以指示随时间变化的趋势。

默认情况下,Microsoft时序算法中使用的差异顺序为 -1,这意味着该算法将自动检测差异顺序的最佳值。 通常,该最佳值为 1(当需要差异时),但在某些情况下,算法将该值增加到最大值 2。

Microsoft时序算法通过使用自动回归值来确定最佳 ARIMA 差顺序。 该算法检查 AR 值并设置一个隐藏参数,ARIMA_AR_ORDER,表示 AR 术语的顺序。 此隐藏参数ARIMA_AR_ORDER具有从 -1 到 8 的值范围。 在默认值 -1 处,算法将自动选择适当的差异顺序。

每当ARIMA_AR_ORDER的值大于 1 时,算法就会将时序乘以多项式术语。 如果多项式公式中的一个项结果为 1 或接近 1 的根,则算法会尝试通过去掉这个项并将差分阶次增加 1 来保持模型的稳定性。 如果差异顺序已达到最大值,则会删除术语,并且差异顺序不会更改。

例如,如果 AR = 2 的值,则生成的 AR 多项式术语可能如下所示:1 - 1.4B + .45B^2 = (1- .9B) (1- 0.5B)。 请注意术语(1- .9B),其根数约为 0.9。 该算法从多项式公式中消除此术语,但无法将差序增加一个,因为它已达到最大值 2。

需要注意的是,唯一可以强制更改差异顺序的方法是使用不支持的参数 ARIMA_DIFFERENCE_ORDER。 此隐藏参数控制算法对时序执行差异的次数,可以通过键入自定义算法参数来设置。 但是,建议不要更改此值,除非已准备好进行试验并熟悉所涉及的计算。 另请注意,目前没有机制(包括隐藏的参数),用于控制触发差异顺序增加的阈值。

最后,请注意,上述公式是简化的案例,没有季节性提示。 如果提供了季节性提示,则会在每个季节性提示的公式左侧添加单独的 AR 多项式术语,并应用相同的策略来消除可能会破坏差异序列的稳定性的术语。

自定义微软的时序算法

Microsoft时序算法支持以下影响生成的挖掘模型的行为、性能和准确性的参数。

注释

Microsoft时序算法在所有版本的 SQL Server 中均可用;但是,某些高级功能(包括用于自定义时序分析的参数)仅在特定版本的 SQL Server 中受支持。 有关 SQL Server 各版本支持的功能列表,请参阅 SQL Server 2012 各版本支持的功能

检测季节性

ARIMA 和 ARTXP 算法都支持检测季节性或周期性。 Analysis Services 使用快速傅立叶转换来检测训练前的季节性。 但是,可以通过设置算法参数来影响季节性检测和时序分析的结果。

  • 通过更改 AUTODETECT_SEASONALITY的值,可以影响生成的可能时间段数。

  • 通过设置 PERIODICITY_HINT的值或多个值,可以为算法提供有关数据中预期周期的信息,并可能提高检测的准确性。

注释

ARTXP 和 ARIMA 算法对季节性提示非常敏感。 因此,提供错误的提示可能会对结果产生不利影响。

选择算法并指定算法组合

默认情况下,或者选择 MIXED 选项时,Analysis Services 会合并算法并为其分配相等权重。 但是,在 SQL Server 2008 Enterprise 中,可以指定特定算法,也可以通过设置一个参数来自定义结果中每个算法的比例,以便将结果加权到短期或长期预测。 默认情况下, FORECAST_METHOD 参数设置为 MIXED,Analysis Services 使用这两种算法,然后加权其值,以最大化每个算法的优势。

  • 若要控制算法的选择,请设置 FORECAST_METHOD 参数。

  • 如果要使用交叉预测,必须使用 ARTXP 或 MIXED 选项,因为 ARIMA 不支持交叉预测。

  • 如果要偏向短期预测,请将 FORECAST_METHOD 设置为 ARTXP。

  • 如果要改进长期预测,请将 FORECAST_METHOD 设置为 ARIMA。

在 SQL Server 2008 Enterprise 中,还可以自定义 Analysis Services 如何混合 ARIMA 和 ARTXP 算法的组合。 可以通过设置 PREDICTION_SMOOTHING 参数来控制混合的起点和更改率:

  • 如果将 PREDICTION_SMOOTHING 设置为 0,则模型仅使用 ARTXP。

  • 如果将 PREDICTION_SMOOTHING 设置为 1,则模型仅使用 ARIMA。

  • 如果将 PREDICTION_SMOOTHING 设置为介于 0 和 1 之间的值,则模型会将 ARTXP 算法作为预测步骤的指数递减函数进行加权。 同时,该模型还会将 ARIMA 算法作为 ARTXP 权重的 1 补充进行加权。 模型使用规范化和稳定常量来平滑曲线。

通常,如果预测最多 5 个时间切片,ARTXP 几乎始终是更好的选择。 但是,随着增加要预测的时间切片数,ARIMA 通常性能更好。

下图演示了 将PREDICTION_SMOOTHING 设置为默认值 0.5 时模型如何混合算法。 ARIMA 和 ARTXP 在开始时权重相同,但随着预测步骤数的增加,ARIMA 的权重变得更大。

默认曲线用于混合时序算法

相比之下,下图展示了算法在PREDICTION_SMOOTHING设置为0.2时的融合。 对于步骤 0,模型将 ARIMA 权重为 0.2,ARTXP 权重为 0.8。 此后,ARIMA 的权重呈指数增加,ARTXP 的权重呈指数级下降。

用于时序模型混合的衰减曲线

设置算法参数

下表描述了可用于Microsoft时序算法的参数。

参数 DESCRIPTION
自动检测周期性 指定一个介于 0 和 1 之间的数值,用于检测周期性。 默认值为 0.6。

如果该值接近 0,则仅针对强周期数据检测到周期性。

将此值设置为接近 1 有利于发现许多几乎是周期性的模式,以及周期提示的自动生成。

注意:处理许多周期提示可能会导致模型定型时间明显更长,但模型更准确。
复杂性惩罚 控制决策树的增长。 默认值为 0.1。

降低此值会增加拆分的可能性。 增加此值会降低拆分的可能性。

注意:此参数仅在某些版本的 SQL Server 中可用。
预测方法 指定要用于分析和预测的算法。 可能的值为 ARTXP、ARIMA 或 MIXED。 默认值为 MIXED。
HISTORIC_MODEL_COUNT 指定要生成的历史模型数。 默认值为 1。

注意:此参数仅在某些版本的 SQL Server 中可用。
历史模型差距 指定两个连续历史模型之间的时间滞后。 默认值是10。 该值表示一些时间单位,其中单位由模型定义。

例如,将此值设置为 g 会导致为按 g、2*g、3*g 等间隔被时间切片截断的数据生成历史模型。

注意:此参数仅在某些版本的 SQL Server 中可用。
不稳定性敏感度 控制预测方差超过特定阈值的点,之后 ARTXP 算法将抑制预测。 默认值为 1。

注意:此参数不适用于仅使用 ARIMA 的模型。

默认值 1 提供的行为与 SQL Server 2005 中的行为相同。 Analysis Services 会监视每个预测的规范化标准偏差。 一旦此值超过任何预测的阈值,时序算法就会返回 NULL 并停止预测过程。

值为 0 会停止不稳定检测。 这意味着,无论方差如何,都可以创建无限数量的预测。

注意:只能在 SQL Server Enterprise 中修改此参数。 在 SQL Server Standard 中,Analysis Services 仅使用默认值 1。
MAXIMUM_SERIES_VALUE 指定要用于预测的最大值。 此参数与 MINIMUM_SERIES_VALUE一起使用,以将预测限制为一些预期范围。 例如,可以指定任何一天的预测销售数量不应超过库存中的产品数量。

注意:此参数仅在某些版本的 SQL Server 中可用。
MINIMUM_SERIES_VALUE 指定可预测的最小值。 此参数与 MAXIMUM_SERIES_VALUE一起使用,以将预测限制为一些预期范围。 例如,可以指定预测的销售数量不应为负数。

注意:此参数仅在某些版本的 SQL Server 中可用。
MINIMUM_SUPPORT 指定在每个时序树中生成拆分所需的最小时间切片数。 默认值是10。
缺少值替换 指定如何填补历史数据的缺口。 默认情况下,不允许数据中的差距。 如果数据包含多个序列,则序列也不能有不规则的边缘。 也就是说,所有序列都应具有相同的起点和终点。 在对时序模型执行 PREDICTION JOIN 时,Analysis Services 还使用此参数的值来填补新数据中的空白。 下表列出了此参数的可能值:

无:默认值。 将缺失值替换为沿定型模型的曲线绘制的值。

上一个:重复上一个时间切片中的值。

平均值:使用在训练中采用的移动时间切片的平均值。

数值常量:使用指定的数字替换所有缺失值。
PERIODICITY_HINT 向算法提供有关数据的周期性的提示。 例如,如果销售额因年份而异,并且序列中的度量单位为月,则周期为 12。 此参数采用 {n [, n]} 的格式,其中 n 为任意正数。

括号 [] 中的 n 是可选的,可以根据需要重复。 例如,若要为每月提供的数据提供多个周期提示,可以输入 {12, 3, 1} 来检测年份、季度和月份的模式。 但是,周期性对模型质量有很强的影响。 如果给出的提示与实际周期不同,则结果可能会受到不利影响。

默认值为 {1}。

注意:大括号是必须的。 此外,此参数具有字符串数据类型。 因此,如果将此参数键入为数据挖掘扩展插件(DMX)语句的一部分,则必须将数字和大括号括在引号中。
PREDICTION_SMOOTHING 指定模型应如何混合以优化预测。 此参数仅在某些版本的 SQL Server 中可用。 可以键入介于 0 和 1 之间的任何值,也可以使用以下值之一:

0:指定预测仅使用 ARTXP。 预测针对较少的预测次数进行优化。

0.5:(默认值)指定在预测时应使用这两种算法,然后对结果进行混合。

1:指定预测仅使用 ARIMA。 预测功能已针对多种预测进行优化。



注意:使用 FORECAST_METHOD 参数控制训练。

建模标记

Microsoft时序算法支持以下建模标志。 创建挖掘结构或挖掘模型时,定义建模标志以指定在分析期间处理每个列中的值的方式。 有关详细信息,请参阅建模标志(数据挖掘)。

建模标志 DESCRIPTION
NOT NULL 指示该列不能包含 null。 如果 Analysis Services 在模型训练期间遇到 null,则会出现错误。

适用于数据挖掘结构列。
MODEL_EXISTENCE_ONLY 表示将列视为具有两种可能状态:缺失和存在。 null 是缺失值。

适用于挖掘模型列。

要求

时序模型必须包含一个关键时间列,该列包含唯一值、输入列和至少一个可预测列。

输入列和可预测列

Microsoft时序算法支持下表中列出的特定输入列内容类型、可预测列内容类型和建模标志。

内容类型
输入属性 连续、关键、关键时间和表
可预测属性 连续,表

注释

支持循环和有序内容类型,但算法将它们视为离散值,并且不执行特殊处理。

另请参阅

Microsoft时序算法时序模型查询示例时序模型内容(Analysis Services - 数据挖掘)