Microsoft 时序算法
更新日期: 2007 年 9 月 15 日
Microsoft 时序算法是 Microsoft SQL Server 2005 Analysis Services (SSAS) 提供的回归算法,用于创建数据挖掘模型以便对预测方案中的连续列(如产品销售额)进行预测。 其他 Microsoft 算法通过创建依赖于输入列的模型(如决策树模型)来预测可预测列,而时序模型的预测则仅依赖于算法在创建模型时从原始数据集派生的趋势。 以下关系图显示了一个典型的用于预测各个时间销售额的模型。
图中所示的模型由两部分组成:图形左侧的历史信息和图形右侧的预测信息。 历史数据表示算法用来创建模型的信息,而预测数据表示模型所做的预测。 历史数据和预测数据组合而形成的线称作一个“系列”**。 每个预测模型必须包含一个事例序列,事例序列是区分序列列中不同点的列。 例如,因为关系图中的数据显示了几个月中自行车的历史和预测销售额序列,因此日期列为事例序列。
Microsoft 时序算法的一个重要功能就是可以执行交叉预测。 也就是说,如果使用两个独立但相关的序列为该算法定型,就可以使用得到的模型根据其他序列的行为预测一个序列的结果。 例如,一个产品的实际销售额可能会影响另一个产品的预测销售额。
示例
Adventure Works Cycles 公司的管理层希望预测来年的自行车月销售额。 该公司尤其关注的是不同型号自行车的销售是否彼此相关,一种自行车型号的销售情况是否可用于预测另一种型号的销售情况。 通过对过去三年的历史数据使用 Microsoft 时序算法,该公司可以建立一个数据挖掘模型,用于预测未来的自行车销售情况。 此外,该公司还可以进行交叉预测,以了解各个自行车型号的销售趋势是否相关。
算法的原理
Microsoft 决策树算法通过使用自动回归决策树来为模型定型。 每个模型都包含一个 Key Time 列,该列定义了模型将定义的时间段。 该算法将过去的若干项目关联到要预测的每个当前项目。
有关 Microsoft 时序算法原理的详细说明,请参阅 Autoregressive Tree Models for Time-Series Analysis。
可以用两种方式定义 Microsoft 时序模型的输入数据。 为了解第一种方法,请考虑下表中的输入事例:
TimeID | Product | Sales | Volume |
---|---|---|---|
1/2001 |
A |
1000 |
600 |
2/2001 |
A |
1100 |
500 |
1/2001 |
B |
500 |
900 |
2/2001 |
B |
300 |
890 |
表中的 TimeID 列包含一个时间标识符,每一天有两个条目。 Product 列定义数据库中的产品。 Sales 列说明指定产品一天的毛利润,Volume 列说明仓库中存放的指定产品数量。 在本例中,模型将包含两个预测列:Sales 列和 Volume 列。
此外,按下表所示来定义时序模型的输入数据:
TimeID | A_Sales | A_Volume | B_Sales | B_Volume |
---|---|---|---|---|
1/2001 |
1000 |
600 |
500 |
900 |
2/2001 |
1100 |
500 |
300 |
890 |
在上表中,Sales 和 Volume 列分别被拆分成两列,每个列都用产品名称作前缀。 因此,TimeID 列中每天只有一个条目。 该模型将包含四个预测列:A_Sales、A_Volume、B_Sales 和 B_Volume。
尽管这两种定义输入数据的方法都会使模型中显示相同的信息,但是输入事例的格式将改变定义挖掘模型的方式。
使用算法
时序算法要求要预测的列必须是连续的。 每个模型只允许使用一个事例序列。
Microsoft 时序算法支持特定输入列内容类型、可预测列内容类型和建模标志,这些类型和标志如下表所列。
输入列内容类型 |
Continuous、Key、Key Time 和 Table |
可预测列内容类型 |
Continuous 和 Table |
建模标志 |
NOT NULL 和 REGRESSOR |
所有 Microsoft 算法均支持一些通用的函数。 但是,Microsoft 时序算法还额外支持下表所列的函数。
有关所有 Microsoft 算法都通用的函数列表,请参阅数据挖掘算法。 有关如何使用这些函数的详细信息,请参阅 数据挖掘扩展插件 (DMX) 函数参考。
Microsoft 时序算法不支持使用预测模型标记语言 (PMML) 创建挖掘模型。
Microsoft 时序算法支持多个参数,这些参数可影响生成的挖掘模型的性能和准确性。 下表对各参数进行了说明:
参数 | 说明 |
---|---|
MINIMUM_SUPPORT |
指定在每个时序树中生成一个拆分所需的最小时间段数。 默认值为 10。 |
COMPLEXITY_PENALTY |
控制决策树的增长。 减少该值将增加拆分的可能性。 增加该值将降低拆分的可能性。 默认值为 0.1。 |
PERIODICITY_HINT |
提供算法的有关数据周期的提示。 例如,如果销售额按年变化,且序列中的度量单位是月,则周期为 12。此参数采用 {n [, n]} 的格式,其中的 n 是任意正数。 方括号 [] 中的 n 是可选项,可以按需重复多次。 默认值为 {1}。 |
MISSING_VALUE_SUBSTITUTION |
指定用于填充历史数据空白的方法。 默认情况下,数据中不允许存在不规则的空白或参差不齐的边缘。 以下是可用来填充不规则空白或边缘的方法:使用以前的值、使用平均值或使用特定数值常量。 |
AUTO_DETECT_PERIODICITY |
指定一个介于 0 和 1 之间的数值,用于检测周期。 如果将此值设置为更接近于 1 的数,则允许查找许多接近周期的模式并允许自动生成周期提示。 处理大量的周期提示可能会导致模型定型时间明显加长,但是模型会更准确。 如果将此值设置为更接近于 0 的数,则只检测周期性强的数据的周期。 默认值为 0.6。 |
HISTORIC_MODEL_COUNT |
指定将要生成的历史模型的数量。 默认值为 1。 |
HISTORICAL_MODEL_GAP |
指定两个连续历史模型之间的时间间隔。 例如,如果将此值设置为 g,则以 g、2*g、3*g (依此类推)的时间间隔为被时间段截断的数据生成历史模型。 默认值为 10。 |
注意: |
---|
周期提示对模型质量很敏感。 如果给出的提示与实际周期不同,则会对结果造成不良影响。 |
更改历史记录
发布日期 | 历史记录 |
---|---|
2007 年 9 月 15 日 |
|
请参阅
概念
数据挖掘算法
数据挖掘向导
使用数据挖掘工具
使用 Microsoft 时序查看器查看挖掘模型