预测关联(数据挖掘中级教程)

 

适用于: SQL Server 2016 Preview

在处理模型后,您可以使用模型中存储的关联的相关信息来创建预测。 在本课程的最后一个任务中,您将了解如何针对所创建的关联模型生成预测查询。 本课程假定您已经熟悉了如何使用预测查询生成器,同时希望了解如何生成针对关联模型的预测查询。 有关详细信息如何使用预测查询生成器,请参阅 数据挖掘查询工具

创建单独预测查询

针对关联模型的预测查询可能非常有用:

  • 基于以前或相关的采购,向客户提出物料方面的建议

  • 查找相关事件。

  • 标识事务集中或事务集之间的关系。

若要生成预测查询,请先选择要使用的关联模型,然后指定输入数据。 输入可以来自外部数据源(例如值列表),也可以生成单独查询并随时提供值。

对此方案,您首先需要创建一些单独预测查询,以了解预测是如何运行的。 然后您将创建一个批预测的查询,以便根据客户当前的购买情况提出建议。

针对关联模型创建预测查询

  1. 单击 挖掘模型预测 数据挖掘设计器的选项卡。

  2. 挖掘模型 窗格中,单击 选择模型。 (如果已选择正确的模型,则可跳过此步骤和下一步骤。)

  3. 选择挖掘模型 对话框框中,展开表示挖掘结构的节点 关联, ,然后选择模型 关联。 单击 “确定”

    现在,可以忽略“输入”窗格。

  4. 在网格中,单击下的空单元格 ,然后选择 预测函数。 在下面的单元格中 字段, ,选择 PredictAssociation

    您还可以使用 预测 函数预测关联。 如果执行操作,请务必选择的版本 预测 采用表列作为参数的函数。

  5. 挖掘模型 窗格中,选择嵌套的表 vAssocSeqLineItems, ,将其拖到网格中,为 条件/参数PredictAssociation 函数。

    通过拖放表和列名称可以生成没有语法错误的复杂语句。 但是,它将替换该单元格,其中包括其他可选参数的当前内容 PredictAssociation 函数。 为了查看其他参数,可以将函数的另一个实例临时添加到网格供参考。

  6. 单击 条件/参数 框中,表名称后键入以下文本︰ ,,3

    中的完整文本 条件/参数 框应处于,如下所示︰

    [Association].[v Assoc Seq Line Items],3

  7. 单击 结果 在预测查询生成器上角的按钮。

预期的结果包含单个列,标题 表达式表达式 列包含具有单个列和以下三行的嵌套的表。 由于未指定输入值,因此这些预测表示整个模型最可能的产品关联。

Model
Women's Mountain Shorts
Water Bottle
Touring-3000

接下来,您将使用 单独查询输入 窗格,可以指定一个产品作为到查询中,输入和查看最有可能的产品与该项相关联。

创建带有嵌套表输入的单独预测查询

  1. 单击 设计 右上方的预测查询生成器,若要切换回查询生成网格的按钮。

  2. 挖掘模型 菜单上,选择 单独查询

  3. 挖掘模型 对话框中,选择 关联 模型。

  4. 在网格中,单击下的空单元格 ,然后选择 预测函数。 在下面的单元格中 字段, ,选择 PredictAssociation

  5. 挖掘模型 窗格中,选择嵌套的表 vAssocSeqLineItems, ,将其拖到网格中,为 条件/参数PredictAssociation 函数。 类型 ,,3 后就像前面的过程中一样在嵌套的表名称。

  6. 单独查询输入 对话框中,单击 旁边框 vAssoc Seq Line Items, ,然后单击 (...) 按钮。

  7. 嵌套表输入 对话框中,选择 Touring Tire键列 窗格中,然后再单击 添加

  8. 单击 结果 按钮。

现在结果显示最可能与 Touring Tire 关联的产品的预测。

Model
Touring Tire Tube
Sport-100
Water Bottle

但是,您已经通过浏览模型了解到,客户经常同时购买 Touring Tire 和 Touring Tire Tube;您更愿意了解您能够向同时购买这些商品的客户推荐哪些产品。 您将更改查询以便根据市场篮中的两个项目预测相关产品。 您还将修改查询以添加所有预测产品的概率。

向单独预测查询添加输入和概率

  1. 单击 设计 右上方的预测查询生成器,若要切换回查询生成网格的按钮。

  2. 单独查询输入 对话框中,单击 旁边框 vAssoc Seq Line Items, ,然后单击 (...) 按钮。

  3. 键列 窗格中,选择 Touring Tire, ,然后单击 添加

  4. 在网格中,单击下的空单元格 ,然后选择 预测函数。 在下面的单元格中 字段, ,选择 PredictAssociation

  5. 挖掘模型 窗格中,选择嵌套的表 vAssocSeqLineItems, ,将其拖到网格中,为 条件/参数PredictAssociation 函数。 类型 ,,3 后就像前面的过程中一样在嵌套的表名称。

  6. 嵌套表输入 对话框中,选择 Touring Tire Tube键列 窗格中,然后再单击 添加

  7. 在网格中,行中 PredictAssociation 函数中,单击 条件/参数 框中,并将更改要添加新参数 INCLUDE_STATISTICS 参数。

    中的完整文本 条件/参数 框应处于,如下所示︰

    [Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3

  8. 单击 结果 按钮。

嵌套表中的结果现在更改为同时显示支持率和概率的预测。 有关如何解释这些值的详细信息,请参阅 挖掘模型内容的关联模型 (Analysis Services-数据挖掘 )

Model $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Sport-100 4334 0.291… 0.252…
Water Bottle 2866 0.192… 0.175…
Patch Kit 2113 0.142… 0.132

处理结果

如果结果中有很多嵌套表,您可能希望简化结果以便查看。 若要执行此操作,可以手动修改查询并添加 FLATTENED 关键字。

平展预测查询中的嵌套行集

  1. 单击 SQL 预测查询生成器角的按钮。

    网格更改为一个打开的窗格,在此您可以查看和修改由预测查询生成器创建的 DMX 语句。

  2. 之后 选择 关键字、 类型 FLATTENED

    查询的完整文本应该如下所示︰

    SELECT FLATTENED  
      PredictAssociation([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,3)  
    FROM  
      [Association]  
    NATURAL PREDICTION JOIN  
    (SELECT (SELECT 'Touring Tire' AS [Model]  
      UNION SELECT 'Touring Tire Tube' AS [Model]) AS [v Assoc Seq Line Items]) AS t  
    
  3. 单击 结果 在预测查询生成器上角的按钮。

请注意,手动编辑查询之后,将无法切换回设计视图而不丢失更改。 如果希望保存查询,可以将创建的 DMX 语句手动复制到一个文本文件中。 更改回设计视图后,查询会恢复到设计视图中有效的上一版本。

创建多个预测

假设您希望根据以往的购买情况了解每个客户的最佳预测。 您可以使用外部数据作为预测查询的输入,例如包含客户 ID 和最近产品购买情况的表。 要求是,这些数据表已经定义为 Analysis Services 数据源视图;而且输入数据必须包含事例和类似模型中使用的嵌套表。 不需要相同的名称,但结构必须相似。 为了实现本教程教学目的,您将使用对模型进行定型的原始表。

更改预测查询的输入方法

  1. 挖掘模型 菜单上,选择 单独查询 再次重申,以清除复选标记。

  2. 出现一条错误消息警告您单独查询将丢失。 单击 “是”

    输入对话框中的名称更改为 选择输入表

您希望创建一个预测查询,以将客户 ID 和产品列表作为输入,因此需要将客户表添加为事例表,将采购表添加为嵌套表。 然后您将添加预测函数来创建建议。

使用嵌套表输入创建预测查询

  1. 在“挖掘模型”窗格中选择 Association Filtered 模型。

  2. 选择输入表 对话框中,单击 选择事例表

  3. 选择表 对话框中,为 数据源, ,选择 AdventureWorksDW2008。 在 表/视图名称 列表中,选择 vAssocSeqOrders,,然后单击 确定

    将表 vAssocSeqOrders 添加到窗格中。

  4. 选择输入表 对话框中,单击 选择嵌套表

  5. 选择表 对话框中,为 数据源, ,选择 AdventureWorksDW2008。 在 表/视图名称 列表中,选择 vAssocSeqLineItems,然后单击 确定

    将表 vAssocSeqLineItems 添加到窗格中。

  6. 指定嵌套联接 对话框中,将 OrderNumber 字段从事例表拖放到嵌套表中的 OrderNumber 字段。

    您还可以单击 添加关系 并通过从列表中选择的列创建的关系。

  7. 指定关系 对话框框中,验证 OrderNumber 字段会正确映射,然后单击 确定

  8. 单击 确定 关闭 指定嵌套联接 对话框。

    在“设计”窗格中将更新事例表和嵌套表,显示将外部数据列连接到模型中的列的联接。 如果关系是错误的您可以右键单击联接线并选择 修改连接 来编辑列映射,或者您可以右键单击联接线并选择 删除 以完全删除关系。

  9. 在网格中添加一个新行。 有关 , ,选择 vAssocSeqOrders 表。 有关 字段, ,选择 CustomerKey。

  10. 在网格中添加一个新行。 有关 , ,选择 vAssocSeqOrders 表。 有关 字段, ,选择区域。

  11. 在网格中添加一个新行。 有关 , ,选择 预测函数, ,以及用于 字段, ,选择 PredictAssociation

  12. 将 vAssocSeqLineItems 拖到 条件/参数 的框 PredictAssociation 行。 在末尾处单击 条件/参数 框中,然后键入以下文本︰ INCLUDE_STATISTICS,3

    中的完整文本 条件/参数 框应处于︰ [Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3

  13. 单击 结果 按钮,以查看每个客户的预测。

您可以尝试针对多个模型创建一个相似的预测查询,来查看筛选是否会更改预测结果。 有关创建预测和其他类型的查询的详细信息,请参阅 关联模型查询示例

另请参阅

关联模型的挖掘模型内容(Analysis Services - 数据挖掘)
PredictAssociation (DMX)
使用预测查询生成器创建预测查询