Microsoft时序算法提供回归算法,这些算法针对随时间推移的连续值(如产品销售)的预测进行了优化。 虽然其他Microsoft算法(如决策树)需要其他新信息列作为输入来预测趋势,但时序模型则不需要。 时序模型只能基于用于创建模型的原始数据集预测趋势。 还可以在进行预测时向模型添加新数据,并在趋势分析中自动合并新数据。
下图显示了一个典型的模型,用于预测一段时间内在四个不同的销售区域中的产品销售额。 关系图中显示的模型显示绘制为红色、黄色、紫色和蓝色线条的每个区域的销售额。 对于每个区域,该行分为两个部分:
历史信息显示在垂直线的左侧,并表示算法用于创建模型的数据。
预测信息显示在垂直线右侧,并表示模型所做出的预测。
源数据和预测数据的组合称为序列。
Microsoft时序算法的一个重要特征是它可以执行交叉预测。 如果使用两个单独的、但相关的序列来训练算法,则可以使用生成的模型根据另一个序列的行为来预测一个序列的结果。 例如,观察到的一个产品的销售额可能会影响另一个产品的预测销售额。 交叉预测还可用于创建可应用于多个系列的常规模型。 例如,特定区域的预测不稳定,因为该系列缺少高质量的数据。 可以针对所有四个区域的平均值训练常规模型,然后将模型应用于各个系列,为每个区域创建更稳定的预测。
示例:
Adventure Works Cycles 的管理团队希望预测明年的每月自行车销量。 该公司特别感兴趣的是,是否可以利用一种自行车型号的销量来预测另一种型号的销量。 通过对过去三年的历史数据使用Microsoft时序算法,公司可以生成预测未来自行车销售的数据挖掘模型。 此外,公司还可以执行交叉预测,以查看各个自行车型号的销售趋势是否相关。
每个季度,公司计划使用最近的销售数据更新模型,并将预测更新为最新趋势。 若要更正不准确或一致地更新销售数据的商店,他们将创建一个常规预测模型,并使用该模型为所有区域创建预测。
算法的工作原理
在 SQL Server 2005 中,Microsoft时序算法使用了单个算法 ARTXP。 ARTXP 算法针对短期预测进行了优化,因此预测了序列中的下一个可能值。 从 SQL Server 2008 开始,Microsoft时序算法同时使用 ARTXP 算法和第二种算法 ARIMA。 ARIMA 算法针对长期预测进行优化。 有关 ARTXP 和 ARIMA 算法实现的详细说明,请参阅 Microsoft时序算法技术参考。
默认情况下,Microsoft时序算法在分析模式和进行预测时会混合使用算法。 该算法针对同一数据训练两个单独的模型:一个模型使用 ARTXP 算法,一个模型使用 ARIMA 算法。 然后,该算法将这两个模型的结果混合在一起,以在可变时间切片数上生成最佳预测。 由于 ARTXP 最适合短期预测,因此在一系列预测的开头权重更高。 但是,随着您预测的时间切片进一步延伸到未来,ARIMA 会被赋予更大的权重。
还可以控制算法组合,以在时序中偏向短期或长期预测。 从 SQL Server 2008 Standard 开始,可以指定Microsoft时序算法使用以下设置之一:
仅使用 ARTXP 进行短期预测。
仅使用 ARIMA 进行长期预测。
使用两种算法的默认混合。
从 SQL Server 2008 Enterprise 开始,可以自定义Microsoft时序算法如何混合模型进行预测。 使用混合模型时,Microsoft时序算法采用以下方式混合这两种算法:
仅 ARTXP 始终用于进行前几个预测。
在完成最初的几个预测之后,将使用 ARIMA 和 ARTXP 的组合。
随着预测步骤数的增加,预测更依赖于 ARIMA,直到不再使用 ARTXP。
你可以控制混合点、ARTXP 权重降低的速率,并通过设置 PREDICTION_SMOOTHING 参数来增加 ARIMA 的权重。
这两种算法都可以检测多个级别的数据季节性。 例如,数据可能包含嵌套在每年周期内的每月周期。 若要检测这些季节性周期,可以提供周期性提示或指定算法应自动检测周期性。
除了周期性之外,还有几个其他参数可以控制Microsoft时序算法的行为,当它检测到周期性、进行预测或分析事例时。 有关如何设置算法参数的信息,请参阅 Microsoft时序算法技术参考。
时序模型所需的数据
准备用于训练任何数据挖掘模型的数据时,请确保了解特定模型的要求以及数据的使用方式。
每个预测模型必须包含一个案例序列,该序列是指定发生变化的时间片段或其他序列的列。 例如,上图中的数据显示了几个多月期间的历史和预测的自行车销量数据系列。 对于此模型,每个区域都是一个序列,日期列包含时序,这也是事例序列。 在其他模型中,事例系列可以是文本字段或某些标识符,例如客户 ID 或事务 ID。 但是,时序模型必须始终对其事例序列使用日期、时间或其他一些唯一的数值。
时序模型的要求如下:
单个键时间列 每个模型必须包含一个数字或日期列,该列用作事例序列,该列定义模型将使用的时间切片。 键时间列的数据类型可以是日期时间数据类型,也可以是数值数据类型。 但是,该列必须包含连续值,并且每个系列的值必须是唯一的。 时序模型的事例序列不能存储在两列中,例如 Year 列和月列。
可预测列 每个模型必须至少包含一个可预测列,算法将围绕该列生成时序模型。 可预测列的数据类型必须具有连续值。 例如,可以预测数值属性(如收入、销售或温度)随时间的变化。 但是,不能使用包含离散值的列(例如购买状态或教育级别)作为可预测列。
可选序列键列 每个模型可以有一个附加的键列,其中包含用于标识序列的唯一值。 可选序列键列必须包含唯一值。 例如,单个模型可以包含许多产品型号的销售数据,只要在每个时间段内每个产品名称只有一条记录。
可以通过多种不同的方式为Microsoft时序模型定义输入数据。 但是,由于输入事例的格式会影响挖掘模型的定义,因此必须考虑业务需求并相应地准备数据。 以下两个示例说明了输入数据如何影响模型。 在这两个示例中,已完成的挖掘模型包含四个不同的序列的模式:
产品 A 的销售
产品 B 的销售
产品 A 的容量
产品 B 的数量
在这两个示例中,都可以预测每个产品的新的未来销售额和销量。 无法预测产品或时间的新值。
示例 1:以列值表示的时序数据集
此示例使用下表的输入事例:
TimeID | 产品 | 销售额 | 音量 |
---|---|---|---|
1/2001 | 一个 | 1000 | 600 |
2/2001 | 一个 | 1100 | 500 |
1/2001 | B | 500 | 900 |
2/2001 | B | 300 | 890 |
表中的 TimeID 列包含一个时间标识符,并且每天有两个条目。 TimeID 列成为样本序列。 因此,将此列指定为时序模型的关键时间列。
Product 列定义数据库中的产品。 此列包含产品系列。 因此,将此列指定为时序模型的第二个键。
“销售”列描述指定产品在一天内的毛利润,“数量”列描述仓库中剩余的指定产品的数量。 这两列包含用于训练模型的数据。 Sales 和 Volume 都可以是 Product 列中每个系列的可预测属性。
示例 2:每个序列位于单独列的时序数据集
尽管此示例使用与第一个示例基本相同的输入数据,但输入数据的结构不同,如下表所示:
TimeID | A_Sales | A_卷 | B_Sales | B_Volume |
---|---|---|---|---|
1/2001 | 1000 | 600 | 500 | 900 |
2/2001 | 1100 | 500 | 300 | 890 |
在此表中,TimeID 列仍包含时序模型的事例序列,你将其指定为关键时间列。 但是,以前的 Sales 和 Volume 列现在拆分为两列,每个列前面都有产品名称。 因此,TimeID 列中每天只存在一个条目。 这会创建一个时序模型,其中包含四个可预测列:A_Sales、A_Volume、B_Sales和B_Volume。
此外,由于已将产品分成不同的列,因此无需指定其他系列键列。 模型中的所有列都是事例系列列或可预测列。
查看时序模型
训练模型后,结果将存储为一组模式,你可以浏览或使用这些模式进行预测。
若要浏览模型,可以使用 时序查看器。 查看器包括一个图表,该图表显示将来的预测,以及数据的定期结构的树视图。
若要详细了解如何计算预测,可以在 Microsoft泛型内容树查看器中浏览模型。 为模型存储的内容包括详细信息,例如 ARIMA 和 ARTXP 算法检测到的定期结构、用于混合算法的公式和其他统计信息。
创建时序预测
默认情况下,查看时序模型时,Analysis Services 会显示该系列的五个预测。 但是,可以创建查询来返回可变数量的预测,并且可以为预测添加额外的列来返回描述性统计信息。 有关如何针对时序模型创建查询的信息,请参阅 时序模型查询示例。 有关如何使用数据挖掘扩展插件(DMX)进行时序预测的示例,请参阅 PredictTimeSeries (DMX)。
使用Microsoft时序算法进行预测时,应考虑以下附加限制和要求:
仅当使用混合模型或基于 ARTXP 算法的模型时,交叉预测才可用。 如果仅基于 ARIMA 算法使用模型,则不可能进行交叉预测。
时序模型根据服务器使用的 64 位操作系统可以做出不同的预测,有时会有显著差异。 这些差异是由于基于 Itanium 的系统表示和处理浮点算术的数字的方式而发生,这与基于 x64 的系统执行这些计算的方式不同。 由于预测结果可能特定于操作系统,我们建议您在生产中使用的同一操作系统上评估模型。
注解
不支持使用预测模型标记语言(PMML)创建挖掘模型。
支持使用 OLAP 挖掘模型。
不支持创建数据挖掘维度。
支持钻取。
另请参阅
数据挖掘算法 (Analysis Services - 数据挖掘)
使用Microsoft时序查看器浏览模型
Microsoft时序算法技术参考
时序模型查询示例
时间序列模型的模型内容挖掘(Analysis Services - 数据挖掘)