线性回归模型查询示例
适用于: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 决策树算法技术参考。
内容查询
预测查询
线性回归模型的结构极其简单:挖掘模型将数据表示为定义回归公式的单个节点。 有关详细信息,请参阅 逻辑回归模型的挖掘模型内容 (Analysis Services - 数据挖掘) 。
通过查询数据挖掘架构行集,您可找到模型的元数据。 这包括模型创建时间、上次处理模型时间、模型所基于的挖掘结构的名称以及指定为可预测属性的列的名称。 您还可以返回首次创建模型时所使用的参数。
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。
下面的查询返回一个线性回归模型的挖掘模型内容,该回归模型是通过使用 Basic Data Mining Tutorial中使用的目标邮件数据源创建的。 此模型基于年龄预测客户收入。
查询返回包含回归公式的节点的内容。 所有变量和系数均存储在嵌套表 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 - 数据挖掘) 。
通过使用 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 实例上的任何挖掘模型。
创建针对回归模型的单个查询的最简便方法是使用 “单独查询输入” 对话框。 例如,生成下面的 DMX 查询可以使用以下方法:先选择相应的回归模型,再选择“单独查询” ,然后在 Age 中键入 20。
SELECT [LR_PredictIncome].[Yearly Income]
From [LR_PredictIncome]
NATURAL PREDICTION JOIN
(SELECT 20 AS [Age]) AS t
示例结果:
Yearly Income |
---|
45227.302092176 |
您可以对线性回归模型使用许多标准预测函数。 下面的示例演示如何向预测查询结果中添加说明性统计信息。 您可以从这些结果发现此模型的均值的偏差非常大。
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 - 数据挖掘)