时序模型查询示例

针对数据挖掘模型创建查询时,可以创建内容查询,该查询提供有关分析中发现的模式的详细信息,也可以创建预测查询,该查询使用模型中的模式对新数据进行预测。 例如,时序模型的内容查询可能会提供有关检测到的周期性结构的其他详细信息,而预测查询可能会提供接下来 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>'  

部分结果:

挖矿参数
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 模型销售数量的 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 欧洲:数量(截距) 15.24....
ARIMA (2,0,7)x(1,0,2)(12) R250 欧洲:数量(周期性) 1
ARIMA (2,0,7)x(1,0,2)(12) R250 欧洲:数量(周期性) 12

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

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

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

以下 DMX 语句检索 ARTxp 树的一部分信息,该树表示欧洲 R250 模型的销售额。

注释

嵌套表列(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 开始,可以将新数据添加到时序模型,并自动将新数据合并到模型中。 可通过以下两种方式之一向时序挖掘模型添加新数据:

  • 使用 a PREDICTION JOIN 将外部源中的数据联接到训练数据。

  • 使用单例预测查询逐一提供数据片段。 有关如何创建单一实例预测查询的信息,请参阅 数据挖掘查询接口

了解替换和扩展操作的行为

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

  • 扩展: 扩展数据系列时,Analysis Services 会在现有训练数据末尾添加新数据。 训练案例的数量也会增加。

    扩展模型事例对于使用新数据持续更新模型非常有用。 例如,如果要使训练集随着时间的推移而增长,只需扩展模型。

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

  • 取代: 替换数据系列中的数据时,Analysis Services 会保留训练的模型,但使用新数据值替换部分或全部现有训练事例。 因此,训练数据的大小永远不会改变,但事例本身会不断替换为较新的数据。 如果提供足够的新数据,则可以将训练数据替换为全新的系列。

    如果要在一组事例上训练模型,然后将该模型应用于不同的数据系列,则替换模型事例非常有用。

    若要替换数据,请在时序模型上创建一个 PREDICTION JOIN 数据,指定新数据的源,并使用 REPLACE_MODEL_CASES 参数。

注释

添加新数据时,无法进行历史预测。

无论是扩展还是替换训练数据,预测始终从结束原始训练集的时间戳开始。 换而言之,如果新数据包含 n 个时间切片,并且你请求对时间步骤 1 到 n 的预测,则预测将与新数据相同,并且不会获得任何新的预测。

若要获取不与新数据重叠的时间段的新预测,必须在时间切片 n+1 开始预测,或确保请求其他时间切片。

例如,假设现有模型具有六个月的数据。 你希望通过添加过去三个月的销售数据来扩展此模型。 同时,你想要预测未来三个月。 若要在添加新数据时仅获取新预测,请将起点指定为时间切片 4,并将结束点指定为时间切片 7。 还可以请求总共六个预测,但前三个预测的时间切片将与刚添加的新数据重叠。

有关使用REPLACE_MODEL_CASESEXTEND_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_CASESEXTEND_MODEL_CASES的查询示例及其语法的详细信息,请参阅 PredictTimeSeries(DMX)

时序模型中缺少值替换

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

预测函数列表

所有Microsoft算法都支持一组常见的函数。 但是,Microsoft时序算法支持下表中列出的其他函数。

预测函数 用法
滞后时间(DMX) 返回当前事例的日期与训练集的最后一个日期之间的多个时间切片。

此函数的典型用途是识别最近的训练事例,以便检索有关事例的详细数据。
PredictNodeId (DMX) 返回指定可预测列的节点 ID。

此函数的典型用途是标识生成特定预测值的节点,以便可以查看与节点关联的事例,或检索公式和其他详细信息。
PredictStdev (DMX) 返回指定可预测列中预测的标准偏差。

此函数替换了用于时序模型不支持的参数 INCLUDE_STATISTICS。
PredictVariance (DMX) 返回指定可预测列的预测的方差。

此函数替换了INCLUDE_STATISTICS参数,该参数不支持用于时序模型。
PredictTimeSeries (DMX) 返回时序的预测历史值或未来的预测值。

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

有关所有Microsoft算法通用的函数的列表,请参阅“常规预测函数”(DMX)。 有关特定函数的语法,请参阅 数据挖掘扩展插件(DMX)函数参考

另请参阅

数据挖掘查询
Microsoft时序算法
Microsoft时序算法技术参考
时间序列模型的模型内容挖掘(Analysis Services - 数据挖掘)