使用基础挖掘结构中的数据设计和处理挖掘模型后,挖掘模型已完成并包含 挖掘模型内容。 可以使用此内容进行预测或分析数据。
挖掘模型内容包括有关模型的元数据、有关数据的统计信息以及挖掘算法发现的模式。 根据所使用的算法,模型内容可能包括回归公式、规则和项集的定义,或权重和其他统计信息。
无论使用的算法如何,挖掘模型内容都以标准结构显示。 可以在 SQL Server Data Tools (SSDT)中提供的Microsoft通用内容树查看器中浏览结构,然后切换到其中一个自定义查看器,以查看如何以图形方式解释和显示每个模型类型的信息。 还可以使用支持MINING_MODEL_CONTENT架构行集的任何客户端针对挖掘模型内容创建查询。 有关详细信息,请参阅数据挖掘查询任务和操作方法。
本部分介绍为各种挖掘模型提供的内容的基本结构。 它描述所有挖掘模型内容通用的节点类型,并提供有关如何解释信息的指导。
挖掘模型内容的结构
每个模型的内容显示为一系列 节点。 节点是挖掘模型中的对象,其中包含有关部分模型的元数据和信息。 节点在层次结构中排列。 层次结构中节点的确切排列以及层次结构的含义取决于所使用的算法。 例如,如果创建决策树模型,该模型可以包含多个树,所有树都连接到模型根;如果创建神经网络模型,则模型可能包含一个或多个网络,以及统计信息节点。
每个模型中的第一个 节点称为根节点或 模型父 节点。 每个模型都有一个根节点(NODE_TYPE = 1)。 根节点通常包含有关模型的一些元数据和子节点的数量,但有关模型发现的模式的其他信息很少。
根节点具有不同数量的子节点,具体取决于用于创建模型的算法。 子节点的含义不同,包含不同的内容,具体取决于算法和数据深度和复杂性。
挖掘模型内容中的节点
在挖掘模型中,节点是一个常规用途容器,用于存储有关模型的所有或部分的信息。 每个节点的结构始终相同,并包含数据挖掘架构行集定义的列。 有关详细信息,请参阅 DMSCHEMA_MINING_MODEL_CONTENT 行集。
每个节点包括有关节点的元数据,包括每个模型中唯一的标识符、父节点的 ID 以及节点具有的子节点数。 元数据标识节点所属的模型,以及存储该特定模型的数据库目录。 节点中提供的其他内容因用于创建模型的算法类型而异,可能包括:
支持特定预测值的训练数据中的事例计数。
统计信息,例如平均值、标准偏差或方差。
系数和公式。
规则的定义和横向指针。
描述模型的一部分的 XML 片段。
挖掘内容节点类型列表
下表列出了数据挖掘模型中输出的不同类型的节点。 由于每个算法以不同的方式处理信息,因此每个模型只生成几个特定的节点类型。 如果更改算法,则节点的类型可能会更改。 此外,如果重新处理模型,则每个节点的内容可能会更改。
注释
如果使用的数据挖掘服务不同于 SQL Server 2014 Analysis Services (SSAS)中提供的数据挖掘服务,或者创建自己的插件算法,则可以使用其他自定义节点类型。
NODE_TYPE ID | 节点标签 | 节点内容 |
---|---|---|
1 | 型号 | 元数据与根内容节点 适用于所有模型类型。 |
2 | 树 | 分类树的根节点。 适用于决策树模型。 |
3 | 内部 | 树中的内部分裂节点。 适用于决策树模型。 |
4 | 分销 | 树的终端节点。 适用于决策树模型。 |
5 | 集群 | 算法检测到的群集。 适用于聚类分析模型和顺序聚类分析模型。 |
6 | 未知 | 未知节点类型。 |
7 | 项目集 | 算法检测到的项集。 适用于关联模型或顺序聚类分析模型。 |
8 | AssociationRule | 算法检测到的关联规则。 适用于关联模型或顺序聚类分析模型。 |
9 | 可预测属性 | 可预测属性。 适用于所有模型类型。 |
10 | 输入属性 | 输入属性。 适用于决策树和 Naïve Bayes 模型。 |
11 | InputAttributeState | 有关输入属性状态的统计信息。 适用于决策树和 Naïve Bayes 模型。 |
13 | 序列 | 序列簇的 Markov 模型组件的顶层节点。 适用于序列聚类分析模型。 |
14 | 过渡 | Markov 转换矩阵。 适用于序列聚类分析模型。 |
15 | TimeSeries | 时序树的非根节点。 仅适用于时序模型。 |
16 | TsTree | 对应于可预测时序的时序树的根节点。 适用于时序模型,仅当模型是使用 MIXED 参数创建的。 |
十七 | NNetSubnetwork | 一个子网络。 适用于神经网络模型。 |
18 | NNetInputLayer | 包含输入层节点的组。 适用于神经网络模型。 |
19 | NNetHiddenLayer | 包含描述隐藏层的节点的组。 适用于神经网络模型。 |
21 | 神经网络输出层 | 包含输出层节点的组。 适用于神经网络模型。 |
21 | NNetInputNode | 与具有相应状态的输入属性匹配的输入层中的节点。 适用于神经网络模型。 |
22 | NNetHiddenNode | 隐藏层中的节点。 适用于神经网络模型。 |
23 | NNetOutputNode | 输出层中的节点。 此节点通常与输出属性和相应的状态匹配。 适用于神经网络模型。 |
24 | NNetMarginalNode | 有关训练集的边际统计信息。 适用于神经网络模型。 |
二十五 | RegressionTreeRoot | 回归树的根。 适用于线性回归模型和包含连续输入属性的决策树模型。 |
26 | NaiveBayesMarginalStatNode | 有关训练集的边际统计信息。 适用于 Naïve Bayes 模型。 |
二十七 | ArimaRoot | ARIMA 模型的根节点。 仅适用于使用 ARIMA 算法的时序模型。 |
28 | ArimaPeriodicStructure | ARIMA 模型中的定期结构。 仅适用于使用 ARIMA 算法的时序模型。 |
二十九 | ArimaAutoRegressive | ARIMA 模型中单个术语的自动回归系数。 仅适用于使用 ARIMA 算法的时序模型。 |
30 | ARIMA移动平均 | ARIMA 模型中单个字词的移动平均系数。 仅适用于使用 ARIMA 算法的时序模型。 |
1000 | CustomBase | 自定义节点类型的起点。 自定义节点类型的值必须大于此常量。 适用于使用自定义插件算法创建的模型。 |
节点 ID、名称、标题和说明
任何模型的根节点始终具有唯一 ID (NODE_UNIQUE_NAME) 0。 所有节点 ID 都由 Analysis Services 自动分配,无法修改。
每个模型的根节点还包含有关模型的一些基本元数据。 此元数据包括存储模型的 Analysis Services 数据库(MODEL_CATALOG)、架构(MODEL_SCHEMA)和模型的名称(MODEL_NAME)。 但是,在模型的所有节点中重复此信息,因此无需查询根节点以获取此元数据。
除了用作唯一标识符的名称外,每个节点都有一个 名称 (NODE_NAME)。 此名称由算法自动创建,用于显示目的,无法编辑。
注释
Microsoft聚类分析算法允许用户为每个群集分配友好名称。 但是,这些友好名称不会保留在服务器上,如果重新处理模型,该算法将生成新的群集名称。
每个节点的 标题 和 说明 由算法自动生成,并充当标签来帮助了解节点的内容。 为每个字段生成的文本取决于模型类型。 在某些情况下,名称、标题和说明可能包含完全相同的字符串,但在某些模型中,说明可能包含其他信息。 有关实现的详细信息,请参阅有关单个模型类型的主题。
注释
仅当使用实现重命名的自定义插件算法生成模型时,Analysis Services 服务器才支持重命名节点。 若要启用重命名,必须在创建插件算法时重写方法。
节点父级、节点子级和节点基数性
树结构中的父节点和子节点之间的关系取决于PARENT_UNIQUE_NAME列的值。 此值存储在子节点中,并告知父节点的 ID。 下面是如何使用此信息的一些示例:
为 NULL 的PARENT_UNIQUE_NAME表示节点是模型的顶部节点。
如果PARENT_UNIQUE_NAME值为 0,则节点必须是模型中顶部节点的直接后代。 这是因为根节点的 ID 始终为 0。
可以使用数据挖掘扩展插件(DMX)查询中的函数来查找特定节点的后代或父级。 有关在查询中使用函数的详细信息,请参阅 数据挖掘查询。
基数 是指一个集合中的项的数量。 在经过处理的挖掘模型的上下文中,节点基数会告知特定节点中的子节点数量。 例如,如果决策树模型具有 [Yearly Income] 的节点,并且该节点有两个子节点,一个用于条件 [Yearly Income] = High,而条件为 2,[Yearly Income] = Low,则 [Yearly Income] 节点的CHILDREN_CARDINALITY值为 2。
注释
在 Analysis Services 中,计算节点基数时,只会计算直接子节点。 但是,如果您创建自定义插件算法,则可以重载CHILDREN_CARDINALITY来以不同的方法计算基数。 例如,如果要计算后代总数,而不仅仅是直接子级,这可能很有用。
尽管所有模型的基数按相同的方式进行计数,但解释或使用基数值的方式因模型类型而异。 例如,在聚类分析模型中,顶部节点的基数指示找到的群集总数。 在其他类型的模型中,基数可能始终有一个设置值,具体取决于节点类型。 有关如何解释基数的详细信息,请参阅有关单个模型类型的主题。
注释
某些模型(如由Microsoft神经网络算法创建的模型)还包含一种特殊的节点类型,该节点类型提供有关整个模型的训练数据的描述性统计信息。 根据定义,这些节点永远不会有子节点。
节点分布
NODE_DISTRIBUTION列包含一个嵌套表,该表在许多节点中提供了有关算法发现的模式的重要信息和详细信息。 此表中提供的确切统计信息会根据模型类型、节点在树中的位置以及可预测属性是连续数值还是离散值而变化;但是,它们可以包括属性的最小值和最大值、分配给值的权重、节点中的事例数、回归公式中使用的系数,以及标准偏差和方差等统计度量值。 有关如何解释节点分布的详细信息,请参阅你正在使用的特定类型的模型类型的主题。
注释
NODE_DISTRIBUTION表可能为空,具体取决于节点类型。 例如,某些节点仅用于组织子节点的集合,它是包含详细统计信息的子节点。
嵌套表 NODE_DISTRIBUTION 始终包含以下列字段。 每个列的内容因模型类型而异。 有关特定模型类型的详细信息,请参阅 “按算法类型挖掘模型内容”。
属性名称
内容因算法而异。 可以是列的名称,例如可预测属性、规则、项集或算法内部的信息片段,例如公式的一部分。
此列还能够包含属性-值对。
ATTRIBUTE_VALUE
ATTRIBUTE_NAME中命名的属性的值。
如果属性名称为列,则最直接的情况下,ATTRIBUTE_VALUE包含该列的离散值之一。
根据算法处理值的方式,ATTRIBUTE_VALUE还可以包含一个标志,该标志指示属性是否存在值(Existing
),或者该值是否为 null(Missing
)。
例如,如果你的模型设置为查找至少购买过一次特定项的客户,则ATTRIBUTE_NAME列可能包含定义感兴趣的项的属性值对,例如 Model = 'Water bottle'
,ATTRIBUTE_VALUE列将仅包含关键字 Existing
或 Missing
。
Support
具有此属性值对或包含此项集或规则的事例计数。
通常,对于每个节点,支持值会告诉您在这个节点中包含训练集中的案例数。 在大多数模型类型中,支持表示事例的确切计数。 支持值很有用,因为你可以在训练事例中查看数据的分布,而无需查询训练数据。 Analysis Services 服务器还使用这些存储的值来计算存储的概率与以前的概率,以确定推理是强还是弱。
例如,在分类树中,支持值指示具有描述的属性组合的事例数。
在决策树中,树的每个级别的支持总和与其父节点的支持相加。 例如,如果包含 1200 个案例的模型按性别平均划分,然后按照收入类别低、中和高进行细分(即节点(4)、(5)和(6)的子节点),这些节点始终总和为与节点(2)相同的案例数。
节点 ID 和节点属性 | 支持数 |
---|---|
(1)模型根 | 1200 |
(2) 性别 = 男性 (3) 性别 = 女性 |
600 600 |
(4) 性别 = 男性和收入 = 高 (5) 性别 = 男性和收入 = 中等 (6) 性别 = 男性和收入 = 低 |
200 200 200 |
(7) 性别 = 女性和收入 = 高 (8) 性别 = 女性和收入 = 中等 (9) 性别 = 女性和收入 = 低 |
200 200 200 |
对于聚类分析模型,支持数可以加权,以包括属于多个分类的概率。 多重群集成员资格是默认聚类方法。 在此方案中,由于每个事例不一定仅属于一个群集,因此这些模型中的支持度可能不会在所有群集中总计达到100%。
概率
指示整个模型中此特定节点的概率。
通常,概率表示对此特定值的支持,除以节点内事例总数(NODE_SUPPORT)。
但是,概率会稍有调整,以消除数据中缺失值导致的偏差。
例如,如果 [Total Children] 的当前值为“一”和“二”,则希望避免创建一个预测模型,该模型认为不可能没有孩子或不可能有三个孩子。 为了确保缺失值不太可能出现,但并非不可能,算法始终在任何属性的实际值计数中增加 1。
示例:
[总孩子数 = 一] 的概率 = [总孩子数 = 一] 的案例数 + 1/[所有案例的总数] + 3
[总孩子数 = 二]的概率 = [总孩子数 = 二]的案例数量 + 1 / [所有案例的数量] + 3
注释
计算调整值时,将 1 加到现有值的总数量 n 上以得到计算结果为 3。
调整后,所有值的概率仍高达 1。 没有数据的值的概率(在此示例中,[Total Children = 'Zero', 'Three', or some other value]),从非常低的非零级别开始,并且随着添加更多事例而缓慢上升。
方差
指示节点中值的方差。 根据定义,对于离散值,方差始终为 0。 如果模型支持连续值,则使用分母 n 或节点中的事例数将方差计算为σ(sigma)。
一般使用两个定义来表示标准偏差(StDev
)。 用于计算标准偏差的一种方法考虑到偏差,另一种方法计算标准偏差而不使用偏差。 通常,Microsoft数据挖掘算法在计算标准偏差时不使用偏差。
NODE_DISTRIBUTION表中显示的值是所有离散和离散化属性的实际值,以及连续值的平均值。
VALUE_TYPE
指示值或属性的数据类型以及值的用法。 某些值类型仅适用于某些模型类型:
值类型ID | 值标签 | 值类型名称 |
---|---|---|
1 | 失踪 | 指示事例数据不包含此属性的值。 状态 Missing 与具有值的属性分开计算。 |
2 | 现存 | 指示事例数据包含此属性的值。 |
3 | 连续的 | 指示特性的值是连续数值,因此可以通过平均值表示,以及方差和标准偏差。 |
4 | 离散 | 表示一个被视作离散的值(可以是数字或文本)。 注意 离散值也可能缺失;但是,在进行计算时,它们以不同的方式进行处理。 有关信息,请参阅“缺失值”(Analysis Services - 数据挖掘)。 |
5 | 离散化 | 指示特性包含已离散化的数值。 该值将是描述离散化存储桶的格式化字符串。 |
6 | 现存 | 指示属性具有连续的数值,并且数据中提供了实际的数值,而不是缺失或推断的值。 |
7 | 系数 | 指示表示系数的数值。 系数是计算依赖变量的值时应用的值。 例如,如果模型创建一个回归公式来预测基于年龄的收入,则系数用于将年龄与收入相关的公式中。 |
8 | 分数提升 | 表示与属性相关的分数增益的数值。 |
9 | 统计学 | 指示表示回归器的统计信息的数值。 |
10 | 节点唯一名称 | 指示不应将值作为数字或字符串进行处理,而不应作为模型中另一内容节点的唯一标识符进行处理。 例如,在神经网络模型中,ID 提供从输出层中的节点到隐藏层中的节点的指针,以及从隐藏层中的节点到输入层中的节点。 |
11 | 拦截 | 指示表示回归公式中的截距的数值。 |
12 | 周期 | 指示值表示模型中的定期结构。 仅适用于包含 ARIMA 模型的时序模型。 注意:Microsoft时间序列算法根据训练数据自动检测周期性结构。 因此,最终模型中的周期性可能包括创建模型时未作为参数提供的周期值。 |
13 | 自动回归顺序 | 指示值表示自动回归序列的数目。 适用于使用 ARIMA 算法的时序模型。 |
14 | 移动平均序列 | 表示一个值,该值表示序列中移动平均值的数目。 适用于使用 ARIMA 算法的时序模型。 |
15 | 差异顺序 | 指示值表示一个值,该值指示序列的区分次数。 适用于使用 ARIMA 算法的时序模型。 |
16 | 布尔型 | 表示布尔类型。 |
十七 | 其他 | 表示算法定义的自定义值。 |
18 | 预呈现字符串 | 表示算法呈现为字符串的自定义值。 对象模型未应用任何格式设置。 |
值类型派生自 ADMOMD.NET 枚举。 有关详细信息,请参阅 Microsoft.AnalysisServices.AdomdServer.MiningValueType。
节点分数
节点分数的含义因模型类型而异,也可以特定于节点类型。 有关如何为每个模型和节点类型计算NODE_SCORE的信息,请参阅 按算法类型计算挖掘模型内容。
节点概率和边际概率
挖掘模型架构行集包括所有模型类型的列NODE_PROBABILITY和MARGINAL_PROBABILITY。 这些列仅在概率值有意义的节点中包含值。 例如,模型的根节点永远不会包含概率分数。
在这些提供概率分数的节点中,节点概率和边际概率表示不同的计算。
边际概率 是从父节点达到该节点的概率。
节点概率 是从根节点到达某节点的概率。
节点概率 始终小于或等于 边际概率。
例如,如果决策树中所有客户群体按性别平等地分割(且没有任何缺失值),则子节点的概率应为0.5。 但是,假设每个性别节点按收入级别(高、中和低)相等划分。 在这种情况下,每个子节点的MARGINAL_PROBABILITY分数应始终为 .33,但NODE_PROBABILTY值将是导致该节点的所有概率的乘积,因此始终小于MARGINAL_PROBABILITY值。
节点/属性和值的级别 | 边际概率 | 节点概率 |
---|---|---|
模型根 所有目标客户 |
1 | 1 |
按性别划分的目标客户 | .5 | .5 |
按性别划分的目标客户,然后再根据收入分为三类 | .33 | .5 * .33 = .165 |
节点规则和边际规则
挖掘模型架构行集还包括所有模型类型的列NODE_RULE和MARGINAL_RULE。 这些列包含可用于序列化模型的 XML 片段,或表示模型结构的某些部分。 如果某个值毫无意义,则这些列可能为空。
提供了两种类型的 XML 规则,类似于两种类型的概率值。 MARGINAL_RULE中的 XML 片段定义当前节点的属性和值,而NODE_RULE中的 XML 片段描述模型根中的当前节点的路径。
按算法类型挖掘模型内容
每个算法将不同类型的信息存储为其内容架构的一部分。 例如,Microsoft聚类分析算法生成许多子节点,每个子节点表示可能的群集。 每个群集节点都包含描述群集中项共享的特征的规则。 相比之下,Microsoft线性回归算法不包含任何子节点;相反,模型的父节点包含描述分析发现的线性关系的公式。
下表提供了每种类型的算法的主题链接。
模型内容主题: 介绍每种算法类型的每个节点类型的含义,并提供有关哪些节点最感兴趣的特定模型类型的指导。
查询主题: 提供针对特定模型类型的查询示例和有关如何解释结果的指导。
用于查看挖掘模型内容的工具
在 SQL Server Data Tools (SSDT)中浏览或浏览模型时,可以在 Microsoft通用内容树查看器中查看信息,该查看器在 SQL Server Data Tools (SSDT) 和 SQL Server Management Studio 中都可用。
Microsoft泛型内容查看器使用在挖掘模型的内容架构行集中提供的相同信息,显示模型中的列、规则、属性、节点和其他内容。 内容架构行集是一个通用框架,用于提供有关数据挖掘模型内容的详细信息。 可以在支持分层行集的任何客户端中查看模型内容。 SQL Server Data Tools (SSDT) 中的查看器在 HTML 表查看器中呈现此信息,该查看器以一致格式表示所有模型,从而更轻松地理解所创建的模型的结构。 有关详细信息,请参阅 使用Microsoft泛型内容树查看器浏览模型。
用于查询挖掘模型内容的工具
若要检索挖掘模型内容,必须针对数据挖掘模型创建查询。
创建内容查询的最简单方法是在 SQL Server Management Studio 中执行以下 DMX 语句:
SELECT * FROM [<mining model name>].CONTENT
有关详细信息,请参阅 数据挖掘查询。
还可以使用数据挖掘架构行集查询挖掘模型内容。 架构行集是客户端用于发现、浏览和查询有关挖掘结构和模型的信息的标准结构。 可以使用 XMLA、Transact-SQL 或 DMX 语句查询架构行集。
在 SQL Server 2014 中,还可以通过打开与 Analysis Services 实例的连接并查询系统表来访问数据挖掘架构行集中的信息。 有关详细信息,请参阅查询数据挖掘架构行集(Analysis Services - 数据挖掘)。