使用平均预测模型进行预测(数据挖掘中级教程)

在本课的前一个任务中,您使用预测查询生成器创建了一个查询,该查询可生成预测模型的默认预测。在本任务中,您将学习如何创建一个将全球范围内销售额模型应用于某个单独区域的预测查询。

在时序预测中使用替换数据

在 SQL Server 2008 中,PredictTimeSeries (DMX) 函数有两个参数,分别为 EXTEND_MODEL_CASES 和 REPLACE_MODEL_CASES,您可以使用这两个参数来自定义时序预测。

  • 使用 EXTEND_MODEL_CASES,可以向现有模型添加数据,从而基于新数据作出预测。

  • 使用 REPLACE_MODEL_CASES,可以使用另一序列中的数据替换用于创建模型的数据序列。

在此方案中,您将使用 REPLACE_MODEL_CASES。但是,必须首先设置一个仅包含替换数据的数据源视图。替换数据表示每个单独序列的数据。然后,将创建一个预测查询,将通用模型应用于替换数据。

创建包含替换数据的数据源视图

  1. 解决方案资源管理器中,右键单击**“数据源视图”并选择“新建数据源视图”**。

  2. 在数据源视图向导中进行以下选择:

    数据源Adventure Works DW2008

    选择表和视图:不选择任何表

    名称:T1000 Pacific Region

  3. 单击**“完成”**。

  4. 右键单击 T1000 Pacific Region.dsv 的空设计图面并选择**“新建命名查询”**。

    **“创建命名查询”**对话框随即打开。重新键入名称,然后添加下面的说明:

    名称:T1000 Pacific Region

    说明:Filter vTimeSeries by region and model

  5. 在文本窗格中,键入下面的查询:

    SELECT ReportingDate, ModelRegion, Quantity, Amount
    FROM dbo.vTimeSeries
    WHERE (ModelRegion = N'T1000 Pacific')
    
    注意注意

    您也可以使用查询生成器生成该查询,但键入查询文本会更快一些。此外,键入查询文本后,可以单击另一个窗格来查看是如何分析查询文本的以及是如何从支持表生成查询的。您可能还需要复制该查询文本并将其保存为文本文件,以便其他数据序列可以重复使用它。

  6. 单击**“确定”**。

  7. 在数据源视图设计图面上,右键单击 T1000 Pacific 并选择**“浏览数据”**,以验证是否已正确筛选数据。

现在,您将照常生成一个时序预测查询,但需要添加 REPLACE_MODEL_CASES 参数,以指定该预测所基于的数据序列应替换为您提供的新数据。您还必须指定挖掘模型与输入表之间的映射。

生成预测查询并提供替换数据

  1. 如果模型尚未打开,请双击 AllRegions 结构,并在数据挖掘设计器中单击“挖掘模型预测”选项卡。

  2. 在**“挖掘模型”窗格中,模型 AllRegions 应该已被选定;否则,请单击“选择模型”**,然后选择模型 AllRegions。

  3. 在**“选择输入表”窗格中,单击“选择事例表”**。

  4. 在**“选择表”对话框中,将数据源更改为 T1000 Pacific Region,然后单击“确定”**。

    创建的数据源视图随即显示为一个包含列的表。某些列可能已经映射到挖掘模型列。

  5. 右键单击挖掘模型与输入数据之间的联接线,并选择**“修改连接”**。

  6. 在**“修改映射”**对话框中,验证挖掘模型中的 ReportingDate 列是否已映射到输入数据中的 ReportingDate 列。

  7. 在**“修改映射”对话框中,在 AvgQty 所在行的“表列”下方单击并选择 T1000 Pacific.Quantity。单击“确定”**。

    此步骤将通用模型中的聚合数量列映射到替换数据序列中的数量列。

  8. 在网格中单击第一个空行,在**“源”下方选择 AllRegions。对于“字段”,请选择 Region。对于“别名”**,请键入 Model Used。

    此步骤会向结果中添加一个列,以帮助您记住该预测来自于通用模型。

  9. 单击一个新的空行,然后在**“源”下方选择“自定义表达式”。对于“别名”,请键入 ModelRegion。在“条件/参数”**中,键入 'T1000 Pacific'。

    此步骤会向结果中添加一个标签,以帮助您记住该预测是针对的哪些序列。

  10. 单击一个新的空行,然后在**“源”下方选择“预测函数”。对于“字段”,请选择 PredictTimeSeries。对于“别名”**,请键入 Predicted Values。

  11. 从**“挖掘模型”窗格中将字段 AvgQty 拖放到“条件/参数”**列中。

  12. 在**“条件/参数”**框中,在该字段名称的后面键入下面的文本:,5, REPLACE_MODEL_CASES

    **“条件/参数”**文本框中的完整文本应该如下所示:[AllRegions].[AvgQty],5,REPLACE_MODEL_CASES

  13. 单击**“结果”**。

查看结果

预测查询返回的结果大致如下:

Model Used

ModelRegion

Predicted Quantity

All Regions

T-1000 Pacific

$TIMEAvg Qty
7/25/2004 12:00:00 AM68
8/25/2004 12:00:00 AM52
9/25/2004 12:00:00 AM48
10/25/2004 12:00:00 AM56
11/25/2004 12:00:00 AM44

若要将通用模型应用于其他数据序列,如北美地区的 T1000 产品型号,则必须为每个序列创建不同的查询。但是,您可以编辑所创建的 DMX 语句并根据不同情况筛选输入,而无需执行生成数据源视图的整个过程。例如,下面的 DMX 语句表示您刚创建的查询:

SELECT
  ([All Regions].[Region]) as [Model Used],
  ( 'T-1000 Pacific') as [ModelRegion],
  (PredictTimeSeries([All Regions].[Avg Qty],5, REPLACE_MODEL_CASES)) as [Predicted Quantity]
FROM
  [All Regions]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW2008],
    'SELECT
      [ReportingDate]
    FROM
      (SELECT        ReportingDate, ModelRegion, Quantity, Amount
FROM            dbo.vTimeSeries
WHERE        (ModelRegion = N''T1000 Pacific'')) as [T1000 Pacific]
    ') AS t
ON
  [All Regions].[Reporting Date] = t.[ReportingDate] AND
   [All Regions].[Avg Qty] = t.[Quantity]

若要将此查询应用于其他模型,只需编辑查询语句,替换应用于每个结果的筛选条件和标签。例如,如果通过将“Pacific”替换为“North America”来更改筛选条件和列标签,您将基于通用模型中的模式得到 T1000 产品在北美洲的预测。

Model Used

ModelRegion

Predicted Quantity

All Regions

T-1000 North America

$TIMEAvg Qty
7/25/2004 12:00:00 AM103
8/25/2004 12:00:00 AM84
9/25/2004 12:00:00 AM79
10/25/2004 12:00:00 AM85
11/25/2004 12:00:00 AM68