查询逻辑回归模型(Analysis Services - 数据挖掘)

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

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

内容查询

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

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

预测查询

对连续值进行预测

对离散值进行预测

查找有关逻辑回归模型的信息

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

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

还可以使用数据挖掘基础教程中的挖掘结构 Targeted Mailing。然后,通过运行以下 DMX 脚本来添加逻辑回归模型:

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

Age

缺失

0

0

0

1

Age

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

Commute Distance

缺失

0

0

0

1

Commute Distance

5-10 Miles

3033

0.173472889

0

4

实际查询会返回多得多的行;但是此示例演示了所提供的有关输入的信息类型。例如,表中列出每个可能的离散值,而连续输入是离散化的。有关如何使用边际统计信息节点中信息的详细信息,请参阅逻辑回归模型的挖掘模型内容(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

服务等级$SUPPORT$PROBABILITY$ADJUSTEDPROBABILITY$VARIANCE$STDEV
0.10260183012365983.02325581395350.98837209302325600.001205526606000870.034720694203902
0.9767441860465120.01162790697674420.011627906976744200

有关嵌套 NODE_DISTRIBUTION 表中的概率、支持和标准偏差值的详细信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)

返回页首

示例查询 4:对离散值进行预测

要分析产生二进制结果的因素时通常使用逻辑回归。尽管中级教程中使用的原始模型预测的是连续值 ServiceGrade,但实际生活中您还是希望预测服务等级是否符合特定的离散目标值。或者,您可以使用连续值来输出预测,之后将这些预测结果分组到较好、一般或较差这几个等级中。

下面的示例演示如何更改可预测属性的分组方式。为此,您生成挖掘结构的副本,然后更改目标列的离散化方法。以下过程介绍如何更改呼叫中心数据中的 Service Grade 值的分组。

创建呼叫中心挖掘结构和模型的离散化版本

  1. 在 Business Intelligence Development Studio 的解决方案资源管理器中,展开**“挖掘结构”**。

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

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

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

  5. 双击该新挖掘结构以在设计器中将其打开。请注意,挖掘模型也已全部复制,并且全都具有扩展名 1。现在保持这些名称不变。

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

  7. 将 Content 属性从 Continuous 更改为 Discretized。将 DiscretizationMethod 属性更改为 Clusters。对于 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  

预期的结果:

预测

服务等级$SUPPORT$PROBABILITY$ADJUSTEDPROBABILITY$VARIANCE$STDEV
0.1087271838312535.72465047706410.4252934580602870.017016836003029300
0.0585576923062531.70988808007030.3774986676198850.02088202006045400
0.17016949152515.61091598832020.1858442379561920.066138657138604900
0.9545454545454550.01136363636363640.011363636363636400

请注意,预测结果已分组为指定的三个类别;但是,这些分组基于数据中实际值的聚类分析,而不是可设置为业务目标的任意值。

返回页首

预测函数的列表

所有 Microsoft 算法均支持一组通用的函数,但 Microsoft 逻辑回归算法还额外支持下表中列出的函数。

有关对所有 Microsoft 算法均通用的函数的列表,请参阅将函数映射到查询类型 (DMX)。有关特定函数的语法,请参阅 数据挖掘扩展插件 (DMX) 函数参考

注意注意

对于神经网络模型和逻辑回归模型,PredictSupport (DMX) 函数将返回表示整个模型的定型集大小的单个值。