决策树模型的挖掘模型内容(Analysis Services - 数据挖掘)

本主题介绍特定于使用Microsoft决策树算法的模型的挖掘模型内容。 有关所有模型类型的挖掘模型内容的一般说明,请参阅挖掘模型内容(Analysis Services - 数据挖掘)。 请务必记住,Microsoft决策树算法是一种混合算法,可以创建具有非常不同的函数的模型:决策树可以表示关联、规则甚至线性回归。 树的结构本质上是相同的,但解释信息的方式将取决于你创建模型的目的。

了解决策树模型的结构

决策树模型具有表示模型及其元数据的单个父节点。 父节点下方是表示所选可预测属性的独立树。 例如,如果设置决策树模型来预测客户是否会购买某些内容,并为性别和收入提供输入,该模型将为购买属性创建一棵单树,其中许多分支划分了与性别和收入相关的条件。

但是,如果随后添加单独的可预测属性以参与客户奖励计划,该算法将在父节点下创建两个单独的树。 一棵树包含用于购买的分析,另一棵树包含客户奖励计划的分析。 如果使用决策树算法创建关联模型,该算法将为要预测的每个产品创建一个单独的树,并且该树包含有助于选择目标属性的所有其他产品组合。

注释

如果模型包含多个树,则一次只能在 Microsoft树查看器中查看一棵树。 但是,在 泛型内容树查看器 中,同一模型中的所有树同时显示。

决策树模型内容结构

每个可预测属性的树都包含描述所选输入列如何影响该特定可预测属性的结果的信息。 每棵树由一个节点作为树头(NODE_TYPE = 9),该节点包含可预测属性,然后是一系列节点(NODE_TYPE = 10),表示输入属性。 属性对应于案例级列或嵌套表列的值,这些值通常是嵌套表中 Key 列的值。

内部节点和叶节点表示拆分条件。 树可以在同一个属性上多次拆分。 例如,TM_DecisionTree 模型可能会首先基于[每年收入]和[儿童数量]进行拆分,然后在树的更低层次再次基于[每年收入]进行拆分。

Microsoft决策树算法还可以包含树中所有或部分的线性回归。 如果您要建模的属性是连续数值数据类型,并且属性之间的关系可以线性建模,则模型可以创建回归树节点(NODE_TYPE = 25)。 在这种情况下,节点包含回归公式。

但是,如果可预测属性具有离散值,或者数值已存储或离散化,则模型将始终创建分类树(NODE_TYPE =2)。 对于属性的每个值,分类树可以有多个分支或内部树节点(NODE_TYPE =3)。 但是,拆分不一定针对属性的每个值。

Microsoft决策树算法不允许连续数据类型作为输入;因此,如果任何列具有连续数值数据类型,这些值将被转换成离散值。 该算法在所有连续属性的拆分点执行其自己的离散化。

注释

Analysis Services 自动选择用于存储连续属性的方法;但是,可以通过将挖掘结构列的内容类型设置为 Discretized 然后设置 DiscretizationBucketCountDiscretizationMethod 属性来控制输入中的连续值是如何离散化的。

决策树模型的模型内容

本部分仅针对挖掘模型内容中与决策树模型具有特定相关性的列提供详细信息和示例。 有关架构行集中的通用列以及挖掘模型术语的解释,请参阅挖掘模型内容(Analysis Services - 数据挖掘)。

模型目录
存储模型的数据库的名称。

MODEL_NAME
模型的名称。

ATTRIBUTE_NAME
与此节点对应的属性的名称。

NODE_NAME
始终与NODE_UNIQUE_NAME相同。

NODE_UNIQUE_NAME
模型中节点的唯一标识符。 此值不能更改。

对于决策树模型,唯一名称遵循以下约定,该约定不适用于所有算法:

任何特定节点的子节点都将具有相同的十六进制前缀,后跟另一个十六进制数字,表示父节点中的子节点序列。 可以使用前缀来推断路径。

NODE_TYPE
在决策树模型中,将创建以下类型的节点:

节点类型 DESCRIPTION
1 (模型) 模型的根节点。
2 (树) 模型中分类树的父节点。 标记为“全部”。
3 (内部) 内部分支的负责人,位于分类树或回归树中。
4 (分布) 叶节点,位于分类树或回归树中。
25 (回归树) 模型中回归树的父节点。 标记为 “All”

NODE_CAPTION
用于显示目的的友好名称。

创建模型时,NODE_UNIQUE_NAME的值将自动用作标题。 但是,可以更改NODE_CAPTION的值,以以编程方式或使用查看器更新群集的显示名称。 标题由模型自动生成。 标题的内容取决于模型的类型和节点类型。

在决策树模型中,NODE_CAPTION和NODE_DESCRIPTION具有不同的信息,具体取决于树中的级别。 有关详细信息和示例,请参阅 节点标题和节点说明

儿童基数
估计节点具有的子级数。

父节点 指示已建模的可预测属性数。 为每个可预测属性创建树。

树节点 每个树 的“所有 ”节点告诉你目标属性使用了多少个值。

  • 如果目标属性是离散的,则该值等于不同值的个数加上 Missing 状态的 1。

  • 如果可预测属性是连续的,则该值指示有多少存储桶用于为连续属性建模。

叶节点 始终为 0。

父级唯一名称
节点父级的唯一名称。 根级别的任何节点都返回 NULL。

节点描述
节点的说明。

在决策树模型中,NODE_CAPTION和NODE_DESCRIPTION具有不同的信息,具体取决于树中的级别。

有关详细信息和示例,请参阅 节点标题和节点说明

NODE_RULE
一种 XML 描述,这种描述说明了从其直接父节点到当前节点路径的规则。

有关详细信息和示例,请参阅 节点规则和边际规则

边际规则
描述从模型父节点到当前节点的路径的规则的 XML 说明。

有关详细信息,请参阅 节点规则和边际规则

节点概率
与此节点关联的概率。

有关详细信息,请参阅 Probability

边际概率
从父节点到达节点的概率。

有关详细信息,请参阅 Probability

节点分布
包含节点概率直方图的表。 此表中的信息因可预测属性是连续变量还是离散变量而异。

模型根节点 此表为空。

(全部)节点 包含整体模型的摘要。

内部节点 包含其叶节点的聚合统计信息。

叶节点 包含给定路径中导致当前叶节点的所有条件的预测结果的支持和概率。

回归节点 包含表示输入与可预测属性之间的关系的回归公式。

有关详细信息,请参阅 离散属性的节点分布连续属性的节点分布

NODE_SUPPORT
支持此节点的事例数。

MSOLAP_MODEL_COLUMN
指示包含可预测属性的列。

MSOLAP_NODE_SCORE
显示与节点关联的分数。 有关详细信息,请参阅 节点分数

MSOLAP_NODE_SHORT_CAPTION
用于显示目的的标签。

注解

决策树模型没有单独的节点来存储整个模型的统计信息,这与 Naive Bayes 或神经网络模型中发现的边际统计信息节点不同。 相反,模型为每个可预测属性创建一个单独的树,树顶部有一个 (All) 节点。 每个树都独立于其他树。 如果模型仅包含一个可预测属性,则只有一个树,因此只有一个(全部)节点。

表示输出属性的每个树还细分为表示拆分的内部分支(NODE_TYPE = 3)。 每个树都包含有关目标属性分布的统计信息。 此外,每个叶节点(NODE_TYPE = 4)都包含描述输入属性及其值的统计信息,以及支持每个属性值对的事例数。 因此,在决策树的任何分支中,可以轻松查看数据概率或分布情况,而无需查询源数据。 树的每个级别都必然表示其直接子节点的总和。

有关如何检索这些统计信息的示例,请参阅 决策树模型查询示例

决策树结构示例

若要了解决策树的工作原理,请考虑一个示例,例如 AdventureWorks 自行车购买者方案。 假设可预测属性是客户购买,决策树算法会尝试在提供的所有输入中找到一列数据,这些输入最有效地检测可能购买自行车的客户以及不太可能购买自行车的客户。 例如,模型可能会发现 Age 是购买行为的最佳指标。 具体而言,30岁以上的客户很可能购买自行车,所有其他客户不太可能购买。 在这种情况下,模型在年龄属性上创建分割。 这意味着树分为两个分支,一个分支包含 30 岁以上的客户,另一个分支包含 30 岁以下的客户。 新分支在模型结构中表示为两个新的内部树(NODE_TYPE = 3)。

对于每个分支,模型将继续查找用于区分客户的其他属性。 如果数据中没有足够的证据来继续创建客户的子组,模型将停止生成树。 每当节点中的事例数太小而无法继续时,模型也会停止生成树,不管拆分有多好,或者值是否为 null 或缺失。 通过提前停止树的生长,可以阻止模型训练得太接近一组特定的数据集。

每个内部树的节点都包含叶节点,这些叶节点提供对给定当前分类结果的细分。 例如,可能有表示 Age >= 30 且 Gender = Male 的内部节点。 此组的节点显示此类别中有多少客户购买了或未购买某些内容。 例如,分类可能包含以下树分裂:

室内树 分裂
年龄 >= 30 年龄 >= 30,性别 = 男性
年龄 >= 30,性别 = 女性
年龄 30 岁< 年龄 < 30 岁和性别 = 男性
年龄 < 30 岁和性别 = 女性

使用决策树模型进行预测时,该模型将提供给它的属性作为参数,并遵循树中属性的路径。 一般情况下,所有预测都会转到一个叶,并且内部节点仅用于分类。

叶节点始终具有 NODE_TYPE 为 4(分布),并包含一个直方图,该直方图指示在您提供的属性下,每个结果(购买或不购买)的概率。 例如,如果要求预测一位男性超过 60 岁的新客户,该模型将查找相应的节点(年龄 > 30 岁和性别 = 男性),然后返回指定结果的概率。 这些概率存储在节点 的NODE_DISTRIBUTION 表中。

如果可预测属性是连续数,则算法将尝试创建一个回归公式,该公式对可预测属性与输入之间的关系进行建模。

节点标题和节点说明

在决策树模型中,节点标题和节点说明包含类似的信息。 但是,节点描述更为完整,随着接近叶节点会包含更多信息。 节点标题和节点说明都是本地化字符串。

NODE_CAPTION 显示区分该特定节点相对于父节点的属性。 节点说明根据拆分条件定义人口的子分段。 例如,如果拆分位于 [Age] 上并且是三向拆分,则三个子节点的节点标题可能是“[Age] < 40”、“40 <= [Age] < 50”、“[Age] >= 50”。
NODE_DESCRIPTION 包含从模型父节点开始区分该节点与其他节点的属性的完整列表。 例如,产品名称 = Apple,Color = Red。

节点规则和边际规则

NODE_RULE和MARGINAL_RULE列包含与NODE_CAPTION和NODE_DESCRIPTION列相同的信息,但将信息表示为 XML 片段。 节点规则是完整路径的 XML 版本,边际规则指示最近的拆分。

XML 片段表示的属性可以是简单或复杂。 简单属性包含模型列的名称和特性的值。 如果模型列包含嵌套表,则嵌套表属性表示为表名称、键值和属性的串联。

注释

SQL Server Analysis Services 支持 PMML 标准版本 2.0,扩展支持使用嵌套表。 如果数据包含嵌套表并生成模型的 PMML 版本,则包含谓词的模型中的所有元素都标记为扩展。

离散属性的节点分布

在决策树模型中,NODE_DISTRIBUTION表包含有用的统计信息。 但是,统计信息的类型取决于树是预测离散属性还是连续属性。 本部分介绍离散属性的节点分布统计信息的含义。

属性名称和属性值

在分类树中,属性名称始终包含可预测列的名称。 此值指示树预测的内容。 由于单个树始终表示单个可预测属性,因此在整个树中重复此值。

对于离散数据类型,属性值字段列出了可预测列的可能值以及 Missing 值。

支持

每个节点的支持值指示此节点中包含多少个事例。 在(全部)级别,您应该能看到用于训练模型的完整案例计数。 对于树中的每个分支,支持值是分组到树的节点中的样本数。 叶节点中的事例总和必然等于树的父节点中的事例计数。

对于表示连续属性的节点,数据中存在 null 可能会导致一些适得其反的结果。 例如,如果有 m 事例,平均值将计算为 sum(所有 cases)/n,其中 n 是小于 m 的数字,m-n 表示缺失值的事例计数。 支持也表示为 n。

概率

与每个节点关联的概率告诉你在整个数据集中,任意情况出现在该特定节点的概率。 概率分数不仅针对树整体计算,还针对即时拆分进行计算。

例如,下表显示了一个非常简单的模型,有 100 个事例。

室内树 叶节点 相对于父节点的概率 相对于顶部节点的概率
年龄 >= 30 六十 年龄 >= 30,性别 = 男性 50 50/60 = .83 50/100 = .5
年龄 >= 30,性别 = 女性 10 10/60 = .16 10/100 = .10
年龄 30 岁< 40 年龄 < 30 岁和性别 = 男性 30 30/40 = .75 30/100 = .30
年龄 < 30 岁和性别 = 女性 10 10/40 = .25 10/100 = .10

所有模型中都会进行一个小调整,以考虑可能的缺失值。 对于连续属性,每个值或值范围都表示为状态(例如,Age 30、Age <= 30 和 Age >30),概率按如下方式计算:状态存在(值 = 1),某些其他状态存在(值 = 0),状态为 Missing。 有关如何调整概率以表示缺失值的详细信息,请参阅“缺失值”(Analysis Services - 数据挖掘)。

每个节点的概率几乎直接从分布中计算,如下所示:

Probability = (状态支持 + 对先前状态的支持) / (节点支持加上之前的节点支持)

Analysis Services 使用每个节点的概率将存储的概率与之前的概率进行比较,以确定从父节点到子节点的路径是否表示强推理。

进行预测时,分布的概率必须与节点的概率平衡,才能平滑概率。 例如,如果树中的划分以9000/1000的比例分隔案例,则树非常不平衡。 因此,来自小分支的预测不应与来自具有许多事例的分支的预测具有相同的权重。

差异

方差是衡量样本中的值在预期分布下的分散程度的一个度量标准。 对于离散值,方差按定义为 0。

有关如何计算连续值的方差的信息,请参阅线性回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。

值类型

值类型列提供有关NODE_DISTRIBUTION表中其他列中提供的数值的含义的信息。 可以使用查询中的值类型从嵌套表中检索特定行。 有关示例,请参阅 决策树模型查询示例

在枚举中的类型中 MiningValueType ,在分类树中使用以下类型。

值类型 DESCRIPTION
1 (缺失) 指示与缺失值相关的计数、概率或其他统计信息。
4 (离散) 指示与离散值或离散化值相关的计数、概率或其他统计信息。

如果模型包含连续可预测属性,则树还可能包含回归公式特有的值类型。 有关回归树中使用的值类型的列表,请参阅线性回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。

节点分数

节点分数表示树的每个级别的信息略有不同。 通常情况下,评分是一个数值,用于指示根据条件拆分所取得的效果有多好。 该值表示为双精度值,其中更高的值更好。

根据定义,模型节点和所有叶节点的节点分数为 0。

对于表示每个树顶部的 (All) 节点,MSOLAP_NODE_SCORE列包含整个树中的最佳拆分分数。

对于树中的所有其他节点(叶节点除外),每个节点的分数表示当前节点的最佳拆分分数,减去父节点的拆分分数。 通常,父节点的拆分分数应始终优于其任何一个子节点上的拆分分数。 这是因为决策树模型最好先对最重要的属性进行拆分。

根据所选算法参数,计算拆分的分数有多种方法。 讨论如何计算每个评分方法的分数超出了本主题的范围。 有关详细信息,请参阅Microsoft研究网站上的“学习贝贝西亚网络:知识与统计数据的组合”。

注释

如果创建同时具有连续和离散可预测属性的决策树模型,则表示每个树类型的 (All) 节点中将看到完全不同的分数。 每个模型都应独立考虑,用于评分回归的方法与用于评分分类的方法完全不同。 无法比较节点分数值。

决策树模型中的回归节点

如果决策树模型包含具有连续数值数据的可预测属性,Microsoft决策树算法将查找预测状态与输入变量之间的关系是线性的数据区域。 如果算法成功查找线性关系,则会创建一个表示线性回归的特殊树(NODE_TYPE = 25)。 这些回归树节点比表示离散值的节点更为复杂。

一般情况下,回归会将连续依赖变量(可预测变量)中的更改映射为输入变化的函数。 如果依赖变量具有任何连续输入,并且输入值与预测值之间的关系足够稳定,以折线图的形式计算,则回归的节点包含公式。

但是,如果输入值与预测值之间的关系是 非线性的,则会改为创建拆分,就像标准决策树一样。 例如,假设 A 是可预测属性,B 和 C 是输入,其中 C 是连续值类型。 如果 A 和 C 之间的关系在数据部分相当稳定,但在其他数据中不稳定,则算法将创建拆分来表示数据的不同区域。

拆分条件 节点中的结果
如果 n 小于 < 5 关系可以表示为公式 1
如果 n 介于 5 到 10 之间 无公式
如果 n > 10 关系可以表示为公式 2

有关回归节点的详细信息,请参阅线性回归模型的挖掘模型内容(Analysis Services - 数据挖掘)。

另请参阅

挖掘模型内容(Analysis Services - 数据挖掘)
数据挖掘模型查看器
数据挖掘查询
Microsoft决策树算法