在此任务中,将基于全球销售数据生成一个新模型。 然后,你将创建一个预测查询,该查询将全球销售模型应用于单个区域之一。
生成常规模型
请记住,对原始挖掘模型结果的分析揭示了区域与生产线之间的巨大差异。 例如,M200 型号在北美的销售额非常强劲,而 T1000 型号的销售表现不佳。 但是,分析很复杂,因为某些系列没有太多数据,或者数据从不同的时间点开始。 某些数据也缺失。
              
              
            
为了解决某些数据质量问题,你决定合并全球销售中的数据,并使用该一组常规销售趋势来构建一个模型,该模型可以应用于预测任何区域中的未来销售额。
创建预测时,将使用通过对全球销售数据进行训练生成的模式,但将历史数据点替换为每个区域的销售数据。 这样,将保留趋势的形状,但预测值与每个区域和模型的历史销售数字保持一致。
使用时序模型执行交叉预测
使用一个系列中的数据来预测另一个序列中的趋势的过程称为交叉预测。 可以在许多方案中使用交叉预测:例如,你可能会决定电视销售是总体经济活动的良好预测因素,并将训练的电视销售模型应用于一般经济数据。
在 SQL Server 数据挖掘中,通过在函数 PredictTimeSeries (DMX) 的参数中使用 REPLACE_MODEL_CASES 参数来执行交叉预测。
在下一个任务中,你将了解如何使用REPLACE_MODEL_CASES。 你将使用合并的世界销售数据生成模型,然后创建一个预测查询,将常规模型映射到替换数据。
假设你熟悉现在如何生成数据挖掘模型,因此已简化生成模型的说明。
使用聚合数据生成挖掘结构和挖掘模型
在 解决方案资源管理器中,右键单击 “挖掘结构”,然后选择“ 新建挖掘结构 ”以启动数据挖掘向导。
在数据挖掘向导中,进行以下选择:
算法:Microsoft时序
使用前面在本高级课程中生成的数据源作为模型的源。 请参阅高级时序预测(中间数据挖掘教程)。
数据源视图:
AllRegions选择以下列作为系列键和时间键:
关键时间:报告日期
键:区域
为以下列选择以下
Predict列Input:SumQty
SumAmt
AvgAmt
AvgQty
对于 挖掘结构名称,请键入:
All Regions对于 挖掘模型名称,请键入:
All Regions
处理新结构和新模型。
生成预测查询并映射替换数据
如果模型尚未打开,请双击 AllRegions 结构,然后在数据挖掘设计器中单击 “挖掘模型预测 ”选项卡。
在 “挖掘模型 ”窗格中,应已选择模型 AllRegions。 如果未选择,请单击 “选择模型”,然后选择模型“AllRegions”。
在 “选择输入表” 窗格中,单击“ 选择事例表”。
在 “选择表 ”对话框中,将数据源更改为 T1000 Pacific Region,然后单击“ 确定”。
右键单击挖掘模型与输入数据之间的联接线,然后选择“ 修改连接”。 将数据源视图中的数据映射到模型,如下所示:
验证挖掘模型中的 ReportingDate 列是否映射到输入数据中的 ReportingDate 列。
在“ 修改映射 ”对话框中,在模型列 AvgQty 的行中,单击“ 表列 ”下,然后选择“T1000 Pacific.Quantity”。 单击 “确定” 。
此步骤将您在模型中创建的用于预测平均数量的列映射到 T1000 系列的实际销售量数据。
不要将模型中的列区域映射到任何输入列。
由于模型聚合了所有序列的数据,因此无法匹配序列值(如 T1000 Pacific),并且当预测查询运行时引发错误。
现在,你将生成预测查询。
首先,将列添加到结果中,该列将输出来自模型的 AllRegions 标签以及预测。 这样,就知道结果基于常规模型。
在网格中,单击“ 源”下的第一个空行,然后选择“AllRegions 挖掘模型”。
对于 “字段”,请选择“区域”。
对于 别名,请键入 “已用模型”。
接下来,将另一个标签添加到结果中,以便查看预测所针对的序列。
单击空行,然后在 “源”下选择 “自定义表达式”。
在 “别名 ”列中,键入 ModelRegion。
在 “条件/参数 ”列中,键入
'T1000 Pacific'。
现在,你将设置交叉预测函数。
单击空行,然后在 “源”下选择 “预测函数”。
在 “字段” 列中,选择 PredictTimeSeries。
对于 别名,请键入 “预测值”。
使用拖放操作将字段 AvgQty 从挖掘模型窗格拖动到条件/参数列中。
在 “条件/参数 ”列中,在字段名称后面键入以下文本:
,5, REPLACE_MODEL_CASES“条件/参数”文本框的完整文本应如下所示:
[AllRegions].[AvgQty],5,REPLACE_MODEL_CASES
单击 “结果”。
在 DMX 中创建交叉预测查询
你可能注意到交叉预测存在问题:即,若要将常规模型应用于其他数据系列,例如北美区域中的 T1000 产品模型,必须为每个系列创建不同的查询,以便可以将每个输入集映射到模型。
您可以切换到 DMX 视图并编辑已创建的 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 DW2003R2], '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”替换为“北美”来更改筛选条件和列标签,则会根据常规模型中的模式获取北美 T1000 产品的预测。