在本课中,你将使用 DMX SELECT 语句根据第 2 课中创建的关联模型创建预测 :将挖掘模型添加到市场篮挖掘结构。 使用 DMX SELECT 语句和添加 PREDICTION JOIN 子句创建预测查询。 有关预测联接语法的详细信息,请参阅 SELECT FROM <模型> PREDICTION JOIN (DMX)。
语句的 SELECT FROM <模型> PREDICTION JOIN形式SELECT包含三个部分:
结果集中返回的挖掘模型列和预测函数的列表。 此列表还可以包含源数据的输入列。
用于定义创建预测所使用数据的源查询。 例如,如果要在批处理中创建许多预测,则源查询可以检索客户列表。
挖掘模型中的列与源数据之间的映射。 如果列名称匹配,则可以使用
NATURAL PREDICTION JOIN语法并省略列映射。
可以使用预测函数增强查询。 预测函数提供其他信息,例如预测发生的概率,或对训练数据集中的预测的支持。 有关预测函数的详细信息,请参阅函数(DMX)。
还可以使用 SQL Server Data Tools (SSDT) 中的预测查询生成器来创建预测查询。
单一实例预测 JOIN 语句
第一步是使用 SELECT FROM <模型> PREDICTION JOIN 语法创建单一查询,同时提供一组值作为输入。 下面是单一实例语句的一般示例:
SELECT <select list>
FROM [<mining model>]
[NATURAL] PREDICTION JOIN
(SELECT '<value>' AS [<column>],
(SELECT 'value' AS [<nested column>] UNION
SELECT 'value' AS [<nested column>] ...)
AS [<nested table>])
AS [<input alias>]
代码的第一行定义查询返回的挖掘模型中的列,并指定用于生成预测的挖掘模型的名称:
SELECT <select list> FROM [<mining model>]
代码的下一行指示要执行的操作。 由于将为每个列指定值并准确键入列名称,以便与模型匹配,因此可以使用 NATURAL PREDICTION JOIN 语法。 但是,如果列名称不同,则必须通过添加 ON 子句来指定模型中的列与新数据中的列之间的映射。
[NATURAL] PREDICTION JOIN
代码的下一行定义购物车中的产品,用于预测客户将添加的其他产品:
(SELECT '<value>' AS [<column>],
(SELECT 'value' AS [<nested column>] UNION
SELECT 'value' AS [<nested column>] ...)
AS [<nested table>])
课程任务
在本课中,你将执行以下任务:
创建一个查询,根据客户购物车中已有的项目预测客户可能购买的其他项目。 您将使用具有默认MINIMUM_PROBABILITY的挖掘模型来创建此查询。
编写一个查询,用于预测基于购物车中已有商品,客户可能会购买的其他商品。 此查询基于另一个模型, 其中MINIMUM_PROBABILITY 已设置为 0.01。 由于 关联模型中MINIMUM_PROBABILITY 的默认值为 0.3,因此此模型的查询应返回比默认模型查询更多的可能项。
使用具有默认MINIMUM_PROBABILITY的模型创建预测
创建关联查询
在 对象资源管理器中,右键单击 Analysis Services 实例,指向 “新建查询”,然后单击 DMX 打开查询编辑器。
将语句的
PREDICTION JOIN泛型示例复制到空白查询中。替换以下内容:
<select list>替换为:
PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3)可以只包括列名 [Products],但通过使用 Predict (DMX) 函数,可以将算法返回的产品数限制为 3。 还可以使用
INCLUDE_STATISTICS,它返回每个产品的支持、概率和调整概率。 这些统计信息可帮助你对预测的准确性进行评分。替换以下内容:
[<mining model>]替换为:
[Default Association]替换以下内容:
(SELECT '<value>' AS [<column>], (SELECT 'value' AS [<nested column>] UNION SELECT 'value' AS [<nested column>] ...) AS [<nested table>])替换为:
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t此语句使用
UNION语句指定购物车中必须包含的三个产品以及预测的产品。 语句中的SELECTModel 列对应于嵌套产品表中包含的模型列。完整语句现在应如下所示:
SELECT PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3) From [Default Association] NATURAL PREDICTION JOIN (SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t在“ 文件 ”菜单上,单击“ 保存 DMXQuery1.dmx As”。
在“ 另存为 ”对话框中,浏览到相应的文件夹,并命名该文件
Association Prediction.dmx。在工具栏上,单击“ 执行 ”按钮。
该查询返回一个包含三个产品的表:HL Mountain Tire、Fender Set - Mountain 和 ML Mountain Tire。 该表按概率顺序列出这些返回的产品。 最有可能与查询中指定的三个产品一起出现在同一购物车中的退货产品显示在表格顶部。 接下来的两种产品最有可能包含在购物车中。 该表还包含描述预测准确性的统计信息。
使用MINIMUM_PROBABILITY为 0.01 的模型创建预测
创建关联查询
在 对象资源管理器中,右键单击 Analysis Services 实例,指向 “新建查询”,然后单击 DMX 打开查询编辑器。
将语句的
PREDICTION JOIN泛型示例复制到空白查询中。替换以下内容:
<select list>替换为:
PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3)替换以下内容:
[<mining model>]替换为:
[Modified Association]替换以下内容:
(SELECT '<value>' AS [<column>], (SELECT 'value' AS [<nested column>] UNION SELECT 'value' AS [<nested column>] ...) AS [<nested table>])替换为:
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t此语句使用
UNION语句指定购物车中必须包含的三个产品以及预测的产品。[Model]语句中的SELECT列对应于嵌套产品表中的列。完整语句现在应如下所示:
SELECT PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3) From [Modified Association] NATURAL PREDICTION JOIN (SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t在“ 文件 ”菜单上,单击“ 保存 DMXQuery1.dmx As”。
在“ 另存为 ”对话框中,浏览到相应的文件夹,并命名该文件
Modified Association Prediction.dmx。在工具栏上,单击“ 执行 ”按钮。
该查询返回一个表,其中包含三种产品:HL Mountain Tire、Water Bottle 和 Fender Set - Mountain。 该表按概率顺序列出这些产品。 显示在表顶部的产品是最有可能与查询中指定的三个产品一起放入同一购物车中的产品。 其余产品是最有可能被加入购物车的。 该表还包含描述预测准确性的统计信息。
从此查询的结果中可以看到 ,MINIMUM_PROBABILITY 参数的值会影响查询返回的结果。
这是市场篮子教程的最后一步。 现在,你有一组模型可用于预测客户可能同时购买的产品。
若要了解如何在另一个预测方案中使用 DMX,请参阅 Bike Buyer DMX 教程。