关联模型查询示例

针对数据挖掘模型创建查询时,可以创建内容查询,该查询提供有关分析期间发现的规则和项集的详细信息,也可以创建一个预测查询,该查询使用数据中发现的关联进行预测。 对于关联模型,预测通常基于规则,可用于提出建议,而对内容的查询通常探索项集之间的关系。 还可以检索有关模型的元数据。

本部分介绍如何为基于Microsoft关联规则算法的模型创建这些类型的查询。

内容查询

使用 DMX 获取模型元数据数据

从架构行集中获取元数据

检索模型的原始参数

检索项集和产品列表

返回前 10 项集

预测查询

预测关联项目

确定相关项集的置信度

查找有关模型的信息

所有挖掘模型都根据标准化架构公开算法学习的内容,该架构名为挖掘模型架构行集。 可以使用数据挖掘扩展插件(DMX)语句或使用 Analysis Services 存储过程针对挖掘模型架构行集创建查询。 在 SQL Server 2014 中,还可以使用类似于 SQL 的语法直接以系统表的形式查询架构行集。

示例查询 1:使用 DMX 获取模型元数据

以下查询返回有关关联模型的基本元数据, Association例如模型的名称、存储模型的数据库以及模型中的子节点数。 此查询使用 DMX 内容查询从模型的父节点检索元数据:

SELECT MODEL_CATALOG, MODEL_NAME, NODE_CAPTION,   
NODE_SUPPORT, [CHILDREN_CARDINALITY], NODE_DESCRIPTION  
FROM Association.CONTENT  
WHERE NODE_TYPE = 1  

注释

必须将列名 CHILDREN_CARDINALITY 用方括号括起来,以便将其与同名的 MDX 保留关键字区分开来。

示例结果:

模型目录 关联测试
MODEL_NAME 关联
节点标题 关联规则模型
节点支持 14879
儿童基数 942
节点描述 关联规则模型;ITEMSET_COUNT=679;RULE_COUNT=263;MIN_SUPPORT=14;MAX_SUPPORT=4334;MIN_ITEMSET_SIZE=0;MAX_ITEMSET_SIZE=3;MIN_PROBABILITY=0.400390625;MAX_PROBABILITY=1;MIN_LIFT=0.14309369632511;MAX_LIFT=1.95758227647523

有关这些列在关联模型中的含义的定义,请参阅关联模型的挖掘模型内容(Analysis Services - 数据挖掘)

返回到顶部

示例查询 2:从架构行集中获取附加元数据

通过查询数据挖掘架构行集,可以找到 DMX 内容查询中返回的相同信息。 但是,架构行集提供了一些附加列,例如模型上次处理的日期、挖掘结构和用作可预测属性的列的名称。

SELECT MODEL_CATALOG, MODEL_NAME, SERVICE_NAME, PREDICTION_ENTITY,   
MINING_STRUCTURE, LAST_PROCESSED  
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'Association'  

示例结果:

模型目录 Adventure Works DW 多维 2012
MODEL_NAME 关联
SERVICE_NAME 关联规则模型
PREDICTION_ENTITY v Assoc Seq 行项
挖掘结构 关联
最后处理 2007/9/29 下午 10:21:24

返回到顶部

示例查询 3:检索模型的原始参数

以下查询返回一列,其中包含有关创建模型时使用的参数设置的详细信息。

SELECT MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'Association'  

示例结果:

MAXIMUM_ITEMSET_COUNT=200000,MAXIMUM_ITEMSET_SIZE=3,MAXIMUM_SUPPORT=1,MINIMUM_SUPPORT=9.40923449156529E-04,MINIMUM_IMPORTANCE=-999999999,MINIMUM_ITEMSET_SIZE=0,MINIMUM_PROBABILITY=0.4

返回到顶部

查找有关规则和项集的信息

关联模型有两种常见用途:发现有关频繁项集的信息,以及提取有关特定规则和项集的详细信息。 例如,你可能想要提取被评分为特别有趣的规则列表,或创建最常见的项集列表。 使用 DMX 内容查询检索此类信息。 还可以使用 Microsoft关联查看器浏览此信息。

示例查询 4:检索项集和产品列表

以下查询检索所有项集,以及列出每个项集中包含的产品的嵌套表。 NODE_NAME列包含模型中项集的唯一 ID,而NODE_CAPTION提供项的文本说明。 在此示例中,嵌套表平展,以便包含两个产品的项集在结果中生成两行。 如果客户端支持分层数据,则可以省略 FLATTENED 关键字。

SELECT FLATTENED NODE_NAME, NODE_CAPTION,  
NODE_PROBABILITY, NODE_SUPPORT,  
(SELECT ATTRIBUTE_NAME FROM NODE_DISTRIBUTION) as PurchasedProducts  
FROM Association.CONTENT  
WHERE NODE_TYPE = 7  

示例结果:

NODE_NAME 37
节点标题 Sport-100 = 现有
节点概率 0.291283016331743
节点支持 4334
已购产品.ATTRIBUTE_NAME v 关联顺序项目(运动-100)

返回到顶部

示例查询 5:返回前 10 项集

此示例演示如何使用 DMX 默认提供的一些分组和排序函数。 当按每个节点的支持排序时,查询将返回前 10 个项集。 请注意,无需像在 Transact-SQL 中那样显式对结果进行分组;但是,在每个查询中只能使用一个聚合函数。

SELECT TOP 10 (NODE_SUPPORT),NODE_NAME, NODE_CAPTION  
FROM Association.CONTENT  
WHERE NODE_TYPE = 7  

示例结果:

节点支持 4334
NODE_NAME 37
节点标题 Sport-100 = 现有

返回到顶部

使用模型进行预测

关联规则模型通常用于生成基于项集中发现的相关性的建议。 因此,基于关联规则模型创建预测查询时,通常使用模型中的规则基于新数据进行猜测。 PredictAssociation (DMX) 是返回建议的函数,并且有多个参数可用于自定义查询结果。

对关联模型的查询可能很有用的另一个示例是返回各种规则和项集的置信度,以便可以比较不同交叉销售策略的有效性。 以下示例演示如何创建此类查询。

示例查询 6:预测关联的项目

此示例使用在 中间数据挖掘教程(Analysis Services - 数据挖掘)中创建的关联模型。 它演示如何创建预测查询,告知你向购买特定产品的客户推荐哪些产品。 这种类型的查询(在语句中 SELECT...UNION 向模型提供值)称为单例查询。 由于对应于新值的可预测模型列是嵌套表,因此必须使用一个 SELECT 子句将新值映射到嵌套表列, [Model]另一个 SELECT 子句将嵌套表列映射到事例级列 [v Assoc Seq Line Items]。 将关键字 INCLUDE-STATISTICS 添加到查询后,可以查看建议的概率和支持。

SELECT PredictAssociation([Association].[vAssocSeqLineItems],INCLUDE_STATISTICS, 3)  
FROM [Association]  
NATURAL PREDICTION JOIN   
(SELECT  
(SELECT 'Classic Vest' as [Model])  
AS [v Assoc Seq Line Items])  
AS t  

示例结果:

型号 $SUPPORT $PROBABILITY 调整后的概率
Sport-100 4334 0.291283 0.252696
水瓶 2866 0.19262 0.175205
修补工具包 2113 0.142012 0.132389

返回到顶部

示例查询 7:确定相关项集的置信度

虽然规则可用于生成建议,但更深入地分析数据集中的模式时,项集更有趣。 例如,如果你对上一个示例查询返回的建议不满意,则可以检查包含产品 A 的其他项集,以便更好地了解产品 A 是否是人们倾向于使用各种产品购买的配件,或者 A 是否与购买特定产品密切相关。 浏览这些关系的最简单方法是筛选Microsoft关联查看器中的项集;但是,可以使用查询检索相同的信息。

以下示例查询返回所有包含“水瓶”项的项集,包括单个项目“水瓶”。

SELECT TOP 100 FROM   
(  
SELECT FLATTENED NODE_CAPTION, NODE_SUPPORT,   
(SELECT ATTRIBUTE_NAME from NODE_DISTRIBUTION  
WHERE ATTRIBUTE_NAME = 'v Assoc Seq Line Items(Water Bottle)') as D  
FROM Association.CONTENT  
WHERE NODE_TYPE = 7  
) AS Items  
WHERE [D.ATTRIBUTE_NAME] <> NULL  
ORDER BY NODE_SUPPORT DESC  

示例结果:

节点标题 节点支持 D.ATTRIBUTE_NAME
水瓶 = 已存在 2866 v 关联序列表项目(饮水瓶)
山瓶笼 = 现有,水瓶 = 现有 1136 v 关联顺序项目(饮用水瓶)
路瓶笼 = 现有,水瓶 = 现有 1068 关联序列项目(瓶装水)
水瓶 = 现有,Sport-100 = 现有 734 v Assoc Seq 列项目(水瓶)

此查询返回与条件匹配的嵌套表中的行,以及来自外部表或事例表的所有行。 因此,必须添加一个条件,以消除目标属性名称为空值的用例表行。

返回到顶部

函数列表

所有Microsoft算法都支持一组常见的函数。 但是,Microsoft关联算法支持下表中列出的其他函数。

预测函数 用法
IsDescendant (DMX) 确定一个节点是否是神经网络图中另一个节点的子节点。
IsInNode (DMX) 指示指定的节点是否包含当前案例。
PredictAdjustedProbability (DMX) 返回加权概率。
PredictAssociation (DMX) 预测关联数据集中的成员身份。
PredictHistogram (DMX) 返回与当前预测值相关的值的表。
PredictNodeId (DMX) 返回每个事例的Node_ID。
PredictProbability (DMX) 返回预测值的概率。
PredictSupport (DMX) 返回指定状态的支持值。
PredictVariance (DMX) 返回预测值的方差。

另请参阅

Microsoft关联算法
Microsoft关联算法技术参考
关联模型的挖掘模型内容(Analysis Services - 数据挖掘)