逻辑回归模型查询示例

针对数据挖掘模型创建查询时,可以创建内容查询,该查询提供有关分析中发现的模式的详细信息,也可以创建预测查询,该查询使用模型中的模式来使用新数据进行预测。

本部分介绍如何为基于Microsoft逻辑回归算法的模型创建查询。

内容查询

使用数据挖掘架构行集检索模型参数

使用 DMX 查找有关模型的其他详细信息

预测查询

对连续值进行预测

对离散值进行预测

获取有关逻辑回归模型的信息

逻辑回归模型是使用具有一组特殊参数的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,但在实际场景中,你可能希望设置模型来预测服务等级是否满足一些离散化的目标值。 或者,可以使用连续值输出预测,但稍后将预测结果分组为 GoodFairPoor

下面的示例演示如何更改可预测属性分组的方式。 为此,请创建挖掘结构的副本,然后更改目标列的离散化方法,以便对值进行分组而不是连续。

以下过程介绍如何更改呼叫中心数据中服务等级值的分组。

创建呼叫中心挖掘结构和模型的离散化版本
  1. 在 SQL Server Data Tools (SSDT)的解决方案资源管理器中,展开 挖掘结构

  2. 右键单击“呼叫中心.dmm”,然后选择“ 复制”。

  3. 右键单击 “挖掘结构 ”,然后选择“ 粘贴”。 添加了名为“呼叫中心 1”的新挖掘结构。

  4. 右键单击新的挖掘结构,然后选择“ 重命名”。 键入新名称, 即“呼叫中心离散化”。

  5. 双击新的挖掘结构以在设计器中打开它。 请注意,挖掘模型也都已被复制,并且都具有扩展名为 1。 目前保持名称不变。

  6. 在“ 挖掘结构 ”选项卡中,右键单击服务等级的列,然后选择“ 属性”。

  7. Content 属性从 “连续 ”更改为 “离散化”。 将 DiscretizationMethod 属性更改为 Clusters。 对于离散化 BucketCount,请键入 3

    注释

    这些参数仅用于说明过程,不一定生成有效的模型,

  8. “挖掘模型 ”菜单中,选择“ 进程结构”和“所有模型”。

以下示例查询基于此离散化模型,并预测一周指定日期的服务等级,以及每个预测结果的概率。

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 课:构建神经网络和逻辑回归模型(中间数据挖掘教程)