挖掘结构 (Analysis Services - 数据挖掘)

挖掘结构定义从中生成挖掘模型的数据:它指定源数据视图、列的数量和类型,以及训练和测试集中的可选分区。 单个挖掘结构可以支持共享同一域的多个挖掘模型。 下图说明了数据挖掘结构与数据源及其构成数据挖掘模型之间的关系。

数据处理:源到结构到模型

关系图中的挖掘结构基于包含多个表或视图的数据源,这些表或视图联接在 CustomerID 字段中。 一个表包含有关客户的信息,如地理区域、年龄、收入和性别,而相关的嵌套表包含有关每个客户的其他多行信息,例如客户购买的产品。 该图显示,多个模型可以在一个挖掘结构上生成,模型可以使用结构中的不同列。

模型 1 使用 CustomerID、收入、年龄、区域,并根据区域过滤数据。

模型 2 使用 CustomerID、收入、年龄、区域,并根据年龄筛选数据。

模型 3 使用 CustomerID、Age、Gender 和嵌套表,没有筛选器。

由于模型使用不同的列进行输入,并且由于两个模型还通过应用筛选器来限制模型中使用的数据,因此即使模型基于相同的数据,模型也可能具有截然不同的结果。 请注意,所有模型中都需要 CustomerID 列,因为它是唯一可用作事例键的可用列。

本部分介绍数据挖掘结构的基本体系结构:如何定义挖掘结构、如何使用数据填充挖掘结构,以及如何使用它创建模型。 有关如何管理或导出现有数据挖掘结构的详细信息,请参阅 数据挖掘解决方案和对象的管理

定义挖掘结构

设置数据挖掘结构包括以下步骤:

  • 定义数据源。

  • 选择要包含在结构中的数据列(并非所有列都需要添加到模型中),并定义键。

  • 定义结构的键,包括最佳表的键(如果适用)。

  • 指定源数据是否应分离到训练集和测试集中。 此步骤是可选的。

  • 处理该结构。

这些步骤将在以下各节中进行详细说明。

挖掘结构的数据源

定义挖掘结构时,可以使用现有数据源视图中可用的列。 数据源视图是一个共享对象,可用于合并多个数据源并将其用作单个源。 原始数据源对客户端应用程序不可见,可以使用数据源视图的属性来修改数据类型、创建聚合或别名列。

如果基于同一挖掘结构生成多个挖掘模型,则模型可以使用结构中的不同列。 例如,可以创建一个结构,然后基于它生成单独的决策树和聚类分析模型,每个模型使用不同的列并预测不同的属性。

此外,每个模型都可以以不同的方式使用结构中的列。 例如,数据源视图可能包含一个“收入”列,可以针对不同的模型以不同的方式装箱。

数据挖掘结构以绑定到源数据的形式存储数据源的定义及其中的列。 有关数据源绑定的详细信息,请参阅数据源和绑定(SSAS 多维)。 但是,请注意,还可以创建数据挖掘结构,而无需使用 DMX CREATE MINING STRUCTURE (DMX) 语句将其绑定到特定数据源。

挖掘结构列

挖掘结构的构造块是挖掘结构列,这些列对数据源所包含的数据进行说明。 这些列包含诸如数据类型、内容类型以及数据分发方式等信息。 挖掘结构不包含有关列如何用于特定挖掘模型或用于生成模型的算法类型的信息;此信息在挖掘模型本身中定义。

数据挖掘结构还可以包含嵌套表。 嵌套表表示事例实体与其相关属性之间的一对多关系。 例如,如果描述客户的信息驻留在一个表中,而客户的购买则驻留在另一个表中,则可以使用嵌套表将信息合并到单个案例中。 客户标识符是实体,购买是相关的属性。 有关何时使用嵌套表的详细信息,请参阅嵌套表(Analysis Services - 数据挖掘)。

若要在 SQL Server Data Tools (SSDT)中创建数据挖掘模型,必须先创建数据挖掘结构。 数据挖掘向导将引导你完成创建挖掘结构、选择数据以及添加挖掘模型的过程。

如果使用数据挖掘扩展插件(DMX)创建挖掘模型,则可以指定模型及其中的列,DMX 将自动创建所需的挖掘结构。 有关详细信息,请参阅 CREATE MINING MODEL (DMX)。

有关详细信息,请参阅 挖掘结构列

将数据划分为训练集和测试集

定义挖掘结构的数据时,还可以指定某些数据用于定型,有些用于测试。 因此,在创建数据挖掘结构之前,不再需要将数据分开。 相反,在创建模型时,可以指定用于测试的数据的一定百分比,以及用于训练的其余部分,也可以指定要用作测试数据集的一定数量的事例。 有关定型和测试数据集的信息随挖掘结构一起缓存,因此,同一测试集可用于基于该结构的所有模型。

有关详细信息,请参阅 训练和测试数据集

启用钻取

即使您不打算在特定挖掘模型中使用这个列,您仍然可以将列添加到挖掘结构中。 例如,如果要在聚类分析模型中检索客户的电子邮件地址,而无需在分析过程中使用电子邮件地址,这非常有用。 若要在分析和预测阶段忽略列,请将其添加到结构,但不指定列的用法,或将使用情况标志设置为“忽略”。 如果在挖掘模型上启用了钻取,并且你具有适当的权限,则仍可在查询中使用以这种方式标记的数据。 例如,可以查看所有客户分析生成的群集,然后使用钻取查询获取特定群集中客户的姓名和电子邮件地址,即使这些数据列未用于生成模型。

有关详细信息,请参阅钻取查询(数据挖掘)。

处理挖掘结构

在被处理之前,挖掘结构只是一个元数据容器。 处理挖掘结构时,Analysis Services 会创建一个缓存,用于存储有关数据的统计信息、关于如何离散化任何连续属性的信息,以及挖掘模型稍后使用的其他信息。 挖掘模型本身不会存储此摘要信息,而是引用处理挖掘结构时缓存的信息。 因此,每次向现有结构添加新模型时,无需重新处理结构;只需处理模型即可。

如果缓存非常大或想要删除详细数据,则可以选择在处理后放弃此缓存。 如果不希望缓存数据,可以将挖掘结构的属性更改为 CacheModeClearAfterProcessing。 处理任何模型后,这会销毁缓存。 将 CacheMode 属性设置为 ClearAfterProcessing 后,将禁用挖掘模型中的深入查看功能。

但是,销毁缓存后,将无法向挖掘结构添加新模型。 如果将新的挖掘模型添加到结构,或更改现有模型的属性,则需要首先重新处理挖掘结构。 有关详细信息,请参阅处理要求和注意事项(数据挖掘)。

查看挖掘结构

不能使用查看器浏览挖掘结构中的数据。 但是,在 SQL Server Data Tools (SSDT)中,可以使用数据挖掘设计器的 “挖掘结构 ”选项卡查看结构列及其定义。 有关详细信息,请参阅 数据挖掘设计器

如果要查看挖掘结构中的数据,可以使用数据挖掘扩展插件(DMX)创建查询。 例如,该语句 SELECT * FROM <structure>.CASES 返回挖掘结构中的所有数据。 若要检索此信息,必须已处理挖掘结构,并且必须缓存处理结果。

该语句 SELECT * FROM <model>.CASES 返回相同的列,但仅针对该特定模型中的事例。 有关详细信息,请参阅 SELECT FROM <结构>。CASESSELECT FROM <模型>。CASES (DMX)

对挖掘结构使用数据挖掘模型

数据挖掘模型将挖掘模型算法应用于由挖掘结构表示的数据。 挖掘模型是属于特定挖掘结构的对象,模型继承挖掘结构定义的属性的所有值。 模型可以使用挖掘结构包含的所有列或列的子集。 你可以将多个结构列副本添加到结构中。 还可以向模型添加结构列的多个副本,然后将不同的名称或 别名分配给模型中的每个结构列。 有关别名结构列的详细信息,请参阅 为模型列挖掘模型属性创建别名。

有关数据挖掘模型的体系结构的详细信息,请参阅挖掘模型(Analysis Services - 数据挖掘)。

使用提供的链接,了解有关如何定义、管理和使用挖掘结构的详细信息。

任务 链接
使用关系数据挖掘结构 创建新的关系挖掘结构

将嵌套表添加到挖掘结构
使用基于 OLAP 多维数据集的数据挖掘结构 创建新的 OLAP 挖掘结构

筛选挖掘结构的源多维数据集
操作采掘结构中的列 将列添加到数据挖掘结构

从数据挖掘结构中删除列
更改或查询挖掘结构属性和数据 更改挖掘结构的属性
与基础数据源协作并更新源数据 编辑用于挖掘结构的数据源视图

处理挖掘结构

另请参阅

数据库对象 (Analysis Services - 多维数据)
数据挖掘模型(Analysis Services - 数据挖掘)