针对数据挖掘模型创建查询时,可以创建内容查询,该查询提供有关分析中发现的模式的详细信息,也可以创建预测查询,该查询使用模型中的模式来使用新数据进行预测。
本部分介绍如何为基于Microsoft逻辑回归算法的模型创建查询。
内容查询
预测查询
获取有关逻辑回归模型的信息
逻辑回归模型是使用具有一组特殊参数的Microsoft神经网络算法创建的;因此,逻辑回归模型具有与神经网络模型相同的一些信息,但不太复杂。 若要了解模型内容的结构以及哪些节点类型存储了哪些类型的信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。
若要遵循查询方案,可以按照中间数据挖掘教程的以下部分中所述创建逻辑回归模型:第 5 课:构建神经网络和逻辑回归模型(中间数据挖掘教程)。
您还可以使用基本数据挖掘教程中的数据挖掘结构“目标邮件”。
ALTER MINING STRUCTURE [Targeted Mailing]
ADD MINING MODEL [TM_Logistic Regression]
([Customer Key],
[Age],
[Bike Buyer] PREDICT,
[Yearly Income] PREDICT,
[Commute Distance],
[English Education],
Gender,
[House Owner Flag],
[Marital Status],
[Number Cars Owned],
[Number Children At Home],
[Region],
[Total Children]
)
USING Microsoft_Logistic_Regression
示例查询 1:使用数据挖掘架构行集检索模型参数
通过查询数据挖掘架构行集,可以找到有关模型的元数据,例如创建模型的时间、上次处理模型时、模型所基于的挖掘结构的名称以及用作可预测属性的列的名称。 以下示例返回第一次创建模型时使用的参数,以及模型的名称和类型以及创建它的日期。
SELECT MODEL_NAME, SERVICE_NAME, DATE_CREATED, MINING_PARAMETERS
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Call Center_LR'
示例结果:
MODEL_NAME | SERVICE_NAME | 创建日期 | 挖矿参数 |
---|---|---|---|
呼叫中心_LR | Microsoft_Logistic_Regression | 04/07/2009 20:38:33 | HOLDOUT_PERCENTAGE=30,HOLDOUT_SEED=1,MAXIMUM_INPUT_ATTRIBUTES=255,MAXIMUM_OUTPUT_ATTRIBUTES=255,MAXIMUM_STATES=100,SAMPLE_SIZE=10000 |
示例查询 2:使用 DMX 查找有关模型的其他详细信息
以下查询返回有关逻辑回归模型的一些基本信息。 逻辑回归模型在许多方面类似于神经网络模型,包括存在描述用作输入的值的边际统计节点(NODE_TYPE = 24)。 此示例查询使用目标邮件模型,并通过从嵌套表检索输入的值(NODE_DISTRIBUTION)来获取所有输入的值。
SELECT FLATTENED NODE_DISTRIBUTION AS t
FROM [TM_Logistic Regression].CONTENT
部分结果:
t.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE | t.SUPPORT | t.概率 | t.方差 | t.VALUETYPE |
---|---|---|---|---|---|
年龄 | 失踪 | 0 | 0 | 0 | 1 |
年龄 | 45.43491192 | 17484 | 1 | 126.9544114 | 3 |
自行车购买者 | 失踪 | 0 | 0 | 0 | 1 |
自行车购买者 | 0 | 8869 | 0.507263784 | 0 | 4 |
自行车购买者 | 1 | 8615 | 0.492736216 | 0 | 4 |
通勤距离 | 失踪 | 0 | 0 | 0 | 1 |
通勤距离 | 5-10 英里 | 3033 | 0.173472889 | 0 | 4 |
实际查询返回更多行;但是,此示例说明了有关输入的信息类型。 对于离散输入,表中列出了每个可能的值。 对于连续值输入(如 Age),完全列表是不可能的,因此输入将离散化为平均值。 有关如何使用边际统计信息节点中的信息的详细信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。
注释
结果已被扁平化处理,以便于查看,但如果您的提供程序支持分层行集,则可以在一列中返回嵌套表。
逻辑回归模型的预测查询
可以将 Predict (DMX) 函数与每种挖掘模型结合使用,以便向模型提供新数据,并根据新值进行预测。 还可以使用函数返回有关预测的其他信息,例如预测正确概率。 本部分提供了逻辑回归模型的预测查询的一些示例。
示例查询 3:对连续值进行预测
由于逻辑回归支持对输入和预测使用连续属性,因此可以轻松创建与数据中的各种因素关联的模型。 可以使用预测查询来浏览这些因素之间的关系。
以下查询示例基于来自中间教程的呼叫中心模型,并创建一个单一实例查询,用于预测星期五 AM 班次的服务等级。 PredictHistogram (DMX) 函数返回一个嵌套表,该表提供与了解预测值有效性相关的统计信息。
SELECT
Predict([Call Center_LR].[Service Grade]) as Predicted ServiceGrade,
PredictHistogram([Call Center_LR].[Service Grade]) as [Results],
FROM
[Call Center_LR]
NATURAL PREDICTION JOIN
(SELECT 'Friday' AS [Day Of Week],
'AM' AS [Shift]) AS t
示例结果:
预测服务等级:0.102601830123659
结果
服务等级 | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY | 方差 | $STDEV |
---|---|---|---|---|---|
0.102601830123659 | 83.0232558139535 | 0.988372093023256 | 0 | 0.00120552660600087 | 0.034720694203902 |
0.976744186046512 | 0.0116279069767442 | 0.0116279069767442 | 0 | 0 |
有关嵌套NODE_DISTRIBUTION表中概率、支持值和标准偏差值的详细信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。
示例查询 4:对离散值进行预测
逻辑回归通常用于分析影响二元结果的因素。 尽管本教程中使用的模型预测了连续值 ServiceGrade,但在实际场景中,你可能希望设置模型来预测服务等级是否满足一些离散化的目标值。 或者,可以使用连续值输出预测,但稍后将预测结果分组为 Good、 Fair 或 Poor。
下面的示例演示如何更改可预测属性分组的方式。 为此,请创建挖掘结构的副本,然后更改目标列的离散化方法,以便对值进行分组而不是连续。
以下过程介绍如何更改呼叫中心数据中服务等级值的分组。
创建呼叫中心挖掘结构和模型的离散化版本
在 SQL Server Data Tools (SSDT)的解决方案资源管理器中,展开 挖掘结构。
右键单击“呼叫中心.dmm”,然后选择“ 复制”。
右键单击 “挖掘结构 ”,然后选择“ 粘贴”。 添加了名为“呼叫中心 1”的新挖掘结构。
右键单击新的挖掘结构,然后选择“ 重命名”。 键入新名称, 即“呼叫中心离散化”。
双击新的挖掘结构以在设计器中打开它。 请注意,挖掘模型也都已被复制,并且都具有扩展名为 1。 目前保持名称不变。
在“ 挖掘结构 ”选项卡中,右键单击服务等级的列,然后选择“ 属性”。
将
Content
属性从 “连续 ”更改为 “离散化”。 将DiscretizationMethod
属性更改为 Clusters。 对于离散化 BucketCount,请键入 3。注释
这些参数仅用于说明过程,不一定生成有效的模型,
从 “挖掘模型 ”菜单中,选择“ 进程结构”和“所有模型”。
以下示例查询基于此离散化模型,并预测一周指定日期的服务等级,以及每个预测结果的概率。
SELECT
(PredictHistogram([Call Center_LR 1].[Service Grade])) as [Predictions]
FROM
[Call Center_LR 1]
NATURAL PREDICTION JOIN
(SELECT 'Saturday' AS [Day Of Week]) AS t
预期的结果:
预测
服务等级 | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY | $VARIANCE | $STDEV |
---|---|---|---|---|---|
0.10872718383125 | 35.7246504770641 | 0.425293458060287 | 0.0170168360030293 | 0 | 0 |
0.05855769230625 | 31.7098880800703 | 0.377498667619885 | 0.020882020060454 | 0 | 0 |
0.170169491525 | 15.6109159883202 | 0.185844237956192 | 0.0661386571386049 | 0 | 0 |
0.954545454545455 | 0.0113636363636364 | 0.0113636363636364 | 0 | 0 |
请注意,预测结果已按指定分为三个类别:但是,这些分组基于数据中实际值的聚类分析,而不是可能设置为业务目标的任意值。
预测函数列表
所有Microsoft算法都支持一组常见的函数。 但是,Microsoft逻辑回归算法支持下表中列出的其他函数。
预测函数 | 用法 |
IsDescendant (DMX) | 确定一个节点是否是模型中另一个节点的子节点。 |
PredictAdjustedProbability (DMX) | 返回指定状态的调整概率。 |
PredictHistogram (DMX) | 返回指定列的预测值或值集。 |
PredictProbability (DMX) | 返回指定状态的概率。 |
PredictStdev (DMX) | 返回预测值的标准偏差。 |
PredictSupport (DMX) | 返回指定状态的支持值。 |
PredictVariance (DMX) | 返回指定列的方差。 |
有关所有Microsoft算法通用的函数的列表,请参阅“常规预测函数”(DMX)。 有关特定函数的语法,请参阅 数据挖掘扩展插件(DMX)函数参考。
注释
对于神经网络和逻辑回归模型, PredictSupport (DMX) 函数返回一个值,该值表示整个模型的训练集的大小。
另请参阅
数据挖掘查询
Microsoft逻辑回归算法
Microsoft逻辑回归算法技术参考
逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)
第 5 课:构建神经网络和逻辑回归模型(中间数据挖掘教程)