创建预测(数据挖掘基础教程)
在测试挖掘模型的准确性并对这些模型感到满意后,可以使用数据挖掘设计器中的**“挖掘模型预测”**选项卡上的预测查询生成器来创建预测查询。 此界面可帮助您使用 DMX 或数据挖掘扩展插件 (DMX) 语言生成查询。 DMX 的语法与 T-SQL 的语法相似,但用于对数据挖掘对象的查询。
预测查询生成器有三个视图。 使用**“设计”和“查询”视图,可以生成并检查查询。 然后可以在“结果”**视图中运行查询并查看结果。
有关如何使用预测查询生成器的详细信息,请参阅数据挖掘查询接口。
创建查询
创建预测查询的第一步是选择挖掘模型和输入表。
选择模型和输入表
在数据挖掘设计器的**“挖掘模型预测”选项卡的“挖掘模型”框中,单击“选择模型”**。
在**“选择挖掘模型”对话框中,在树中导航到 Targeted Mailing 结构,展开该结构,选择 TM_Decision_Tree,然后单击“确定”**。
在**“选择输入表”框中,单击“选择事例表”**。
在**“选择表”对话框中的“数据源”**列表中,选择 Adventure Works DW Multidimensional 2012 。
在**“表/视图名称”中选择 ProspectiveBuyer (dbo) 表,然后单击“确定”**。
ProspectiveBuyer 表与 vTargetMail 事例表非常相似。
映射列
选择输入表之后,预测查询生成器便会根据各列的名称在挖掘模型和输入表之间创建默认映射。 结构中至少有一列必须与外部数据中的某列相匹配。
重要提示 |
---|
用于确定模型准确性的数据必须包含一个可以映射到可预测列的列。 如果不存在这种列,您可以使用空值创建一列,但该列的数据类型必须与可预测列相同。 |
将结构列映射到输入表列
右键单击将**“挖掘模型”窗口与“选择输入表”窗口连接起来的线,然后选择“修改连接”**。
请注意,并非每个列都映射。 我们将为几个**“表列”**添加映射。 我们还将基于当前的日期列生成新的出生日期列,以便更好地匹配列。
在**“表列”**下方,单击 Bike Buyer 单元格并从下拉列表中选择 ProspectiveBuyer.Unknown。
这会将可预测列 [Bike Buyer] 映射到一个输入表列。
单击**“确定”**。
在**“解决方案资源管理器”中,右键单击 Targeted Mailing 数据源视图并选择“视图设计器”**。
右键单击表 ProspectiveBuyer 并选择**“新建命名计算”**。
在**“创建命名计算”对话框中,为“列名”**键入 calcAge。
对于**“说明”**,键入“基于出生日期计算年龄”。
在**“表达式”框中键入 DATEDIFF(YYYY,[BirthDate],getdate()),然后单击“确定”**。
由于输入表中没有 Age 列对应于模式中的这一项,因此您可以使用此表达式基于输入表中的 BirthDate 列计算客户年龄。 由于 Age 被标识为对预测自行车购买最有影响的列,因此,它在模型和输入表中必须都存在。
在数据挖掘设计器中,选择**“挖掘模型预测”选项卡,然后重新打开“修改连接”**窗口。
在**“表列”**下方,单击 Age 单元格并从下拉列表中选择 ProspectiveBuyer.calcAge。
注意 如果您在列表中看不到该列,则必须刷新在设计器中加载的数据源视图的定义。 为此,请从“文件”菜单中选择“全部保存”,然后在设计器中关闭并重新打开项目。
单击**“确定”**。
设计预测查询
设计预测查询
“挖掘模型预测”选项卡的工具栏中的第一个按钮是“切换到设计视图”/“切换到结果视图”/“切换到查询视图”按钮。 单击此按钮上的向下箭头,然后选择“设计”。
在**“挖掘模型预测”选项卡上的网格内,单击“源”列中第一个空行中的单元格,然后选择“预测函数”**。
在**“预测函数”行的“字段”**列中,选择 PredictProbability。
在同一行的**“别名”**列中,键入“结果概率”。
从**“挖掘模型”窗口的上方选择 [Bike Buyer],并将其拖到“条件/参数”**单元格中。
松开鼠标按钮后,[TM_Decision_Tree].[Bike Buyer] 会显示在**“条件/参数”**单元格中。
这将指定 PredictProbability 函数的目标列。 有关函数的详细信息,请参阅数据挖掘扩展插件 (DMX) 函数参考。
单击**“源”**列中的下一个空行,然后选择 TM_Decision_Tree mining model。
在 TM_Decision_Tree 行的**“字段”**列中,选择 Bike Buyer。
在 TM_Decision_Tree 行的**“条件/参数”**列中,键入 =1。
单击**“源”**列中的下一个空行,然后选择 ProspectiveBuyer table。
在 ProspectiveBuyer 行的**“字段”**列中,选择 ProspectiveBuyerKey。
这会将唯一标识符添加到预测查询中,以便您可以标识谁可能购买自行车,以及谁不可能购买自行车。
向网格中添加五个以上的行。 对于每个行,请选择 ProspectiveBuyer table 作为**“源”,然后在“字段”**单元格中添加以下列:
calcAge
LastName
FirstName
AddressLine1
AddressLine2
最后,运行查询并浏览结果。
运行查询并查看结果
在**“挖掘模型预测”选项卡中,选择“结果”**按钮。
运行查询并显示结果后,您可以查看结果。
**“挖掘模型预测”**选项卡显示有可能购买自行车的潜在客户的联系信息。 **“结果概率”**列指示预测的正确概率。 您可以使用这些结果来确定向哪些潜在客户发送电子邮件。
此时您可以保存结果。 您有三种选择:
右键单击结果中的一行数据,然后选择**“复制”**以仅将该值(和列标题)保存到剪贴板。
右键单击结果中的任意行,然后选择**“全部复制”**以将整个结果集(包括列标题)复制到剪贴板。
单击**“保存查询结果”**以将结果直接保存到数据库,如下所示:
在**“保存数据挖掘查询结果”**对话框中,选择一个数据源或定义新的数据源。
键入将包含查询结果的表的名称。
使用选项**“添加到数据源视图”**以创建表并将其添加到现有的数据源视图。 如果您想在同一数据源视图中保留模型的所有相关表(如定型数据、预测源数据和查询结果),此选项很有用。
使用选项**“如果已存在,则覆盖”**以用最新的结果更新现有的表。
如果您将任何列添加到了预测查询、更改了预测查询中任何列的名称或数据类型,或者对目标表运行了任何 ALTER 语句,必须使用此选项来覆盖表。
此外,如果多个列具有相同的名称 (例如默认的列名称**“表达式”**), 您必须为具有重复名称的列创建一个别名,否则当设计器尝试将结果保存到 SQL Server 时将出错。 原因是 SQL Server 不允许多个列具有相同的名称。
有关详细信息,请参阅“保存数据挖掘查询结果”对话框(“挖掘模型预测”视图)。