在序列聚类分析模型上创建预测(中间数据挖掘教程)

在查看器中浏览序列聚类分析模型后,可以在数据挖掘设计器的 “挖掘模型预测 ”选项卡上使用预测查询生成器来创建预测查询。 若要创建预测,请先选择序列聚类分析模型,然后选择输入数据。 对于输入,可以使用外部数据源,也可以生成单一实例查询并在对话框中提供值。

本课程假定你已熟悉如何使用预测查询生成器,并想要了解如何生成特定于序列聚类分析模型的查询。 有关如何使用预测查询生成器的一般信息,请参阅数据挖掘查询接口或基本数据挖掘教程的一节:创建预测(基本数据挖掘教程)。

在区域模型上创建预测

对于此方案,你将首先创建一些单一实例预测查询,以便了解预测如何因区域而异。

在序列聚类模型上创建单条查询

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

  2. “挖掘模型 ”列菜单中,选择“ 单一实例查询”。

    将显示 “挖掘模型 ”窗格和 “单一实例查询输入 ”窗格。

  3. “挖掘模型 ”窗格中,单击 “选择模型”。 (如果已选择序列聚类分析模式,则可以跳过此步骤。

    此时将打开 “选择挖掘模型 ”对话框。

  4. 展开表示挖掘结构区域序列聚类的节点,然后选择模型区域序列聚类。 单击 “确定” 。 目前,请忽略输入窗格;设置预测函数后,将指定输入。

  5. 在网格中,单击 “源 ”下的空单元格,然后选择“ 预测函数”。“字段”下的单元格中,选择“ PredictSequence”。

    注释

    还可以使用 Predict 函数。 如果这样做,请务必选择将表列作为参数的 Predict 函数的版本。

  6. “挖掘模型”窗格中,选择嵌套表v Assoc Seq Line Items,然后将其拖到网格中,并将其拖到 PredictSequence 函数的“条件/参数”框。

    通过拖放表和列名,无需语法错误即可生成复杂语句。 但是,它将替换单元格的当前内容,其中包括 PredictSequence 函数的其他可选参数。 若要查看其他参数,可以暂时将函数的第二个实例添加到网格以供引用。

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

预期结果包含具有标题 表达式的单个列。 表达式列包含包含三列的嵌套表,如下所示:

$SEQUENCE 行号 型号
1 Mountain-200

这些结果意味着什么? 请记住,未指定任何输入。 因此,针对整个事例群体进行预测,Analysis Services 返回最有可能的总体预测。

向单例预测查询添加输入

到目前为止,尚未指定任何输入。 在下一个任务中,将使用 “单一实例查询输入 ”窗格指定查询的某些输入。 首先,将使用 [Region] 作为区域序列聚类分析模型的输入,以确定预测序列是否对所有区域都相同。 然后,你将了解如何修改查询以添加每个预测的概率,并平展结果,使其更易于查看。

为特定客户组生成预测
  1. 单击预测查询生成器左上角的“ 设计 ”按钮,切换回查询生成网格。

  2. “单一实例查询输入”对话框中,单击“值”框中的Region,然后选择“欧洲”

  3. 单击“ 结果 ”按钮可查看欧洲客户的预测。

  4. 单击预测查询生成器左上角的“ 设计 ”按钮,切换回查询生成网格。

  5. 单例查询输入对话框中,单击框,然后选择北美

  6. 单击“ 结果 ”按钮可查看北美客户的预测。

使用自定义表达式添加概率

若要输出每个预测的概率稍微复杂一些,因为概率是预测的属性,并且作为嵌套表进行输出。 如果熟悉数据挖掘扩展插件(DMX),可以轻松更改查询,以在嵌套表上添加子选择语句。 但是,还可以通过添加自定义表达式在预测查询生成器中创建子选择语句。

使用自定义表达式输出预测序列的概率
  1. 单击预测查询生成器左上角的“ 设计 ”按钮,切换回查询生成网格。

  2. 在网格的 “源”下,单击一个新行,然后选择“ 自定义表达式”。

  3. 请将字段下面的框留空。

  4. 对于 Alias,请键入 t

  5. “条件/参数 ”框中,键入完整的子选择语句,如以下代码示例所示。 请务必包含起始括号和结束括号。

    (SELECT PredictProbability([Model]) FROM PredictSequence([Sequence Clustering with Region].[v Assoc Seq Line Items]))  
    
  6. 单击“ 结果 ”按钮可查看欧洲客户的预测。

结果现在包含两个嵌套表,一个包含预测,一个包含预测概率。 如果查询不起作用,可以切换到查询设计视图并查看完整的查询语句,如下所示:

SELECT  
  PredictSequence([Sequence Clustering with Region].[v Assoc Seq Line Items]),  
  ( (SELECT PredictProbability([Model]) FROM PredictSequence([Sequence Clustering with Region].[v Assoc Seq Line Items]))) as [t]  
FROM  
  [Sequence Clustering with Region]  
NATURAL PREDICTION JOIN  
(SELECT 'Europe' AS [Region]) AS t  

处理结果

当结果中有许多嵌套表时,可能需要平展结果,以便更轻松地查看。 为此,可以手动修改查询并添加 FLATTENED 关键字。

在预测查询中展平嵌套行集
  1. 单击预测查询生成器角落的 “查询 ”按钮。

    网格将更改为打开的窗格,可在其中查看和修改预测查询生成器创建的 DMX 语句。

  2. 关键字 SELECT 后,键入 FLATTENED.

    查询的完整文本应类似于以下内容:

    SELECT FLATTENED  
      PredictSequence([Sequence Clustering with Region].[v Assoc Seq Line Items]),  
      ( (SELECT PredictProbability([Model]) FROM PredictSequence([Sequence Clustering with Region].[v Assoc Seq Line Items]))) as [t]  
    FROM  
      [Sequence Clustering with Region]  
    NATURAL PREDICTION JOIN  
    (SELECT 'Europe' AS [Region]) AS t  
    
  3. 单击预测查询生成器右上角的“ 结果 ”按钮。

手动编辑查询后,将无法切换回设计视图,而不会丢失更改。 但是,可以将手动创建的 DMX 语句保存到文本文件,然后更改回设计视图。 执行此作时,查询将还原到设计视图中有效的最后一个版本。

前面的示例使用事例表列“Region”作为单一实例预测查询的输入,因为你有兴趣了解模型是否在区域之间发现了任何差异。 但是,在探索模型后,你决定差异不够强大,无法证明按区域自定义产品建议是正当的。 你真正有兴趣预测的是客户选择的项目。 因此,在后续查询中,将使用不包含 Region 的序列聚类分析模型为所有客户生成建议。

使用嵌套表列作为输入

首先,你将创建一个单一实例预测查询,该查询将单个项作为输入并返回下一个最有可能的项目。 若要获取此类预测,必须使用嵌套表列作为输入值。 这是因为要预测的属性 Model 是嵌套表的一部分。 Analysis Services 提供了 “嵌套表输入 ”对话框,可帮助你使用预测查询生成器轻松地在嵌套表属性上创建预测查询。

使用嵌套表作为预测的输入
  1. 单击预测查询生成器左上角的“ 设计 ”按钮,切换回查询生成网格。

  2. “单一实例查询输入”对话框中,单击“Region”框,然后选择空行以清除此字段的输入。

  3. “单一实例查询输入”对话框中,单击vAssocSeqLineItems框,然后单击“(...)”按钮。

  4. “嵌套表输入 ”对话框中,单击“ 添加”。

  5. 在新行中,单击下面的 Model框,然后从列表中选择 Touring Tire。 单击 “确定”

  6. 单击“ 结果 ”按钮以查看预测。

对于选择 Touring Tire 作为首选项目的所有客户,模型建议以下下一步的项目。 你已经从模型探索中得知客户经常一起购买旅游轮胎和旅游轮胎管这两种产品,所以这些推荐看起来不错。

$SEQUENCE 行号 型号
1 旅游轮胎管
2 Sport-100
3 Long-Sleeve 徽标球衣

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

现在,你对模型能够生成可用于提出建议的预测感到满意,接下来将创建一个映射到外部数据源的预测查询。 该数据源将提供表示当前产品的值。 由于你有兴趣创建一个预测查询来提供客户 ID 和产品列表作为输入,因此你将将客户表添加为事例表,并将购买表添加为嵌套表。 然后,可以像之前一样添加预测函数来创建建议。

此过程与在第 3 课中创建市场篮方案预测的过程相同;但是,在序列聚类分析模型预测中,还需要顺序作为输入。

使用嵌套表输入来创建预测查询
  1. “挖掘模型 ”窗格中,选择序列聚类分析模型(如果尚未选择)。

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

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

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

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

    如果数据类型匹配且列名相似,Analysis Services 将尝试检测关系并自动创建关系。 如果创建的关系不正确,可以右键单击联接行并选择“ 修改连接 ”以编辑列映射,也可以右键单击联接行,然后选择“ 删除 ”以完全删除关系。 在这种情况下,由于表已在数据源视图中联接,因此这些关系会自动添加到设计窗格中。

  6. 向网格添加新行。 对于 ,选择 vAssocSeqOrders,对于 字段,请选择 CustomerKey。

  7. 向网格添加新行。 对于 “源”,选择“ 预测函数”,对于 “字段”,请选择“ PredictSequence”。

  8. 将 vAssocSeqLineItems 拖到 “条件/参数 ”框中。 单击“条件/参数”框的末尾,然后键入以下参数: 2

    “条件/参数”框中的完整文本应为:[Sequence Clustering].[v Assoc Seq Line Items],2

  9. 单击“ 结果 ”按钮以查看每个客户的预测。

你已完成有关顺序聚类分析模型的教程。

后续步骤

如果已完成 中间数据挖掘教程(Analysis Services - 数据挖掘)中的所有部分,下一步可能是了解如何使用数据挖掘扩展插件(DMX)语句生成模型和生成预测。 有关详细信息,请参阅使用 DMX 创建和查询数据挖掘模型:教程(Analysis Services - 数据挖掘)。

如果熟悉编程概念,还可以使用分析管理对象(AMO)以编程方式处理数据挖掘对象。 有关详细信息,请参阅 AMO 数据挖掘类

另请参阅

序列聚类分析模型查询示例
序列聚类模型的挖掘模型内容(Analysis Services - 数据挖掘)