查询线性回归模型(Analysis Services - 数据挖掘)
创建针对数据挖掘模型的查询时,您既可以创建内容查询,也可以创建预测查询。内容查询提供有关分析过程中发现的模式的详细信息,而预测查询则使用模型中的模式来对新数据进行预测。例如,内容查询可能会提供有关回归公式的更多详细信息,而预测查询则可能会告诉您新数据点是否适合模型。您还可以使用查询来检索有关模型的元数据。
本节介绍如何针对基于 Microsoft 线性回归算法的模型创建查询。
注意 |
---|
由于线性回归基于 Microsoft 决策树算法的特殊情况,因而会存在诸多相似性,且某些使用连续可预测属性的决策树模型可包含回归公式。有关详细信息,请参阅 Microsoft 决策树算法技术参考。 |
内容查询
使用数据挖掘架构行集确定用于模型的参数
使用 DMX 返回模型的回归公式
仅返回模型的系数
预测查询
使用单独查询预测收入
对回归模型使用预测函数
查找有关线性回归模型的信息
线性回归模型的结构极其简单:挖掘模型将数据表示为定义回归公式的单个节点。有关详细信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。
返回页首
示例查询 1:使用数据挖掘架构行集确定用于模型的参数
通过查询数据挖掘架构行集,您可找到模型的元数据。这包括模型创建时间、上次处理模型时间、模型所基于的挖掘结构的名称以及指定为可预测属性的列的名称。您还可以返回首次创建模型时所使用的参数。
SELECT MINING_PARAMETERS
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_PredictIncome'
示例结果:
MINING_PARAMETERS |
---|
COMPLEXITY_PENALTY=0.9, MAXIMUM_INPUT_ATTRIBUTES=255, MAXIMUM_OUTPUT_ATTRIBUTES=255, MINIMUM_SUPPORT=10, SCORE_METHOD=4, SPLIT_METHOD=3, FORCE_REGRESSOR= |
注意 |
---|
参数设置“FORCE_REGRESSOR =”指示参数 FORCE_REGRESSOR 的当前值为 Null。 |
返回页首
示例查询 2:检索模型的回归公式
下面的查询返回一个线性回归模型的挖掘模型内容,该回归模型是通过使用数据挖掘基础教程中使用的目标邮件数据源创建的。此模型基于年龄预测客户收入。
查询返回包含回归公式的节点的内容。所有变量和系数均存储在嵌套表 NODE_DISTRIBUTION 的单独行中。如果要查看完整的回归公式,请使用 Microsoft 树查看器,单击**“(全部)”节点,然后打开“挖掘图例”**。
SELECT FLATTENED NODE_DISTRIBUTION as t
FROM LR_PredictIncome.CONTENT
注意 |
---|
如果通过使用查询(如 SELECT <column name> from NODE_DISTRIBUTION)来引用嵌套表的单个列,则必须将某些列(如 SUPPORT 或 PROBABILITY)用括号括起来,以将它们与同名的保留字区分开。 |
预期的结果:
t.ATTRIBUTE_NAME |
t.ATTRIBUTE_VALUE |
t.SUPPORT |
t.PROBABILITY |
t.VARIANCE |
t.VALUETYPE |
---|---|---|---|---|---|
Yearly Income |
Missing |
0 |
0.000457142857142857 |
0 |
1 |
Yearly Income |
57220.8876687257 |
17484 |
0.999542857142857 |
1041275619.52776 |
3 |
Age |
471.687717702463 |
0 |
0 |
126.969442359327 |
7 |
Age |
234.680904692439 |
0 |
0 |
0 |
8 |
Age |
45.4269617936399 |
0 |
0 |
126.969442359327 |
9 |
|
35793.5477381267 |
0 |
0 |
1012968919.28372 |
11 |
我们来做个比较,在**“挖掘图例”**中,该回归公式显示如下:
Yearly Income = 57,220.919 + 471.688 * (Age - 45.427)
可看出在**“挖掘图例”中,对某些数值进行了舍入;但 NODE_DISTRIBUTION 表与“挖掘图例”**实际上包含的是相同的值。
VALUETYPE 列中的值可告诉您每一行所包含的信息的类型,这在以编程方式处理结果时很有用。下表给出了一个线性回归公式的输出值的类型。
VALUETYPE |
---|
1(缺失) |
3(连续) |
7(系数) |
8(得分) |
9(统计信息) |
7(系数) |
8(得分) |
9(统计信息) |
11(截距) |
有关回归模型的每种值类型含义的详细信息,请参阅线性回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。
返回页首
示例查询 3:仅返回模型的系数
通过使用 VALUETYPE 枚举,您可以仅返回回归公式的系数,如下面的查询所示:
SELECT FLATTENED MODEL_NAME,
(SELECT ATTRIBUTE_VALUE, VALUETYPE
FROM NODE_DISTRIBUTION
WHERE VALUETYPE = 11)
AS t
FROM LR_PredictIncome.CONTENT
此查询返回两行:一行来自挖掘模型内容,另一行来自包含系数的嵌套表。此处未包括 ATTRIBUTE_NAME 列,因为对于系数,该列始终为空。
MODEL_NAME |
t.ATTRIBUTE_VALUE |
t.VALUETYPE |
---|---|---|
LR_PredictIncome |
|
|
LR_PredictIncome |
35793.5477381267 |
11 |
返回页首
根据线性回归模型进行预测
您可以使用数据挖掘设计器中的“挖掘模型预测”选项卡来生成针对线性回归模型的预测查询。您可从 SQL Server Management Studio 和 Business Intelligence Development Studio 使用预测查询生成器。
注意 |
---|
此外,您还可以通过使用 SQL Server 2005 Excel 数据挖掘外接插件或 SQL Server 2008 Excel 数据挖掘外接插件来创建针对回归模型的查询。即使 Excel 数据挖掘外接插件无法创建回归模型,您也可以浏览并查询 Analysis Services 实例中所存储的所有模型。 |
返回页首
示例查询 4:使用单独查询预测收入
创建针对回归模型的单个查询的最简便方法是使用**“单独查询输入”对话框。例如,生成下面的 DMX 查询可以使用以下方法:先选择相应的回归模型,再选择“单独查询”**,然后在 Age 中键入 20。
SELECT [LR_PredictIncome].[Yearly Income]
From [LR_PredictIncome]
NATURAL PREDICTION JOIN
(SELECT 20 AS [Age]) AS t
示例结果:
年收入 |
---|
45227.302092176 |
返回页首
示例查询 5:对回归模型使用预测函数
您可以对线性回归模型使用许多标准预测函数。下面的示例演示如何向预测查询结果中添加说明性统计信息。您可以从这些结果发现此模型的均值的偏差非常大。
SELECT
([LR_PredictIncome].[Yearly Income]) as [PredIncome],
(PredictStdev([LR_PredictIncome].[Yearly Income])) as [StDev1]
From
[LR_PredictIncome]
NATURAL PREDICTION JOIN
(SELECT 20 AS [Age]) AS t
示例结果:
年收入 |
StDev1 |
---|---|
45227.302092176 |
31827.1726561396 |
返回页首
预测函数的列表
所有 Microsoft 算法均支持一组通用的函数。此外,Microsoft 线性回归算法还额外支持下表中列出的函数。
|
有关所有 Microsoft 算法都支持的通用函数的列表,请参阅数据挖掘算法(Analysis Services – 数据挖掘)。有关如何使用这些函数的详细信息,请参阅 数据挖掘扩展插件 (DMX) 函数参考。