针对顺序分析和聚类分析模型创建预测(数据挖掘中级教程)
通过在查看器中浏览顺序分析和聚类分析模型获得进一步了解后,您可以使用数据挖掘设计器中**“挖掘模型预测”**选项卡上的预测查询生成器来创建预测查询。若要创建预测,首先要选择顺序分析和聚类分析模型,然后选择输入数据。对于输入,可以使用外部数据源,也可以生成单独查询并在对话框中提供值。
本课程假定您已经熟悉如何使用预测查询生成器,同时希望了解如何针对顺序分析和聚类分析模型生成查询。有关如何使用预测查询生成器的常规信息,请参阅创建 DMX 预测查询或“数据挖掘基础教程”的创建预测(数据挖掘基础教程)一节。
针对 Regional 模型创建预测
对此方案,您首先需要创建一些单独预测查询,以了解预测结果如何因区域不同而不同。
针对顺序分析和聚类分析模型创建单独查询
在数据挖掘设计器中,单击**“挖掘模型预测”**选项卡。
在**“挖掘模型”列菜单中选择“单独查询”**。
出现**“挖掘模型”窗格和“单独查询输入”**窗格。
在**“挖掘模型”窗格中单击“选择模型”**。(如果已选择顺序分析和聚类分析模型,则可跳过此步骤。)
系统将打开**“选择挖掘模型”**对话框。
展开表示挖掘结构 Sequence Clustering with Region的节点,选择模型 Sequence Clustering with Region。单击**“确定”**。现在,请忽略“输入”窗格;您将在设置预测函数之后指定输入。
在网格中,单击**“源”下的空单元,选择“预测函数”。在“字段”**下的单元中选择 PredictSequence。
注意 您也可以使用 Predict 函数。使用该函数时,请确保选择采用表列作为参数的 Predict 函数的版本。
在**“挖掘模型”窗格中选择嵌套表 v Assoc Seq Line Items,将其拖到网格中 PredictSequence 函数的“条件/参数”**框。
通过拖放表和列名称可以生成没有语法错误的复杂语句。但是这样就替换了当前单元的内容,其中包括 PredictSequence 函数的其他可选参数。为了查看其他参数,可以将函数的另一个实例临时添加到网格供参考。
单击预测查询生成器上角的**“结果”**按钮。
预期结果包含一列,标题为**“表达式”。“表达式”**列包含有三个列的嵌套表,如下所示:
$SEQUENCE |
Line Number |
Model |
---|---|---|
1 |
|
Mountain-200 |
这些结果是什么意思?请记住,您没有指定任何输入。因此,该预测针对整个事例,Analysis Services 会返回最可能的总预测。
向单独预测查询添加输入
到现在为止,您还没有指定任何输入。在下一个任务中,您将使用**“单独查询输入”**窗格来指定查询的输入。首先,使用 [Region] 作为区域顺序分析和聚类分析模型的输入,以确定所有区域的预测序列是否都相同。然后将了解如何修改查询以添加每项查询的概率,并简化结果以便易于查看。
针对特定客户组生成预测
单击预测查询生成器左上角的**“设计”**按钮,切换回查询生成网格。
在**“单独查询输入”对话框中,单击 Region的“值”**框,选择 Europe。
单击**“结果”**按钮查看对 Europe 客户的预测。
单击预测查询生成器左上角的**“设计”**按钮,切换回查询生成网格。
在**“单独查询输入”对话框中,单击 Region的“值”**框,选择 North America。
单击**“结果”**按钮查看对 North America 客户的预测。
使用自定义表达式添加概率
由于概率是预测的特性并且是作为嵌套表输出,所以输出每个预测的概率要稍微复杂一些。如果您熟悉数据挖掘扩展插件 (DMX),就可以轻松地更改查询,在嵌套表上添加嵌套 select 语句。也可以通过添加自定义表达式的方法在预测查询生成器中创建嵌套 select 语句。
使用自定义表达式输出预测序列的概率
单击预测查询生成器左上角的**“设计”**按钮,切换回查询生成网格。
在网格中的**“源”下,单击一个新行,选择“自定义表达式”**。
将**“字段”**下的框保留空白。
为**“别名”**键入 t。
在**“条件/参数”**框中键入完整的嵌套 select 语句,如下面的代码示例所示。请确保包括开始括号和结束括号。
(SELECT PredictProbability([Model]) FROM PredictSequence([Sequence Clustering with Region].[v Assoc Seq Line Items]))
单击**“结果”**按钮查看对 Europe 客户的预测。
现在结果包含两个嵌套表,一个包含预测,另一个包含预测的概率。如果查询不能运行,可以切换到查询设计视图查看完整的查询语句,应该如下所示:
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 关键字。
平展预测查询中的嵌套行集
单击预测查询生成器角上的**“查询”**按钮。
网格更改为一个打开的窗格,在此您可以查看和修改由预测查询生成器创建的 DMX 语句。
在 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
单击预测查询生成器上角的**“结果”**按钮。
手动编辑查询之后,将无法切换回设计视图而不丢失更改。不过,您可以将创建的 DMX 语句手动保存到文本文件,然后更改回设计视图。这时,查询会恢复到在设计视图中有效的上一版本。
针对 Related 模型创建预测
由于您希望了解模型在区域之间是否发现任何差别,所以前面的示例使用了一个事例表列 Region 作为单独预测查询的输入。但是,浏览了模型之后,您发现差别不足以证明按区域可以生成自定义产品的建议。您真正感兴趣的是预测客户选择的产品。因此,在下面的查询中,您将使用不包括 Region 的顺序分析和聚类分析模型来生成对所有客户的建议。
使用嵌套表列作为输入
首先要创建一个单独预测查询,采用单个产品作为输入并返回下一个最可能的产品。若要获取此类预测,您需要使用嵌套表列作为输入值。这是因为正在预测的属性 Model 是嵌套表的一部分。Analysis Services 使用预测查询生成器提供的**“嵌套表输入”**对话框有助于轻松创建与嵌套表属性有关的预测查询。
使用嵌套表作为预测输入
单击预测查询生成器左上角的**“设计”**按钮,切换回查询生成网格。
在**“单独查询输入”对话框中,单击 Region的“值”**框,选择空行以清除此字段的输入。
在**“单独查询输入”对话框中,单击 vAssocSeqLineItems 的“值”**框,再单击 ( ) 按钮。
在**“嵌套表输入”对话框中单击“添加”**。
在新行中,单击 Model 下的框,从列表中选择 Touring Tire。单击**“确定”**。
单击**“结果”**按钮查看预测。
该模型为选择 Touring Tire 作为第一件商品的所有客户推荐了其他商品。您已经通过浏览模型了解到,客户经常同时购买 Touring Tire 和 Touring Tire Tube,因此这些建议看来不错。
$SEQUENCE |
Line Number |
Model |
---|---|---|
1 |
|
Touring Tire Tube |
2 |
|
Sport-100 |
3 |
|
Long-Sleeve Logo Jersey |
使用嵌套表输入创建大量预测查询
现在,对于模型创建的预测可用来进行营销建议您感到很满意,您将创建一个映射到外部数据源的预测查询。该数据源将提供表示当前产品的值。您希望创建一个预测查询,以将客户 ID 和产品列表作为输入,因此需要将客户表添加为事例表,将采购表添加为嵌套表。然后像前面那样,您将添加预测函数创建建议。
这与您在第 3 课的市场篮方案中创建预测使用的是同一过程;不过,在顺序分析和聚类分析模型预测中还需要将顺序作为输入。
使用嵌套表输入创建预测查询
如果还没有选择 Sequence Clustering 模型,请在**“挖掘模型”**窗格中选择。
在**“选择输入表”对话框中单击“选择事例表”**。
在**“选择表”对话框中,对于“数据源”,选择 Orders。在“表/视图名称”列表中选择 vAssocSeqOrders,然后单击“确定”**。
在**“选择输入表”对话框中单击“选择嵌套表”**。
在**“选择表”对话框中,对于“数据源”,选择 Orders。在“表/视图名称”列表中选择 vAssocSeqLineItems,然后单击“确定”**。
Analysis Services 将尝试检测关系,如果数据类型匹配并且列名称相近,将自动创建关系。如果 Analysis Services 创建的关系是错误的,可以右键单击联接线并选择**“修改连接”来编辑列映射,或者右键单击联接线并选择“删除”**完全删除关系。在此方案中,由于表已经在数据源视图中联接,因此会在“设计”窗格中自动添加这些关系。
向网格中添加一个新行。为**“源”选择 vAssocSeqOrders,为“字段”**选择 CustomerKey。
向网格中添加一个新行。为**“源”选择“预测函数”,为“字段”**选择 PredictSequence。
将 vAssocSeqLineItems 拖到**“条件/参数”框中。单击“条件/参数”**框的末尾,然后键入以下参数:2。
**“条件/参数”**框中的完整文本应该为:[Sequence Clustering].[v Assoc Seq Line Items],2
单击**“结果”**按钮查看对每个客户的预测。
您已经完成关于顺序分析和聚类分析模型的教程。
后续步骤
如果您已经完成了数据挖掘中级教程(Analysis Services - 数据挖掘)中的所有章节,下一步可能是了解如何使用数据挖掘扩展插件 (DMX) 语句创建模型和生成预测。有关详细信息,请参阅教程:使用 DMX。
如果您熟悉编程概念,您还可以使用分析管理对象 (AMO) 以编程方式处理数据挖掘对象。有关详细信息,请参阅 AMO 数据挖掘类。