针对数据挖掘模型创建查询时,可以创建内容查询,该查询提供有关分析中发现的模式的详细信息,也可以创建预测查询,该查询使用模型中的模式对新数据进行预测。 例如,内容查询可能提供有关回归公式的其他详细信息,而预测查询可能会告诉你新数据点是否适合模型。 还可以使用查询检索有关模型的元数据。
本部分介绍如何为基于Microsoft线性回归算法的模型创建查询。
注释
由于线性回归基于Microsoft决策树算法的特殊情况,因此有许多相似之处,并且某些使用连续可预测属性的决策树模型可以包含回归公式。 有关详细信息,请参阅 Microsoft决策树算法技术参考。
内容查询
预测查询
查找有关线性回归模型的信息
线性回归模型的结构非常简单:挖掘模型将数据表示为单个节点,该节点定义回归公式。 有关详细信息,请参阅逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。
示例查询 1:使用数据挖掘架构行集确定用于模型的参数
通过查询数据挖掘架构行集,可以找到有关模型的元数据。 这可能包括创建模型、上次处理模型时、模型所基于的挖掘结构的名称以及指定为可预测属性的列的名称。 还可以返回首次创建模型时使用的参数。
SELECT MINING_PARAMETERS
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_PredictIncome'
示例结果:
挖矿参数 |
---|
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.概率 | t.方差 | t.VALUETYPE |
---|---|---|---|---|---|
年收入 | 失踪 | 0 | 0.000457142857142857 | 0 | 1 |
年收入 | 57220.8876687257 | 17484 | 0.999542857142857 | 1041275619.52776 | 3 |
年龄 | 471.687717702463 | 0 | 0 | 126.969442359327 | 7 |
年龄 | 234.680904692439 | 0 | 0 | 0 | 8 |
年龄 | 45.4269617936399 | 0 | 0 | 126.969442359327 | 9 |
35793.5477381267 | 0 | 0 | 1012968919.28372 | 11 |
相比之下,在 挖掘图例中,回归公式如下所示:
年收入 = 57,220.919 + 471.688 * (年龄 - 45.427)
您可以看到,在挖掘图例中,某些数字是舍入的,但是节点分布表和挖掘图例实质上包含相同的值。
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_预测收入 | 35793.5477381267 | 11 |
从线性回归模型进行预测
可以使用数据挖掘设计器中的“挖掘模型预测”选项卡针对线性回归模型生成预测查询。 预测查询生成器可在 SQL Server Management Studio 和 SQL Server Data Tools (SSDT)中使用。
注释
还可以使用适用于 Excel 的 SQL Server 2005 数据挖掘外接程序或适用于 Excel 的 SQL Server 2008 数据挖掘外接程序创建对回归模型的查询。 即使 Excel 的数据挖掘外接程序不创建回归模型,也可以浏览和查询存储在 Analysis Services 实例中的任何挖掘模型。
示例查询 4:使用单一查询进行收入预测
在回归模型中创建单个查询的最简单方法是使用 “单一实例查询输入 ”对话框。 例如,可以通过选择适当的回归模型、选择 Singleton 查询,然后键入 20
为 Age 的值来生成以下 DMX 查询。
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线性回归算法支持下表中列出的其他函数。
预测函数 | 用法 |
IsDescendant (DMX) | 确定一个节点是否是模型中另一个节点的子节点。 |
IsInNode (DMX) | 指示指定的节点是否包含当前案例。 |
PredictHistogram (DMX) | 返回指定列的预测值或值集。 |
PredictNodeId (DMX) | 返回每个事例的Node_ID。 |
PredictStdev (DMX) | 返回预测值的标准偏差。 |
PredictSupport (DMX) | 返回指定状态的支持值。 |
PredictVariance (DMX) | 返回指定列的方差。 |
有关所有Microsoft算法通用的函数的列表,请参阅数据挖掘算法(Analysis Services - 数据挖掘)。 有关如何使用这些函数的详细信息,请参阅 数据挖掘扩展插件 (DMX) 函数参考。
另请参阅
Microsoft线性回归算法
数据挖掘查询
Microsoft线性回归算法技术参考
线性回归模型的模型内容挖掘(Analysis Services - 数据挖掘)