Microsoft 时序算法技术参考

Microsoft 时序算法包括两个独立的算法:

  • ARTXP 算法是在 SQL Server 2005 中引入的,针对预测序列中的下一个可能值进行了优化。

  • ARIMA 算法是在 SQL Server 2008 中添加的,用于提高长期预测的准确性。

默认情况下,Analysis Services 分别使用每个算法给模型定型,然后结合结果为数目可变的预测产生最佳预测。也可以基于您的数据和预测要求选择仅使用其中的一个算法。在 SQL Server 2008 Enterprise 中,还可以自定义用于在预测过程中控制算法混合的截止点。

本主题提供以下方面的附加信息:每个算法的实现原理,以及可以如何通过设置参数来微调分析和预测结果而自定义算法。

时序算法的实现

Microsoft 研究部门开发了 ARTXP 算法,并使其基于 Microsoft 决策树算法,决策树算法是用于表示周期性时序数据的自动回归树模型。ARTXP 算法将数目可变的过去项与要预测的每个当前项相关。名称 ARTXP 派生自以下事实,即 ART 算法(或者自动回归树方法)应用于多个未知的先前状态。有关 ARTXP 算法的详细说明,请参阅 Autoregressive Tree Models for Time-Series Analysis(时序分析的自动回归树模型)

ARIMA 算法用于长期预测。这是由 Box 和 Jenkins 开发的 ARIMA 算法的一个实现。ARIMA(自动回归集成变动平均值)是一种众所周知的方法,用于确定按时间顺序进行的观察中的依赖关系。它还支持倍乘季节性。ARIMA 算法使用自动回归和变动平均值术语。

虽然 ARTXP 算法支持交叉预测,但 ARIMA 算法不支持。因此,只有在使用混合算法或将模型配置为仅使用 ARTXP 时,交叉预测才可用。

自定义 Microsoft 时序算法

Microsoft 时序算法支持多个参数,这些参数会影响所生成挖掘模型的行为、性能和精度。

季节性检测

这两个算法都支持季节性检测或周期检测。Analysis Services 在定型之前使用快速傅立叶变换检测季节性。

若要得到最佳结果,可以通过设置算法参数来控制季节性检测。通过更改 AUTODETECT_SEASONALITY 的值,可以影响生成的时间段的可能数目。通过为 PERIODICITY_HINT 设置一个值或多个值,可以为算法提供有关已知重复周期的信息并提高检测精度。

注意注意

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

混合算法

默认情况下,Analysis Services 结合使用这两个算法,并且它们的权重相等。不过,在 SQL Server 2008 Enterprise 中,可以通过选择 MIXED 选项并设置参数来自定义结果混合,该参数针对短期预测或长期预测为结果加权。

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

若要控制算法选择,可以设置 FORECAST_METHOD 参数。默认情况下,FORECAST_METHOD 参数将设置为 MIXED,Analysis Services 使用这两个算法,并对其值加权以最大化每个算法的强度。但是,如果希望仅使用 ARTXP 算法,则可将 FORECAST_METHOD 设置为 ARTXP;而如果希望仅使用 ARIMA 算法,则可将其设置为 ARIMA。

在 SQL Server 2008 Enterprise 中,还可以自定义 Analysis Services 混合使用 ARIMA 和 ARTXP 算法组合的方式。可以通过设置 PREDICTION_SMOOTHING 参数控制混合的起点和变化速率。

  • 如果将 PREDICTION_SMOOTHING 设置为 0,则模型将变为纯 ARTXP。

  • 如果将 PREDICTION_SMOOTHING 设置为 1,则模型将变为纯 ARIMA。

  • 如果将 set 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 时序算法的参数。

参数

说明

AUTO_DETECT_PERIODICITY

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

如果将此值设置为比较接近于 0 的数,则只检测周期性强的数据的周期。

如果将此值设置为比较接近于 1 的数,则往往会发现许多接近周期的模式并倾向于自动生成周期提示。

注意注意
处理大量的周期提示可能会导致模型定型时间明显延长,不过模型会更精确。

COMPLEXITY_PENALTY

控制决策树的增长。默认值为 0.1。

减少该值将增大拆分的几率。增大该值将减小拆分的几率。

注意注意
此参数仅在 SQL Server Enterprise 中可用。

FORECAST_METHOD

指定要用于分析和预测的算法。可能值为 ARTXP、ARIMA 或 MIXED。默认值为 MIXED。

HISTORIC_MODEL_COUNT

指定将要生成的历史模型的数量。默认值为 1。

注意注意
此参数仅在 SQL Server Enterprise 中可用。

HISTORICAL_MODEL_GAP

指定两个连续历史模型之间的时间间隔。默认值为 10。该值表示时间单位数,其中单位由模型定义。

例如,如果将此值设置为 g,则将导致按 g、2*g、3*g(依此类推)的间隔为被时间段截断的数据生成历史模型。

注意注意
此参数仅在 SQL Server Enterprise 中可用。

INSTABILITY_SENSITIVITY

控制预测方差超过特定阈值以及 ARTXP 算法禁止预测的点。默认值为 1。

注意注意
此参数仅适用于 ARTXP,因此不适用于仅使用 ARIMA 算法创建的模型。如果应用于 MIXED 模型,此参数仅适用于该模型的 ARTXP 部分。

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

值 0 将停止不稳定的检测。这意味着无论方差为多少,都可以创建无限个预测。

注意注意
此参数只能在 SQL Server Enterprise 中进行修改。在 SQL Server Standard 中,Analysis Services 仅使用默认值 1。

MAXIMUM_SERIES_VALUE

指定要用于预测的最大值。此参数与 MINIMUM_SERIES_VALUE 一起用于将预测约束到某一预期范围。例如,可以指定任何一天的预测销售额决不应超过库存产品的数量。

注意注意
此参数仅在 SQL Server Enterprise 中可用。

MINIMUM_SERIES_VALUE

指定可以预测的最小值。此参数与 MAXIMUM_SERIES_VALUE 一起用于将预测约束到某一预期范围。例如,可以指定预测的销售额决不应为负数。

注意注意
此参数仅在 SQL Server Enterprise 中可用。

MINIMUM_SUPPORT

指定在每个时序树中生成拆分所需的最小时间段数。默认值为 10。

MISSING_VALUE_SUBSTITUTION

指定如何填补历史数据中的空白。默认情况下,不允许数据中存在空白。

下表将列出此参数的可能值:

值说明
Previous重复前一时间段中的值。
Mean使用定型时所用的时间段的变动平均值。
Numeric constant使用指定的数字来替换所有缺失值。
None用沿定型模型曲线绘制的值来替换缺失值。 这是默认值。

如果数据中包含多个序列,则序列也不能有参差不齐的边缘。也就是说,所有序列都应具有相同的起点和终点。

对时序模型执行 PREDICTION JOIN 时,Analysis Services 还使用此参数的值来填补新数据中的空白。

PERIODICITY_HINT

为算法提供关于数据周期的提示。例如,如果销售额按年度变化,且序列中的度量单位是月,则周期为 12。此参数采用 {n [, n]} 格式,其中 n 为任意正数。

方括号 [] 中的 n 是可选项,并且可以按需多次重复。例如,若要为按月提供的数据提供多个周期提示,则可以输入 {12, 3, 1} 来检测年度、季度和月的模式。但是,周期对模型质量有重大影响。如果给出的提示与实际周期不同,则会对结果造成不良影响。

默认值为 {1}。

注意注意
需要使用大括号。另外,此参数具有字符串数据类型。因此,如果在数据挖掘扩展插件 (DMX) 语句中键入此参数,则必须用引号将数字和大括号括起来。

PREDICTION_SMOOTHING

指定应如何混合模型以优化预测。可以键入 0 和 1 之间的任何值,也可以使用以下值之一:

注意注意
使用 FORECAST_METHOD 参数来控制定型。
值说明
0指定预测仅使用 ARTXP。针对较少的预测来优化预测。
1指定预测仅使用 ARIMA。针对多个预测来优化预测。
0.5(默认值)指定预测时两个算法都应使用并混合结果。
注意注意
此参数仅在 SQL Server Enterprise 中可用。

建模标志

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

建模标志

说明

NOT NULL

指示该列不能包含 Null。如果 Analysis Services 在模型定型过程中遇到 Null 值,则会导致错误。

适用于挖掘结构列。

MODEL_EXISTENCE_ONLY

表示该列将被视为具有两个可能状态:Missing 和 Existing。Null 表示缺失值。

适用于挖掘模型列。

要求

时序模型中必须包含一个含有唯一值的 Key Time 列、输入列以及至少一个可预测列。

输入列和可预测列

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

内容类型

输入属性

Continuous、Key、Key Time 和 Table

可预测属性

Continuous 和 Table

注意注意

支持 Cyclical 和 Ordered 内容类型,但算法会将它们视为离散值,不会进行特殊处理。