Microsoft决策树算法

适用于: SQL Server 2019 及更早版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中弃用了数据挖掘,现已在 SQL Server 2022 Analysis Services 中停止使用。 对于已弃用和停止使用的功能,文档不会更新。 若要了解详细信息,请参阅 Analysis Services 向后兼容性。

Microsoft决策树算法是一种分类和回归算法,用于离散属性和连续属性的预测建模。

对于离散属性,该算法基于数据集中的输入列之间的关系进行预测。 该算法使用这些列的值或 状态 来预测指定为可预测的列的状态。 具体而言,该算法标识与可预测列相关的输入列。

例如,在预测哪些客户可能购买自行车的场景中,如果十个年轻客户中有九个会购买自行车,而十个年长客户中只有两个会购买自行车,那么算法会推断年龄是预测是否购买自行车的一个良好指标。 决策树基于这种针对特定结果的趋势进行预测。

对于连续属性,算法使用线性回归来确定决策树拆分的位置。

如果多个列设置为可预测,或者输入数据包含设置为可预测的嵌套表,则算法为每个可预测列生成单独的决策树。

Example

Adventure Works Cycles 公司的营销部门希望确定以前的客户的特征,这些特征可能表明这些客户将来是否可能购买产品。 AdventureWorks2012 数据库存储描述以前的客户的人口统计信息。 通过使用Microsoft决策树算法分析此信息,营销部门可以构建一个模型,根据有关该客户的已知列的状态(如人口统计或过去的购买模式)来预测特定客户是否会购买产品。

算法的工作原理

Microsoft决策树算法通过在树中创建一系列拆分来生成数据挖掘模型。 这些拆分表示为 节点。 该算法每次找到与可预测列显著关联的输入列时,都会向模型添加一个节点。 算法确定拆分的方式因是预测连续列还是离散列而异。

Microsoft决策树算法使用功能选择来指导选择最有用的属性。 所有SQL Server数据挖掘算法都使用特征选择来提高性能和分析质量,并防止使用处理器时间的不重要属性。 如果在设计数据挖掘模型时使用过多的输入或可预测属性,模型可能需要很长时间来处理或耗尽内存。 用于确定是否拆分树的方法包括针对熵和贝叶斯网络的行业标准度量指标。 有关用于选择有意义的属性的方法的详细信息,然后对属性进行评分和排名,请参阅特征选择(数据挖掘)。

数据挖掘模型中的一个常见问题是,模型对训练数据中的微小差异变得过于敏感,这种情况称为 过拟合 或 过度训练。 过度拟合的模型不能通用化为其他数据集。 为了避免过度拟合特定数据集,Microsoft决策树算法使用技术来控制树的生长。 有关Microsoft决策树算法工作原理的深入说明,请参阅Microsoft决策树算法技术参考。

预测离散列

Microsoft 决策树算法使用直方图针对离散型可预测列构建决策树。 下图显示了一个直方图,绘制了可预测列 自行车购买者 与输入列 年龄 之间的关系。 直方图显示,某人的年龄有助于区分该人是否购买自行车。

来自Microsoft决策树算法的直方图的屏幕截图。

关系图中显示的相关性导致Microsoft决策树算法在模型中创建新节点。

决策树节点的屏幕截图。

当算法向模型添加新节点时,它会创建树结构。 树结构的顶层节点描述了针对整体客户群体的“可预测”列的细分情况。 随着模型继续增长,该算法会考虑所有列。

预测连续型列

当Microsoft决策树算法基于连续可预测列生成树时,每个节点都包含回归公式。 在回归公式的非线性处会发生分裂。 例如,请考虑下图。

显示非线性的多个回归线的屏幕截图。

标准回归模型尝试派生一个公式,该公式表示整个数据的趋势和关系。 但是,单个公式可能无法捕获复杂数据中的不连续性。 相反,Microsoft决策树算法查找主要线性的树段,并为这些段创建单独的公式。 通过将数据分解为不同的段,模型可以更好地完成近似数据的工作。

下图表示上述散点图中模型的树状图。 为了预测结果,模型提供了两个不同的公式:一个用于左分支,公式为 y = .5x x 5,另一个用于公式 y = .25x + 8.75 的右分支。 散点图中两条线组合在一起的点是决策树模型中节点拆分的非线性点。

表示非线性点的公式的屏幕截图。

该模型很简单,只有两个线性方程,因此树中的分裂紧跟在 所有 节点之后。 但是,拆分可以在树的任何级别发生。 在包含多个级别和节点的树中,每个节点的特征是不同的属性集合,公式可以在多个节点之间共享,或仅适用于单个节点。

例如,你可能会为一个节点获取一个公式,该公式定义为“特定年龄和收入的客户”,另一个公式位于表示“通勤长途的客户”的节点中。若要查看单个节点或段的公式,请选择该节点。

决策树模型所需的数据

准备要在决策树模型中使用的数据时,请了解特定算法的要求,包括所需数据量以及数据使用方式。

决策树模型的要求如下:

  • 单个键列。 每个模型必须包含一个唯一标识每个记录的数字或文本列。 不允许使用复合键。

  • 可预测列。 模型至少需要一个可预测列。 可以在模型中包括多个可预测属性,并且可预测属性可以是不同类型的,可以是数字或离散属性。 增加可预测属性的数量会增加处理时间。

  • 输入列。 该模型需要输入列,可以是离散列或连续列。 增加输入属性的数量会影响处理时间。

有关决策树模型支持的内容类型和数据类型的详细信息,请参阅Microsoft决策树算法技术参考的“要求”部分。

查看决策树模型

若要浏览模型,请使用Microsoft树查看器。 如果模型生成多个树,则可以选择一棵树,并查看每个可预测属性的事例分类方式的明细。 还可以使用依赖项网络查看器查看树的交互。 有关详细信息,请参阅 使用Microsoft树查看器浏览模型。

有关树中任何分支或节点的更多详细信息,还可以使用Microsoft泛型内容树查看器浏览模型。 为模型存储的内容包括每个节点中所有值的分布、树的每个级别的概率以及连续属性的回归公式。 有关详细信息,请参阅决策树模型的挖掘模型内容(Analysis Services - Data Mining)。

创建预测

处理模型后,它将结果存储为一组模式和统计信息。 使用这些结果来探索关联关系或进行预测。

有关用于决策树模型的查询示例,请参阅 决策树模型查询示例。

有关如何针对挖掘模型创建查询的一般信息,请参阅 数据挖掘查询。

注解

  • 支持使用预测模型标记语言(PMML)创建挖掘模型。

  • 支持钻取。

  • 支持使用 OLAP 挖掘模型和创建数据挖掘维度。

另见

数据挖掘算法 (Analysis Services - 数据挖掘)
Microsoft决策树算法技术参考
决策树模型查询示例
决策树模型的挖掘模型内容(Analysis Services - Data Mining)