Microsoft决策树算法是一种混合算法,其中包含用于创建树的不同方法,并支持多个分析任务,包括回归、分类和关联。 Microsoft决策树算法支持对离散属性和连续属性进行建模。
本主题介绍算法的实现,介绍了如何为不同的任务自定义算法的行为,并提供有关查询决策树模型的其他信息的链接。
决策树算法的实现
Microsoft决策树算法通过获取模型的近似后向分布来应用贝叶斯方法来学习因果交互模型。 有关此方法的详细说明,请参阅“ 结构”和“参数学习”Microsoft研究网站上的论文。
评估先验信息价值的方法基于似然等效假设。 这种假设表明,数据不应有助于区分以其他方式表示条件独立的相同断言的网络结构。 假设每个案例都有一个贝叶斯先验网络和该网络的单一置信度度量。
然后,该算法使用这些先验网络,根据当前的训练数据计算网络结构的相对后验概率,并识别具有最高后验概率的网络结构。
Microsoft决策树算法使用不同的方法来计算最佳树。 使用的方法取决于任务,该任务可以是线性回归、分类或关联分析。 单个模型可以包含不同可预测属性的多个树。 此外,每个树可以包含多个分支,具体取决于数据中有多少属性和值。 在特定模型中生成的树的形状和深度取决于评分方法以及所使用的其他参数。 参数中的更改还会影响节点拆分的位置。
构建树
当Microsoft决策树算法创建一组可能的输入值时,它将执行 特征选择 来标识提供最多信息的特性和值,并从考虑非常罕见的值中删除。 该算法还会将值分组到 箱中,以创建可作为单元处理的值分组以优化性能。
通过确定输入与目标结果之间的相关性来生成树。 所有属性都关联后,该算法将标识最清晰地分隔结果的单个属性。 最佳分离点是使用计算信息增益的公式来测量的。 具有最佳信息增益分数的属性用于将事例划分为子集,然后以递归方式由同一进程分析,直到树无法再拆分为止。
用于评估信息增益的确切公式取决于创建算法时设置的参数、可预测列的数据类型和输入的数据类型。
离散输入和连续输入
如果可预测属性是离散的,并且输入是离散的,则计算每个输入的结果是创建矩阵并生成矩阵中每个单元格的分数。
但是,如果可预测属性是离散的,并且输入是连续的,则连续列的输入会自动离散化。 可以接受默认值,让 Analysis Services 找到最佳箱数,也可以通过设置 DiscretizationMethod 和 DiscretizationBucketCount 属性来控制连续输入的离散化方式。 有关详细信息,请参阅 更改挖掘模型中列的离散化。
对于连续属性,算法使用线性回归来确定决策树拆分的位置。
当可预测属性是连续数值数据类型时,功能选择也会应用于输出,以减少可能的结果数并更快地生成模型。 可以通过设置MAXIMUM_OUTPUT_ATTRIBUTES参数来更改功能选择的阈值,从而增加或减少可能的值数。
有关Microsoft决策树算法如何与离散可预测列配合使用的更多详细解释,请参阅《贝叶斯网络学习:知识与统计数据的结合》。 有关Microsoft决策树算法如何与连续可预测列配合使用的详细信息,请参阅 用于 Time-Series 分析的自动回归树模型的附录。
评分方法和特征选择
Microsoft决策树算法提供三个公式用于评分信息增益:香农熵、具有K2先验的贝叶斯网络和具有统一Dirichlet分布先验的贝叶斯网络。 这三种方法在数据挖掘领域中已经得到了广泛应用。 建议试验不同的参数和评分方法,以确定哪种结果提供最佳结果。 有关这些评分方法的详细信息,请参阅 功能选择。
所有 Analysis Services 数据挖掘算法都会自动使用特征选择来改进分析和减少处理负载。 用于特征选择的方法取决于用于生成模型的算法。 控制决策树模型特征选择的算法参数“MAXIMUM_INPUT_ATTRIBUTES”和“MAXIMUM_OUTPUT”。
算法 | 分析方法 | 注释 |
---|---|---|
决策树 | 有趣程度评分 香农熵 贝伊西亚与 K2 Prior 贝叶斯·狄利克雷特模型(默认情况下使用均匀先验) |
如果任何列包含非二进制连续值,则为确保一致性,所有列都会使用趣味性评分。 否则,将使用默认或指定的方法。 |
线性回归 | 有趣程度评分 | 线性回归仅使用有趣性,因为它仅支持连续列。 |
可伸缩性和性能
分类是重要的数据挖掘策略。 通常,分类事例所需的信息量与输入记录数直接成比例增长。 这会限制可分类的数据的大小。 Microsoft决策树算法使用以下方法来解决这些问题、提高性能并消除内存限制:
用于优化属性选择的功能选择。
贝叶斯得分来控制树生长。
连续属性的分箱优化。
动态分组输入值以确定最重要的值。
Microsoft决策树算法是快速且可缩放的,设计为易于并行化,这意味着所有处理器协同工作以生成单个一致的模型。 这些特征的组合使决策树分类器成为数据挖掘的理想工具。
如果性能约束严重,则可以使用以下方法改进决策树模型训练期间的处理时间。 但是,如果这样做,请注意,消除属性以提高处理性能将更改模型的结果,并可能使其对总体的代表性降低。
增加COMPLEXITY_PENALTY参数的值以限制树生长。
限制关联模型中的项数,以限制生成的树数。
增加MINIMUM_SUPPORT参数的值以避免过度拟合。
将任何属性的离散值数限制为 10 或更少。 可以在不同的模型中尝试以不同方式对值进行分组。
注释
可以使用 SQL Server 2014 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决策树算法的参数。
复杂性惩罚
控制决策树的增长。 低值会增加拆分数,而高值会减少拆分数。 默认值基于特定模型的属性数,如以下列表所述:
对于 1 到 9 个属性,默认值为 0.5。
对于 10 到 99 个属性,默认值为 0.9。
对于 100 个或多个属性,默认值为 0.99。
FORCE_REGRESSOR
强制算法使用指定的列作为回归器,而不考虑算法计算的列的重要性。 此参数仅用于预测连续属性的决策树。
注释
通过设置此参数,强制算法尝试将属性用作回归器。 但是,属性是否实际用作最终模型中的回归量取决于分析结果。 可以通过查询模型内容来找出哪些列用作回归器。
[仅在某些版本的 SQL Server 中可用]
最大输入属性
定义算法在调用功能选择之前可以处理的输入属性数。
默认值为 255。
将此值设置为 0 以关闭功能选择。
[仅在某些版本的 SQL Server 中可用]
MAXIMUM_OUTPUT_ATTRIBUTES
定义算法在调用功能选择之前可以处理的输出属性数。
默认值为 255。
将此值设置为 0 以关闭功能选择。
[仅在某些版本的 SQL Server 中可用]
MINIMUM_SUPPORT
确定在决策树中生成拆分所需的最小叶事例数。
默认值是10。
如果数据集非常大,则可能需要增加此值,以避免过度训练。
评分方法
确定用于计算拆分分数的方法。 可以使用以下选项:
身份证件 | 名称 |
---|---|
1 | 熵 |
3 | 贝伊西亚与 K2 Prior |
4 | 贝叶斯迪里希莱特等价模型(BDE)与均匀先验 (默认值) |
默认值为 4 或 BDE。
有关这些评分方法的说明,请参阅 功能选择。
拆分方法
确定用于拆分节点的方法。 可以使用以下选项:
身份证件 | 名称 |
---|---|
1 | 二元的: 指示无论属性的实际值数如何,树都应拆分为两个分支。 |
2 | 完成: 指示树可以创建任意数量的拆分,因为存在属性值。 |
3 | 两者皆可: 指定 Analysis Services 可以确定是否应使用二进制或完全拆分来生成最佳结果。 |
默认值是3。
建模标记
Microsoft决策树算法支持以下建模标志。 创建挖掘结构或挖掘模型时,定义建模标志以指定在分析期间处理每个列中的值的方式。 有关详细信息,请参阅建模标志(数据挖掘)。
建模标志 | DESCRIPTION |
---|---|
MODEL_EXISTENCE_ONLY | 表示将列视为具有两种可能的状态: Missing 和 Existing 。 null 是缺失值。适用于挖掘模型列。 |
NOT NULL | 指示该列不能包含 null。 如果 Analysis Services 在模型训练期间遇到 null,则会出现错误。 适用于数据挖掘结构列。 |
决策树模型中的回归器
即使不使用Microsoft线性回归算法,任何具有连续数值输入和输出的决策树模型都可以包含表示连续属性回归的节点。
无需指定连续数值数据的列作为回归自变量。 即使未在列上设置 REGRESSOR 标志,Microsoft决策树算法也会自动将列用作潜在的回归器,并将数据集分区为具有有意义的模式的区域。
但是,可以使用 FORCE_REGRESSOR 参数来保证算法将使用特定的回归器。 此参数只能与Microsoft决策树和Microsoft线性回归算法一起使用。 当您设置建模标识时,算法将尝试查找形式为 a*C1 + b*C2 + ... 的回归方程,用来拟合树节点中的模式。 计算残差的总和后,如果偏差太大,则强制将树进行拆分。
例如,如果要使用 Income 作为属性预测客户购买行为,并在列中设置 REGRESSOR 建模标志,该算法将首先尝试使用标准回归公式来拟合 收入 值。 如果偏差太大,则放弃回归公式,树将基于另一个属性进行拆分。 然后,决策树算法将尝试在拆分后的每个分支中为收入拟合一个回归模型。
要求
决策树模型必须包含键列、输入列和至少一个可预测列。
输入列和可预测列
Microsoft决策树算法支持下表中列出的特定输入列和可预测列。 有关在挖掘模型中使用内容类型的含义的详细信息,请参阅内容类型(数据挖掘)。
列 | 内容类型 |
---|---|
输入属性 | 连续、循环、离散、离散化、键、有序、表 |
可预测属性 | 连续、循环、离散、离散化、有序、表 |
注释
支持循环和有序内容类型,但算法将它们视为离散值,并且不执行特殊处理。
另请参阅
Microsoft决策树算法
决策树模型查询示例
决策树模型的挖掘模型内容(Analysis Services - 数据挖掘)