Naive Bayes 模型查询示例
适用于:SQL Server 2019 及更早版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium
重要
数据挖掘在 SQL Server 2017 Analysis Services 中已弃用,现在在 SQL Server 2022 Analysis Services 中已停止使用。 对于已弃用和停止使用的功能,文档不会更新。 若要了解详细信息,请参阅 Analysis Services 后向兼容性。
在创建针对数据挖掘模型的查询时,您既可以创建内容查询,也可创建预测查询;内容查询提供有关分析过程中发现的模式的详细信息,而预测查询则使用模型中的模式来对新数据进行预测。 您还可以通过使用针对数据挖掘架构行集的查询来检索元数据。 本节说明如何创建针对基于 Microsoft Naive Bayes 算法的模型的查询。
内容查询
预测查询
查找有关 Naive Bayes 模型的信息
Naive Bayes 模型的模型内容可提供有关定型数据中值分布的聚合信息。 您还可以通过创建针对数据挖掘架构行集的查询来检索有关模型的元数据的信息。
示例查询 1:使用 DMX 获取模型元数据
通过查询数据挖掘架构行集,您可找到模型的元数据。 这包括模型创建时间、上次处理模型时间、模型所基于的挖掘结构的名称以及用作可预测属性的列的名称。 您还可以返回创建模型时所使用的参数。
SELECT MODEL_CATALOG, MODEL_NAME, DATE_CREATED, LAST_PROCESSED,
SERVICE_NAME, PREDICTION_ENTITY, FILTER
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_NaiveBayes_Filtered'
示例结果:
行 | 元数据 |
---|---|
MODEL_CATALOG | AdventureWorks |
MODEL_NAME | TM_NaiveBayes_Filtered |
DATE_CREATED | 3/1/2008 19:15 |
LAST_PROCESSED | 3/2/2008 20:00 |
SERVICE_NAME | Microsoft_Naive_Bayes |
PREDICTION_ENTITY | Bike Buyer,Yearly Income |
FILTER | [Region] = 'Europe' OR [Region] = 'North America' |
此示例所使用的模型基于您在 Basic Data Mining Tutorial中创建的 Naive Bayes 模型,但进行了修改,添加了第二个可预测属性,并对定型数据应用了筛选器。
示例查询 2:检索定型数据的摘要
在 Naive Bayes 模型中,有关定型数据中值分布的聚合信息存储在边际统计节点中。 该摘要获取方便,您不必创建针对定型数据的 SQL 查询,就可找到该摘要。
下面的示例使用 DMX 内容查询,从节点 (NODE_TYPE = 24) 检索数据。 由于统计信息存储在嵌套表中,因此,使用 FLATTENED 关键字是为了使结果更易查看。
SELECT FLATTENED MODEL_NAME,
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT], [PROBABILITY], VALUETYPE FROM NODE_DISTRIBUTION) AS t
FROM TM_NaiveBayes.CONTENT
WHERE NODE_TYPE = 26
注意
您必须将列名 SUPPORT 和 PROBABILITY 括在括号中,以便将它们与同名的多维表达式 (MDX) 保留关键字区分开来。
部分结果:
MODEL_NAME | T.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE | t.SUPPORT | t.PROBABILITY | t.VALUETYPE |
---|---|---|---|---|---|
TM_NaiveBayes | Bike Buyer | Missing | 0 | 0 | 1 |
TM_NaiveBayes | Bike Buyer | 0 | 8869 | 0.507263784 | 4 |
TM_NaiveBayes | Bike Buyer | 1 | 8615 | 0.492736216 | 4 |
TM_NaiveBayes | 性别 | Missing | 0 | 0 | 1 |
TM_NaiveBayes | 性别 | F | 8656 | 0.495081217 | 4 |
TM_NaiveBayes | 性别 | M | 8828 | 0.504918783 | 4 |
例如,这些结果告诉您每个离散值 (VALUETYPE = 4) 的定型事例的数量以及计算出的概率,其中进行了缺失值 (VALUETYPE = 1) 调整。
有关 Naive Bayes 模型中NODE_DISTRIBUTION表中提供的值的定义,请参阅 Naive Bayes 模型的挖掘模型内容 (Analysis Services - 数据挖掘) 。 有关缺失值如何影响支持和概率计算的详细信息,请参阅 缺少值 (Analysis Services - 数据挖掘) 。
示例查询 3:查找有关属性的详细信息
由于 Naive Bayes 模型经常包含有关不同属性之间关系的复杂信息,因此,查看这些关系的最简便的方法是使用 Microsoft Naive Bayes 查看器。 但您也可创建 DMX 查询来返回数据。
下面的示例演示如何从模型返回有关特定属性 Region
的信息。
SELECT NODE_TYPE, NODE_CAPTION,
NODE_PROBABILITY, NODE_SUPPORT, MSOLAP_NODE_SCORE
FROM TM_NaiveBayes.CONTENT
WHERE ATTRIBUTE_NAME = 'Region'
此查询返回两种类型的节点:表示输入属性 (NODE_TYPE = 10) 的节点和属性 (NODE_TYPE = 11) 的每个值的节点。 使用节点标题(而不是节点名称)来标识节点,是因为标题可同时显示属性名称和属性值。
NODE_TYPE | NODE_CAPTION | NODE_PROBABILITY | NODE_SUPPORT | MSOLAP_NODE_SCORE | NODE_TYPE |
---|---|---|---|---|---|
10 | 自行车购买者 -> 区域 | 1 | 17484 | 84.51555875 | 10 |
11 | 自行车购买者 -> 区域 = 缺失 | 0 | 0 | 0 | 11 |
11 | 自行车购买者 -> 区域 = 北美 | 0.508236102 | 8886 | 0 | 11 |
11 | 自行车购买者 -> 区域 = 太平洋 | 0.193891558 | 3390 | 0 | 11 |
11 | 自行车购买者 -> 区域 = 欧洲 | 0.29787234 | 5208 | 0 | 11 |
节点中所存储的某些列与您可从边际统计信息获得的相同,如节点概率分数和节点支持值。 但 MSOLAP_NODE_SCORE 是特殊值,只提供给输入属性节点,指示此节点在模型中的相对重要性。 您可以在“依赖关系网络”窗格中查看更多同类信息,但不会提供分数。
下面的查询返回模型中所有属性的重要性分数:
SELECT NODE_CAPTION, MSOLAP_NODE_SCORE
FROM TM_NaiveBayes.CONTENT
WHERE NODE_TYPE = 10
ORDER BY MSOLAP_NODE_SCORE DESC
示例结果:
NODE_CAPTION | MSOLAP_NODE_SCORE |
---|---|
自行车购买者 -> 儿童总数 | 181.3654836 |
自行车购买者 -> 通勤距离 | 179.8419482 |
自行车购买者 -> 英语教育 | 156.9841928 |
自行车购买者 -> 家庭儿童数 | 111.8122599 |
自行车购买者 -> 区域 | 84.51555875 |
自行车购买者 -> 婚姻状况 | 23.13297354 |
自行车购买者 -> 英语职业 | 2.832069191 |
通过在 Microsoft 一般内容树查看器中查看模型内容,您可以更好地了解统计信息所关注的内容。 这里演示了一些简单示例;更多时候,您可能需要执行多个示例,或者在客户端存储并处理结果。
示例 4:使用系统存储过程
除了编写自己的内容查询外,您还可以使用 Analysis Services 系统存储过程浏览结果。 若要使用系统存储过程,请为存储过程的名称加上 CALL 关键字前缀:
CALL GetPredictableAttributes ('TM_NaiveBayes')
部分结果:
ATTRIBUTE_NAME | NODE_UNIQUE_NAME |
---|---|
Bike Buyer | 100000001 |
注意
这些系统存储过程用于 Analysis Services 服务器与客户端之间的通信,请仅在开发和测试挖掘模型时使用它们,以为操作提供便利。 创建生产系统的查询时,请始终使用 DMX 编写您自己的查询。
有关 Analysis Services 系统存储过程的详细信息,请参阅 数据挖掘存储过程 (Analysis Services - 数据挖掘) 。
使用 Naive Bayes 模型进行预测
和用于浏览输入属性与可预测属性之间的关系相比,Microsoft Naive Bayes 算法通常较少用于预测。 但模型支持使用预测函数进行预测和关联。
示例查询 5:使用单独查询预测结果
下面的查询使用单独查询提供新值,并基于模型预测具有这些特征的客户是否会购买自行车。 创建针对回归模型的查询的最简便方法是使用 “单独查询输入” 对话框。 例如,创建下面的 DMX 查询可以使用以下方法:依次选择 TM_NaiveBayes
模型、 “单独查询”,然后从 [Commute Distance]
和 Gender
的下拉列表中选择值。
SELECT
Predict([TM_NaiveBayes].[Bike Buyer])
FROM
[TM_NaiveBayes]
NATURAL PREDICTION JOIN
(SELECT '5-10 Miles' AS [Commute Distance],
'F' AS [Gender]) AS t
示例结果:
Expression |
---|
0 |
预测函数返回可能性最大的值,在本例中为 0,这意味着此种类型的客户不会购买自行车。
示例查询 6:获取具有概率和支持值的预测
除了预测结果外,您可能经常想知道概率的可靠性。 以下查询使用与上一示例相同的单一实例查询,但添加了预测函数 PredictHistogram (DMX) ,以返回包含支持预测的统计信息的嵌套表。
SELECT
Predict([TM_NaiveBayes].[Bike Buyer]),
PredictHistogram([TM_NaiveBayes].[Bike Buyer])
FROM
[TM_NaiveBayes]
NATURAL PREDICTION JOIN
(SELECT '5-10 Miles' AS [Commute Distance],
'F' AS [Gender]) AS t
示例结果:
Bike Buyer | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY | $VARIANCE | $STDEV |
---|---|---|---|---|---|
0 | 10161.5714 | 0.581192599 | 0.010530981 | 0 | 0 |
1 | 7321.428768 | 0.418750215 | 0.008945684 | 0 | 0 |
0.999828444 | 5.72E-05 | 5.72E-05 | 0 | 0 |
表的最后一行显示对支持和概率的缺失值调整。 方差和标准偏差值始终为 0,因为 Naive Bayes 模型无法对连续值建立模型。
示例查询 7:预测关联
如果挖掘结构包含以可预测属性作为键的嵌套表,则不可将 Microsoft Naive Bayes 算法用于关联分析。 例如,可以使用第 3 课:生成市场篮方案 (数据挖掘教程 ) 中创建的挖掘结构来生成 Naive Bayes 模型。 此示例中使用的模型经过修改,目的是向事例表中添加收入和客户区域。
下面的查询示例给出了一个单独查询,该查询预测购买产品 'Road Tire Tube'
时还可能会购买产品。 您可使用这些信息,向特定类型的客户推荐产品。
SELECT PredictAssociation([Association].[v Assoc Seq Line Items])
FROM [Association_NB]
NATURAL PREDICTION JOIN
(SELECT 'High' AS [Income Group],
'Europe' AS [Region],
(SELECT 'Road Tire Tube' AS [Model])
AS [v Assoc Seq Line Items])
AS t
部分结果:
型号 |
---|
Women's Mountain Shorts |
Water Bottle |
Touring-3000 |
Touring-2000 |
Touring-1000 |
函数列表
所有 Microsoft 算法都支持一组通用函数。 但是,Microsoft Naive Bayes 算法支持下表中列出的其他函数。
预测函数 | 使用情况 |
---|---|
IsDescendant (DMX) | 确定一个节点是否是模型中另一个节点的子节点。 |
Predict (DMX) | 返回指定列的一个预测值或一组值。 |
PredictAdjustedProbability (DMX) | 返回加权的概率。 |
PredictAssociation (DMX) | 预测关联数据集中的成员身份。 |
PredictNodeId (DMX) | 返回每个事例的 Node_ID。 |
PredictProbability (DMX) | 返回预测值的概率。 |
PredictSupport (DMX) | 返回指定状态的支持值。 |
若要查看特定函数的语法,请参阅 DMX (数据挖掘扩展) 函数参考。
另请参阅
Microsoft Naive Bayes 算法技术参考
Microsoft Naive Bayes Algorithm
Naive Bayes 模型的挖掘模型内容(Analysis Services - 数据挖掘)