查询关联模型(Analysis Services – 数据挖掘)
在对数据挖掘模型创建查询时,可以创建内容查询,也可创建预测查询。内容查询提供有关在分析过程中发现的规则和项集的详细信息,预测查询使用在数据中发现的关联来做出预测。对于关联模型来说,预测通常基于规则且可用来给出建议,而内容查询通常用于浏览项集之间的关系。此外,还可检索有关模型的元数据。
本节讲述如何为基于 Microsoft 关联规则的算法的模型创建这些类型的查询。
内容查询
使用 DMX 获取模型元数据
从架构行集中获取元数据
检索模型的原始参数
检索项集和产品列表
返回前 10 个项集
预测查询
预测关联项
确定相关项集的置信度
查找有关模型的信息
所有挖掘模型都公开算法根据标准化架构(即挖掘模型架构行集)所了解的内容。可以使用建数据挖掘扩展插件 (DMX) 语句或 Analysis Services 存储过程来对挖掘模型架构行集创建查询。在 SQL Server 2008 中,还可使用类似 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_CATALOG |
Association Test |
MODEL_NAME |
Association |
NODE_CAPTION |
Association Rules Model |
NODE_SUPPORT |
14879 |
CHILDREN_CARDINALITY |
942 |
NODE_DESCRIPTION |
Association Rules Model; 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'
示例结果:
MODEL_CATALOG |
AdventureWorks DW |
MODEL_NAME |
Association |
SERVICE_NAME |
Association Rules Model |
PREDICTION_ENTITY |
v Assoc Seq Line Items |
MINING_STRUCTURE |
Association |
LAST_PROCESSED |
9/29/2007 10:21:24 PM |
返回页首
示例查询 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 |
NODE_CAPTION |
Sport-100 = Existing |
NODE_PROBABILITY |
0.291283016331743 |
NODE_SUPPORT |
4334 |
PURCHASEDPRODUCTS.ATTRIBUTE_NAME |
v Assoc Seq Line Items(Sport-100) |
返回页首
示例查询 5:返回排在前 10 位的项集
本例演示如何使用 DMX 在默认情况下提供的某些分组和排序函数。当按照每个节点的支持对项集排序时,该查询返回排在前 10 位的项集。请注意,无需对结果进行显式分组,这与 Transact-SQL 中不同。不过,只能在每个查询中使用一个聚合函数。
SELECT TOP 10 (NODE_SUPPORT),NODE_NAME, NODE_CAPTION
FROM Association.CONTENT
WHERE NODE_TYPE = 7
示例结果:
NODE_SUPPORT |
4334 |
NODE_NAME |
37 |
NODE_CAPTION |
Sport-100 = Existing |
返回页首
使用模型进行预测
关联规则模型通常用于生成建议,这些建议基于在项集中发现的相关性。因此,在创建基于关联规则模型的预测查询时,通常使用该模型中的规则以做出基于新数据的推测。PredictAssociation 是返回建议的函数,它具有几个参数,您可以使用这些参数来自定义查询结果。
另一个说明对关联模型的查询非常有用的示例是返回各种规则和项集的置信度,以便可以比较不同跨区销售策略的有效性。以下示例说明如何创建这些查询。
示例查询 6:预测关联项目
本示例使用在数据挖掘基础教程中创建的关联模型。它演示如何创建一个预测查询,该查询告诉您应向已购买某种特定产品的客户推荐哪些产品。此种类型的查询称为单独查询,在该查询中,使用 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 |
$ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 |
4334 |
0.291283 |
0.252696 |
Water Bottle |
2866 |
0.19262 |
0.175205 |
Patch kit |
2113 |
0.142012 |
0.132389 |
返回页首
示例查询 7:确定相关项集的置信度
尽管规则可用于生成建议,但在对数据集内的模式的更深入分析中,项集作用更大。例如,如果对前面示例查询返回的建议不满意,则可以检查包含产品 A 的其他项集,以更好地了解是否产品 A 是人们在购买各种产品时倾向于购买的附件,或者是否产品 A 与购买特定产品有很强的关联性。浏览这些关系的最简单方法是在 Microsoft 关联查看器中筛选项集,但也可使用查询检索这些信息。
以下示例查询返回包含 Water Bottle 项目(包括单项 Water bottle)的所有项集。
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
示例结果:
NODE_CAPTION |
NODE_SUPPORT |
D.ATTRIBUTE_NAME |
---|---|---|
Water Bottle = Existing |
2866 |
v Assoc Seq Line Items(Water Bottle) |
Mountain Bottle Cage = Existing, Water Bottle = Existing |
1136 |
v Assoc Seq Line Items(Water Bottle) |
Road Bottle Cage = Existing, Water Bottle = Existing |
1068 |
v Assoc Seq Line Items(Water Bottle) |
Water Bottle = Existing, Sport-100 = Existing |
734 |
v Assoc Seq Line Items(Water Bottle) |
该查询既返回嵌套表中符合此条件的行,还返回嵌套表外部或事例表中的所有行。因此,必须添加一个条件来消除对目标属性名称具有 Null 值的事例表行。
返回页首
函数列表
所有 Microsoft 算法均支持一组通用的函数。但 Microsoft 关联算法还支持下表中列出的函数。