Microsoft 决策树算法使用不同的方法来计算最佳的树。 所使用的方法具体取决于任务,任务可为线性回归、分类或关联分析。 一个模型可包含多个针对不同可预测属性的树。 而且,每个树可包含多个分支,具体取决于数据中包含的属性和值的数量。 特定模型中生成的树的形状和深度取决于所使用的计分方法以及其他参数。 参数更改还会影响节点的拆分位置。
树是通过确定输入和目标结果之间的相关性而生成的。 关联完所有属性后,算法会标识出最能完全分隔结果的属性。 最佳分隔点是通过使用计算信息获取分数的公式确定的。 信息获取分数最高的属性将用于将事例分为各个子集;然后,还会利用同一过程,以递归方式分析各子集,直至树无法拆分为止。
用于计算信息获取分数的确切公式取决于创建算法时设置的参数、可预测列的数据类型以及输入的数据类型。
如果可预测属性和输入都是离散的,则计算每个输入对应的结果数量只涉及创建一个矩阵并为矩阵中的每个单元生成分数。
但是,如果可预测属性是离散的,而输入是连续的,则会自动离散化连续的输入列。 可以接受默认值并让SQL Server Analysis Services找到最佳箱数,也可以通过设置
DiscretizationMethod
和
DiscretizationBucketCount
属性来控制离散化连续输入的方式。 有关详细信息,请参阅
更改挖掘模型中列的离散化
。
对于连续属性,该算法使用线性回归确定决策树的拆分位置。
如果可预测属性为连续数值数据类型,则还会对输出应用功能选择,以减少可能的结果数量,并更快地生成模型。 您可以通过设置 MAXIMUM_OUTPUT_ATTRIBUTES 参数来更改功能选择的阈值,从而增加或减少可能值的数量。
计分方法和功能选择
Microsoft 决策树算法提供了三种信息获取计分公式:Shannon 平均信息量、使用 K2 先验的 Bayesian 网络和使用先验统一 Dirichlet 分布的 Bayesian 网络。 这三种都是数据挖掘领域中已经确立的方法。 建议您利用不同的参数,分别试用这些方法,以确定哪种方法结果最佳。 有关这些计分方法的详细信息,请参阅
Feature Selection
。
所有SQL Server Analysis Services数据挖掘算法都自动使用特征选择来改进分析和减少处理负载。 用于功能选择的方法取决于生成模型所用的算法。 控制决策树模型的功能选择的算法参数为 MAXIMUM_INPUT_ATTRIBUTES 和 MAXIMUM_OUTPUT。
兴趣性分数
Shannon 平均信息量
Bayesian with K2 Prior
使用统一先验的 Bayesian Dirichlet(默认)
如果任何列包含非二进制连续值,则兴趣性分数将用于所有列,以确保一致性。 否则,将使用默认方法或指定的方法。
兴趣性分数
线形回归仅使用兴趣性分数,原因是它仅支持连续列。
分类是一种重要的数据挖掘策略。 通常,分类事例所需的信息量同输入记录的数量成正比例增长。 这将会限制可进行分类的数据量。 Microsoft 决策树算法使用以下方法来解决这些问题、提高性能并消除内存限制:
使用功能选择优化属性的选择。
使用 Bayesian 计分控制树的增长。
优化连续属性的收集。
动态分组输入值以确定最重要的值。
Microsoft 决策树算法高效快速且可伸缩,可轻松实现并行化,这意味着所有处理器均可协同工作,共同生成一个一致的模型。 这些特征使决策树分类器成为了理想的数据挖掘工具。
如果性能约束比较严格,则您可以使用以下方法来缩短决策树模型定型过程中的处理时间。 如果使用这些方法,请注意:通过消除属性来改善处理性能将会使模型的结果发生变化,可能无法很好地显示总体情况。
增大 COMPLEXITY_PENALTY 参数的值以限制树的增长。
限制关联模型中的项数以限制生成的树的数量。
增大 MINIMUM_SUPPORT 参数的值以避免过度拟合。
将所有属性的离散值的数量限制为 10 或更小。 您可尝试以不同的方式,对不同模型中的值进行分组。
可以使用 SQL Server 2017 Integration Services (SSIS) 中提供的数据浏览工具来可视化数据中值的分布,并在开始数据挖掘之前对值进行适当的分组。 有关详细信息,请参阅
数据事件探查任务和查看器
。 你还可以使用
Excel 2007 数据挖掘外接程序
,在 Microsoft Excel 中浏览、分组和重新标记数据。
自定义决策树算法
Microsoft 决策树算法支持影响生成的挖掘模型的性能和准确性的参数。 您还可以对挖掘模型列或挖掘结构列设置建模标志来控制数据的处理方式。
Microsoft 决策树算法适用于所有版本的 SQL Server;但是,某些用于自定义 Microsoft 决策树算法行为的高级参数仅适用于特定版本的 SQL Server。 有关 SQL Server 各版本支持的功能列表,请参阅
SQL Server 2012 各个版本支持的功能
(
https://go.microsoft.com/fwlink/?linkid=232473
)。
设置算法参数
下表介绍了可用于 Microsoft 决策树算法的参数。
COMPLEXITY_PENALTY
控制决策树的增长。 该值较低时,会增加拆分数;该值较高时,会减少拆分数。 默认值基于特定模型的属性数,详见以下列表:
对于 1 到 9 个属性,默认值为 0.5。
对于 10 到 99 个属性,默认值为 0.9。
对于 100 或更多个属性,默认值为 0.99。
FORCE_REGRESSOR
强制算法将指定的列用作回归量,而不考虑算法计算出的列的重要性。 此参数只用于预测连续属性的决策树。
通过设置此参数,您可以强制要求算法尝试将属性用作回归量。 但是,属性实际是否会在最终模型中用作回归量取决于分析结果。 您可以通过查询模型内容来确定用作了回归量的列。
[仅在某些版本的 SQL Server 中可用]
MAXIMUM_INPUT_ATTRIBUTES
定义算法在调用功能选择之前可以处理的输入属性数。
默认值为 255。
如果将此值设置为 0,则表示关闭功能选择。
[仅在某些版本的 SQL Server 中可用]
MAXIMUM_OUTPUT_ATTRIBUTES
定义算法在调用功能选择之前可以处理的输出属性数。
默认值为 255。
如果将此值设置为 0,则表示关闭功能选择。
[仅在某些版本的 SQL Server 中可用]
MINIMUM_SUPPORT
确定在决策树中生成拆分所需的叶事例的最少数量。
默认值为 10。
如果数据集非常大,则可能需要增大此值,以避免过度定型。
SCORE_METHOD
确定用于计算拆分分数的方法。 提供了以下选项:
决策树模型中的回归量
即使不使用 Microsoft 线性回归算法,具有连续数值输入和输出的任何决策树模型也可能包括表示连续属性回归的节点。
您无需指定连续数值数据列表示回归量。 Microsoft 决策树算法将自动使用该列作为潜在的回归量,并将数据集分区为具有有意义模式的区域,即使未在列上设置 REGRESSOR 标志。
您可以使用 FORCE_REGRESSOR 参数来确保算法将使用某一特定回归量。 此参数只能与 Microsoft 决策树和 Microsoft 线性回归算法一起使用。 设置建模标志时,算法会尝试查找具有
a*C1 + b*C2 + ...
形式的回归公式,以拟合树中节点的模式。 将对剩余的总和进行计算,如果偏差过大,则在树中执行强制拆分。
例如,如果要将
Income
用作属性来预测客户的购买行为,并对列设置 REGRESSOR 建模标志,则算法将会先通过使用标准回归公式来尝试拟合
Income
值。 如果偏差过大,则会放弃回归公式,并根据其他属性对树进行拆分。 拆分完毕后,决策树算法将尝试拟合每个分支中的 Income 的回归量。
一个决策树模型必须包含一个键列、若干输入列和至少一个可预测列。
Microsoft 决策树算法支持下表中列出的特定输入列和可预测列。 有关在挖掘模型中使用内容类型的含义的详细信息,请参阅
Content Types (Data Mining)
。