在测试挖掘模型的准确性并决定对结果感到满意后,可以使用数据挖掘设计器中 “挖掘模型预测 ”选项卡上的预测查询生成器来生成预测。
预测查询生成器有三个视图。 使用“设计和查询”视图,可以生成和检查查询。 然后,可以运行查询并在 结果 视图中查看结果。
所有预测查询都使用 DMX,这是数据挖掘扩展插件(DMX)语言的缩写。 DMX 的语法类似于 T-SQL,但用于针对数据挖掘对象的查询。 尽管 DMX 语法并不复杂,但使用类似于此语法的查询生成器或 Office 的 SQL Server 数据挖掘 Add-Ins 中的查询生成器,因此,选择输入和生成表达式要容易得多,因此强烈建议你了解基础知识。
创建查询
创建预测查询的第一步是选择挖掘模型和输入表。
选择模型和输入表
在数据挖掘设计器的 “挖掘模型预测 ”选项卡上的 “挖掘模型 ”框中,单击“ 选择模型”。
在 “选择挖掘模型” 对话框中,导航到 目标邮件 结构,展开结构,选择
TM_Decision_Tree,然后单击 “确定”。在 “选择输入表” 框中,单击 “选择事例表”。
在 “选择表 ”对话框中的 “数据源 ”列表中,选择数据源视图 Adventure Works DW 多维 2012。
在 “表/视图名称”中,选择 “ProspectiveBuyer”(dbo) 表,然后单击“ 确定”。
该
ProspectiveBuyer表最类似于 vTargetMail 案例表。
映射列
选择输入表后,预测查询生成器会根据列的名称在挖掘模型和输入表之间创建默认映射。 结构中的至少一列必须与外部数据中的列匹配。
重要
用于确定模型准确性的数据必须包含可以映射到可预测列的字段。 如果此类列不存在,则可以使用空值创建一个列,但它的数据类型必须与可预测列具有相同的数据类型。
将输入映射到模型
右键单击将 “挖掘模型 ”窗口连接到 “选择输入表 ”窗口的线条,然后选择“ 修改连接”。
请注意,并不是每一列都进行了映射。 我们将为多个 表列添加映射。 我们还将基于当前日期列生成新的出生日期列,以便列匹配得更好。
在 “表列”下,单击
Bike Buyer此单元格,然后从下拉列表中选择“ProspectiveBuyer.Unknown”。这会将可预测列 [Bike Buyer]映射到输入表列。
单击 “确定” 。
在 解决方案资源管理器中,右键单击 目标邮件 数据源视图,然后选择 “视图设计器”。
右键单击表“ProspectiveBuyer”,然后选择“ 新建命名计算”。
在“ 创建命名计算 ”对话框中的 “列名称”中,键入
calcAge。对于“说明”,请在描述中输入“根据出生日期计算年龄”。
在 “表达式 ”框中,键入
DATEDIFF(YYYY,[BirthDate],getdate())并单击“ 确定”。由于输入表没有对应于模型中的 Age 列,因此可以使用此表达式从输入表中的 BirthDate 列计算客户年龄。 由于 Age 被确定为预测自行车购买的最有影响力的列,因此它必须存在于模型和输入表中。
在数据挖掘设计器中,选择 “挖掘模型预测 ”选项卡,然后重新打开“ 修改连接 ”窗口。
在 “表列”下,单击 “年龄 ”单元格,然后从下拉列表中选择“ProspectiveBuyer.calcAge”。
警告
如果未在列表中看到列,可能需要刷新设计器中加载的数据源视图的定义。 为此,请在“ 文件 ”菜单中选择“ 全部保存”,然后在设计器中关闭并重新打开项目。
单击 “确定” 。
设计预测查询
挖掘模型预测选项卡工具栏上的第一个按钮是“切换到设计视图/切换到结果视图/切换到查询视图”按钮。 单击此按钮上的向下箭头,然后选择“ 设计”。
在 “挖掘模型预测 ”选项卡上的网格中,单击 “源 ”列中第一个空行中的单元格,然后选择“ 预测函数”。
在 “预测函数 ”行的 “字段 ”列中,选择
PredictProbability。在同一行的 “别名 ”列中,键入 结果的概率。
在上面的 “挖掘模型 ”窗口中,选择 [Bike Buyer] 并将其拖动到 “条件/参数 ”单元格中。
放手时,[TM_Decision_Tree].[Bike Buyer] 出现在 条件/参数 单元格中。
这指定函数的目标列
PredictProbability。 有关函数的详细信息,请参阅 数据挖掘扩展插件(DMX)函数参考。单击 “源 ”列中的下一个空行,然后选择 TM_Decision_Tree 挖掘模型。
在
TM_Decision_Tree行中,在 “字段” 列中,选择Bike Buyer。在
TM_Decision_Tree行中,在 “条件/参数 ”列中,键入=1。单击 “源 ”列中的下一个空行,然后选择 “潜在购买者”表。
在
ProspectiveBuyer行的字段列中,选择ProspectiveBuyerKey。这会向预测查询添加唯一标识符,以便可以识别谁是谁和谁不太可能购买自行车。
向网格添加另外五行。 对于每一行,选择 “ProspectiveBuyer”表 作为 “源”,然后在 “字段” 单元格中添加以下列:
calcAge
姓氏
名字
AddressLine1
AddressLine2
最后,运行查询并浏览结果。
预测查询生成器还包括以下控件:
显示 复选框
允许从查询中删除子句,而无需从设计器中删除子句。 使用复杂查询时,这非常有用,并且想要保留语法,而无需将 DMX 复制并粘贴到窗口中。
组
在所选行的开头插入左括号,或插入当前行末尾的右括号(右)括号。
AND/OR
紧接在当前函数
AND或列OR之后插入运算符。
运行查询并查看结果
在 “挖掘模型预测 ”选项卡中,选择“ 结果 ”按钮。
查询运行并显示结果后,可以查看结果。
“ 挖掘模型预测 ”选项卡显示可能成为自行车购买者的潜在客户的联系信息。 结果列的概率指示预测的概率正确。 可以使用这些结果来确定要针对邮件的潜在客户。
此时,可以保存结果。 您有三种选择:
右键单击结果中的一行数据,然后选择“ 复制 ”以仅将该值(和列标题)保存到剪贴板。
右键单击结果中的任何行,然后选择“ 全部复制 ”,将整个结果集(包括列标题)复制到剪贴板。
单击“ 保存查询结果 ”,将结果直接保存到数据库,如下所示:
在“ 保存数据挖掘查询结果 ”对话框中,选择数据源或定义新的数据源。
键入将包含查询结果的表的名称。
使用“ 添加到 DSV”选项创建表并将其添加到现有数据源视图。 如果要保留模型(例如训练数据、预测源数据和在同一数据源视图中查询结果)的所有相关表,这非常有用。
使用“ 覆盖(如果存在)”选项,使用最新结果更新现有表。
如果将任何列添加到预测查询、更改了预测查询中任何列的名称或数据类型,或者已在目标表中运行任何 ALTER 语句,则必须使用此选项来覆盖表。
此外,如果多个列具有相同的名称(例如默认列名 表达式),则必须为具有重复名称的列创建别名,或者在设计器尝试将结果保存到 SQL Server 时引发错误。 原因是 SQL Server 不允许多个列具有相同的名称。
有关详细信息,请参阅“保存数据挖掘查询结果”对话框(挖掘模型预测视图)。