查询时序模型(Analysis Services - 数据挖掘)

在创建针对数据挖掘模型的查询时,您既可以创建内容查询,也可创建预测查询;内容查询提供有关分析过程中发现的模式的详细信息,而预测查询则使用模型中的模式来对新数据进行预测。例如,时序模型的内容查询可能提供有关检测到的周期性结构的其他详细信息,而预测查询可能给出接下来 5-10 个时间段的预测。也可以使用查询来检索有关模型的元数据。

本节讲述如何为基于 Microsoft 时序算法的模型创建这两种查询。

内容查询

检索模型的周期提示

检索 ARIMA 模型的公式

检索 ARTxp 模型的公式

预测查询

了解何时替换和何时扩展时序数据

使用 EXTEND_MODEL_CASES 进行预测

使用 REPLACE_MODEL_CASES 进行预测

时序模型中的缺失值替代

获取有关时序模型的信息

模型内容查询可以提供有关模型的基本信息,例如创建模型时使用的参数、上次处理模型的时间。以下示例说明了使用数据挖掘架构行集查询模型内容的基本语法。

示例查询 1:检索模型的周期提示

通过查询 ARIMA 树或 ARTXP 树可以检索在时序内找到的周期。但是,已完成的模型中的周期可能与创建模型时指定为提示的周期不同。若要检索创建模型时作为参数提供的提示,可以使用以下 DMX 语句来查询挖掘模型内容架构行集:

SELECT MINING_PARAMETERS 
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = '<model name>'

部分结果:

MINING_PARAMETERS

COMPLEXITY_PENALTY=0.1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},….

默认周期提示为 {1},将出现在所有模型中;此示例模型是使用可能不在最终模型中出现的附加提示创建的。

注意注意

此处已将结果截断以提高可读性。

返回页首

示例查询 2:检索 ARIMA 模型的公式

通过查询单个树中的任何节点,可以检索 ARIMA 模型的公式。请记住,ARIMA 模型中的每个树都表示不同的周期,如果有多个数据序列,则每个数据序列都将有自己的周期树集。因此,若要检索特定数据序列的公式,必须先标识树。

例如,TA 前缀表示该节点是 ARIMA 树的一部分,而 TS 前缀用于 ARTXP 树。通过查询 NODE_TYPE 值为 27 的节点的模型内容可以找到所有的 ARIMA 根树。也可以使用 ATTRIBUTE_NAME 的值找到特定数据序列的 ARIMA 根节点。该查询示例找到表示 R250 型号在 Europe 地区销售数量的 ARIMA 节点。

SELECT NODE_UNIQUE_NAME
FROM Forecasting.CONTENT
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"
AND NODE_TYPE = 27

通过使用该节点 ID,可以检索关于该树的 ARIMA 公式的详细信息。下面的 DMX 语句检索该数据序列的 ARIMA 公式的缩写形式。该语句还从嵌套表 NODE_DISTRIBUTION 中检索截获。在此示例中,通过引用该节点的唯一 ID TA00000007 获取公式。但是,您需要使用不同的节点 ID,这样您可能会从模型中获得稍有不同的结果。

SELECT FLATTENED NODE_CAPTION as [Short equation], 
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE 
FROM NODE_DISTRIBUTION) as t
FROM Forecasting.CONTENT
WHERE NODE_NAME = 'TA00000007'

示例结果:

短公式

t.ATTRIBUTE_NAME

t.ATTRIBUTE_VALUE

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Intercept)

15.24….

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Periodicity)

1

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Periodicity)

12

有关如何解释此信息的详细信息,请参阅时序模型的挖掘模型内容(Analysis Services - 数据挖掘)

返回页首

示例查询 3:检索 ARTXP 模型的公式

对于 ARTxp 模型,不同的信息存储在树的每个级别。有关 ARTxp 模型的结构以及如何解释公式中的信息的详细信息,请参阅时序模型的挖掘模型内容(Analysis Services - 数据挖掘)

下面的 DMX 语句检索部分 ARTxp 树的信息,表示 R250 型号在 Europe 的销售数量。

注意注意

必须将嵌套表列的名称 VARIANCE 括在括号中,以便将它与同名的保留关键字区分开来。由于嵌套表列 PROBABILITY 和 SUPPORT 在大多数情况下为空,因此这两列不包括在内。

SELECT NODE_CAPTION as [Split information], 
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,
   [VARIANCE]
   FROM NODE_DISTRIBUTION) AS t
FROM Forecasting.CONTENT
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'
AND NODE_TYPE = 15

有关如何解释此信息的详细信息,请参阅时序模型的挖掘模型内容(Analysis Services - 数据挖掘)

返回页首

创建针对时序模型的预测

从 SQL Server 2008 Enterprise 开始,可以向时序模型添加新数据并自动将新数据合并到模型中。您可以通过下列两种方式之一向时序挖掘模型添加新数据:

  • 使用 PREDICTION JOIN 将外部源中的数据联接到定型数据。

  • 使用单独预测查询每次向数据提供一个切片。有关如何创建单独预测查询的信息,请参阅创建 DMX 预测查询

了解何时替换和何时扩展时序数据

向时序模型添加新数据时,可以指定是否扩展或替换定型数据:

  • 如果扩展该数据,Analysis Services 会将新数据添加到现有定型数据的末尾。定型事例的数量会增加。如果需要连续使用新数据更新模型,扩展模型事例很有用。例如,如果您想要使定型集随着时间增长,则只需扩展该模型。

    若要扩展数据,可以在时序模型上创建一个 PREDICTION JOIN,指定新数据源,然后使用 EXTEND_MODEL_CASES 参数。

  • 如果要替换数据,Analysis Services 将保留定型模型,但使用新数据替换全部或部分现有定型事例。因此,定型数据的大小永远不会发生变化,但事例本身却可以使用更新的数据不断进行替换。如果您提供了足够的新数据,则可以使用全新的序列替换定型数据。

    如果您想对一组事例的某个模型定型,然后将该模型应用到不同的数据序列,则替换模型事例也很有用。若要替换数据,可以在时序模型上创建一个 PREDICTION JOIN,指定新数据源,然后使用 REPLACE_MODEL_CASES 参数。

注意注意

添加新数据时不能进行历史预测。

无论您是扩展还是替换定型数据,预测始终发生在结束原始定型集的时间戳处。换言之,如果您的新数据包含 n 个时间段,并且您请求对时间步长 1 至 n 进行预测,则预测将与新数据的时间段一致。若要获取对数据未覆盖的时间段的新预测,您必须从新数据序列之后的时间段 n+1 处开始预测,或者确保您请求了其他的时间段。

例如,假定现有模型具有六个月积累的数据。您想通过添加最近三个月的销售数字来扩展该模型。同时,您还想对接下来三个月进行预测。添加新数据时如果只想获得新的预测,则将起点指定为时间段 4,将终点指定为时间段 7。您可能还要请求全部六个预测,但是,前三个预测的时间段会与刚添加的新数据重叠。

有关使用 REPLACE_MODEL_CASES 和 EXTEND_MODEL_CASES 的语法的查询示例和详细信息,请参阅 PredictTimeSeries (DMX)

返回页首

使用 EXTEND_MODEL_CASES 进行预测

根据您是要扩展还是替换模型事例,预测行为会有所不同。如果要扩展模型,新数据会附加到序列的末尾,并且定型集的大小会增加。但是,用于预测查询的时间段始终从原始序列的末尾开始。因此,如果您要添加三个新数据点并请求六个预测,返回的前三个预测将会与新数据重叠。在这种情况下,Analysis Services 会返回实际的新数据点,而不是进行预测,直到所有新数据点用完为止。然后,Analysis Services 会根据组合序列进行预测。

通过这种行为,您可以添加新数据,然后在预测图表中显示实际的销售数字,而不是查看预测。

例如,若要添加三个新数据点并进行三个新预测,您需要执行下列操作:

  • 在时序模型上创建一个 PREDICTION JOIN,然后指定三个月新数据的来源。

  • 请求六个时间段的预测。为此,请指定 6 个时间段,其中,起点为时间段 1,终点为时间段 7。这仅适用于 EXTEND_MODEL_CASES。

  • 若要仅获取新预测,请将起点指定为 4,终点指定为 7。

  • 您必须使用参数 EXTEND_MODEL_CASES。

    将返回前三个时间段的实际销售数字,并返回接下来三个时间段的基于扩展模型的预测。

返回页首

使用 REPLACE_MODEL_CASES 进行预测

替换模型中的事例时,模型的大小保持不变,但是 Analysis Services 将替换模型中的各个事例。这对于交叉预测以及需要让定型数据集的大小保持一致的情形很有用。

例如,您的一个商店的销售数据不足。您可以对位于特定地区的所有商店的销售量计算平均值,然后定型一个模型,以此来创建一个常规模型。然后,为了对销售数据不足的商店进行预测,可以仅为该商店创建一个有关新销售数据的 PREDICTION JOIN。在进行此操作时,Analysis Services 会保留从地区模型中派生的模式,而使用各个商店的数据替换现有的定型事例。最后,您的预测值将更为接近各个商店的趋势线。

使用 REPLACE_MODEL_CASES 参数时,Analysis Services 会连续将新事例添加到事例集的末尾,并从事例集的开头删除相应数量的事例。如果您要添加的新数据比原始定型集中的数据多,Analysis Services 将丢弃最早的数据。如果您提供了足够的新值,则预测可以基于全新的数据。

例如,假如您已经对包含 1000 行的事例数据集定型了自己的模型。然后您添加了 100 行新数据。Analysis Services 会从定型集中删除前 100 行,并向该定型集的末尾添加 100 行新数据,总和仍然是 1000 行。如果您添加了 1100 行新数据,则只使用最新的 1000 行。

以下是另一个示例。若要添加新的三个月积累的数据并进行三个新预测,您需要执行下列操作:

  • 在时序模型上创建 PREDICTION JOIN,并使用 REPLACE_MODEL_CASE 参数。

  • 指定三个月新数据的来源。该数据可能来自与原始定型数据完全不同的来源。

  • 请求六个时间段的预测。为此,请指定 6 个时间段,或者将起点指定为时间段 1,终点指定为时间段 7。

    注意注意

    与 EXTEND_MODEL_CASES 不同,您不能返回作为输入数据添加的相同值。返回的全部六个值都是基于更新模型的预测,其中包括旧数据和新数据。

    注意注意

    对于 REPLACE_MODEL_CASES,从时间戳 1 开始获取基于新数据的新预测,这会替换旧的定型数据。

有关使用 REPLACE_MODEL_CASES 和 EXTEND_MODEL_CASES 的语法的查询示例和详细信息,请参阅 PredictTimeSeries (DMX)

返回页首

时序模型中的缺失值替代

在通过 PREDICTION JOIN 语句向时序模型添加新数据时,新数据集不能有任何缺失值。如果有任何序列不完整,则该模型必须使用 Null、数值平均值、特定数值平均值或预测值来替换缺失的值。如果指定了 EXTEND_MODEL_CASES,Analysis Services 会将缺失值替换为基于原始模型的预测。如果使用 REPLACE_MODEL_CASES,则 Analysis Services 会将缺失的值替换为您在 MISSING_VALUE_SUBSTITUTION 参数中指定的值。

预测函数的列表

所有 Microsoft 算法均支持一组通用的函数。但 Microsoft 时序算法支持下表中列出的其他函数。

Lag

返回当前事例的日期与定型集的最近日期之间的若干时间段。

该函数的一个典型用途是标识最近的定型事例,以使您可以检索有关这些事例的详细数据。

PredictNodeId

返回指定的可预测列的节点 ID。

该函数的一个典型用途是标识生成特定预测值的节点,以使您可以查看与该节点关联的事例、公式以及其他详细信息。

PredictStdev (DMX)

返回指定的可预测列中预测的标准偏差。

该函数取代时序模型不支持的 INCLUDE_STATISTICS 参数。

PredictVariance (DMX)

返回指定可预测列的预测方差。

该函数取代时序模型不支持的 INCLUDE_STATISTICS 参数。

PredictTimeSeries (DMX)

返回时序数据的历史预测值或未来预测值。

您还可以通过使用常规预测函数 Predict (DMX) 来查询时序模型。

有关对所有 Microsoft 算法都通用的函数列表,请参阅将函数映射到查询类型 (DMX)。有关特定函数的语法,请参阅 数据挖掘扩展插件 (DMX) 函数参考

返回页首