线性回归模型查询示例

适用于:SQL Server 2019 及更早版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

数据挖掘在 SQL Server 2017 Analysis Services 中已弃用,现在在 SQL Server 2022 Analysis Services 中已停止使用。 对于已弃用和停止使用的功能,文档不会更新。 若要了解详细信息,请参阅 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:检索模型的回归公式

下面的查询返回一个线性回归模型的挖掘模型内容,该回归模型是通过使用 Basic Data Mining Tutorial中使用的目标邮件数据源创建的。 此模型基于年龄预测客户收入。

查询返回包含回归公式的节点的内容。 所有变量和系数均存储在嵌套表 NODE_DISTRIBUTION 的单独行中。 如果要查看完整的回归公式,请使用 Microsoft 树查看器,单击“(全部)”节点,然后打开“挖掘图例”。

SELECT FLATTENED NODE_DISTRIBUTION as t  
FROM LR_PredictIncome.CONTENT  

注意

如果通过使用查询(如 SELECT <column name> from NODE_DISTRIBUTION)来引用嵌套表的单个列,则必须将某些列(如 SUPPORTPROBABILITY)用括号括起来,以将它们与同名的保留字区分开。

预期的结果:

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 和 SQL Server Data Tools 中都可用。

注意

还可以使用 SQL Server 2005 (9.x) Excel 数据挖掘加载项或 excel SQL Server 2008 数据挖掘外接程序创建回归模型的查询。 即使 Excel 数据挖掘外接程序不创建回归模型,您也可以浏览和查询存储在 SQL Server Analysis Services 实例上的任何挖掘模型。

返回到顶部

示例查询 4:使用单独查询预测收入

创建针对回归模型的单个查询的最简便方法是使用 “单独查询输入” 对话框。 例如,生成下面的 DMX 查询可以使用以下方法:先选择相应的回归模型,再选择“单独查询” ,然后在 Age 中键入 20

SELECT [LR_PredictIncome].[Yearly Income]  
From   [LR_PredictIncome]  
NATURAL PREDICTION JOIN  
(SELECT 20 AS [Age]) AS t  

示例结果:

Yearly Income
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  

示例结果:

Yearly Income StDev1
45227.302092176 31827.1726561396

返回到顶部

预测函数的列表

所有 Microsoft 算法都支持一组通用函数。 但是,Microsoft 线性回归算法支持下表中列出的其他函数。

预测函数 使用情况
IsDescendant (DMX) 确定一个节点是否是模型中另一个节点的子节点。
IsInNode (DMX) 指示指定的节点是否包含当前事例。
PredictHistogram (DMX) 返回指定列的一个预测值或一组值。
PredictNodeId (DMX) 返回每个事例的 Node_ID。
PredictStdev (DMX) 返回预测值的标准偏差。
PredictSupport (DMX) 返回指定状态的支持值。
PredictVariance (DMX) 返回指定列的方差。

有关所有 Microsoft 算法通用函数的列表,请参阅 Data Mining Algorithms (Analysis Services - Data Mining) 。 有关如何使用这些函数的详细信息,请参阅 数据挖掘扩展插件 (DMX) 函数参考

另请参阅

Microsoft 线性回归算法
数据挖掘查询
Microsoft 线性回归算法技术参考
线性回归模型的挖掘模型内容(Analysis Services - 数据挖掘)