逻辑回归模型查询示例

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

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

内容查询

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

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

预测查询

对连续值进行预测

对离散值进行预测

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

逻辑回归模型是使用带有一组特殊参数的 Microsoft 神经网络算法创建的;因此,逻辑回归模型具有某些与神经网络模型相同的信息,但是会简单些。 若要了解模型内容的结构以及哪些节点类型存储哪类信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)

若要继续探讨查询方案,可以按“数据挖掘中级教程”中的下一节第 5 课:生成神经网络模型和逻辑回归模型(数据挖掘中级教程)所述,创建逻辑回归模型。

还可以使用数据挖掘基础教程中的挖掘结构 Targeted Mailing。

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

DATE_CREATED

MINING_PARAMETERS

Call Center_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)。 此示例查询使用 Targeted Mailing 模型,并通过从嵌套表 NODE_DISTRIBUTION 中检索所有输入的值来获取这些值。

SELECT FLATTENED NODE_DISTRIBUTION AS t
FROM [TM_Logistic Regression].CONTENT 

部分结果:

t.ATTRIBUTE_NAME

t.ATTRIBUTE_VALUE

t.SUPPORT

t.PROBABILITY

t.VARIANCE

t.VALUETYPE

年龄

缺失

0

0

0

1

年龄

45.43491192

17484

1

126.9544114

3

Bike Buyer

缺失

0

0

0

1

Bike Buyer

0

8869

0.507263784

0

4

Bike Buyer

1

8615

0.492736216

0

4

上下班路程

缺失

0

0

0

1

上下班路程

5-10 Miles

3033

0.173472889

0

4

实际查询会返回多得多的行;但是此示例演示了所提供的有关输入的信息类型。 对于离散输入,每个可能值都列在表中。 对于 Age 之类的连续值输入,全部列出是不可能的,所以输入被离散化为均值。 有关如何使用边际统计信息节点中信息的详细信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)

注意注意

为便于查看,结果是平展的,但是,如果您的访问接口支持分层行集,则可在单个列中返回嵌套表。 有关详细信息,请参阅“OLE DB Programmer's Guide”(OLE DB 程序员参考)中的 Hierarchical Rowsets(层次结构行集)。

返回页首

针对逻辑回归模型的预测查询

您对每种挖掘模型都可以使用 Predict (DMX) 函数向模型提供新数据并基于新值进行预测。 还可以使用函数返回有关预测的其他信息,例如,预测正确性的概率。 本节提供针对逻辑回归模型的预测查询的一些示例。

示例查询 3:对连续值进行预测

由于逻辑回归支持在输入和预测中都使用连续属性,因此可以轻松地在您的数据中创建与各种因素相关的模型。 您可以使用预测查询来探查这些因素之间的关系。

以下查询示例基于中级教程中的 Call Center(呼叫中心)模型,并创建了预测 Friday AM shift(周五早班)的服务等级的单独查询。 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

Service Grade

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

$VARIANCE

$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,但实际生活中您还是希望设置该模型来预测服务等级是否符合特定的离散化目标值。 或者,您可以使用连续值来输出预测,但之后将这些预测结果分组到较好、一般或较差这几个等级中。

下面的示例演示如何更改可预测属性的分组方式。 若要执行此操作,您需要复制挖掘结构,然后更改目标列的离散化方法,以便值归入各分组而不是连续的。

以下过程介绍如何更改呼叫中心数据中的 Service Grade 值的分组。

创建 Call Center 挖掘结构和模型的离散化版本

  1. 在 SQL Server Data Tools (SSDT) 的解决方案资源管理器中,展开**“挖掘结构”**。

  2. 右键单击 Call Center.dmm,然后选择**“复制”**。

  3. 右键单击**“挖掘结构”,然后选择“粘贴”**。 将添加名为 Call Center 1 的新挖掘结构。

  4. 右键单击新的挖掘结构,然后选择**“重命名”**。 键入新名称 Call Center Discretized。

  5. 双击新的挖掘结构以在设计器中将其打开。 请注意,随之复制了所有挖掘模型,并且都具有扩展名 1。 暂时将这些名称保留原样。

  6. 在**“挖掘结构”选项卡中,右键单击 Service Grade 对应的列,然后选择“属性”**。

  7. 将 Content 属性从**“连续”更改为“离散化”。 将 DiscretizationMethod 属性更改为“分类”**。 对于 Discretization 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  

预期的结果:

预测

Service Grade

$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 逻辑回归算法技术参考

逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)

概念

数据挖掘查询

Microsoft 逻辑回归算法

第 5 课:生成神经网络模型和逻辑回归模型(数据挖掘中级教程)