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

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

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

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

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

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

模型 3 使用 CustomerID、年龄、性别和嵌套表,不使用筛选器。

由于以上模型使用不同的输入列,并且其中两个模型还通过应用筛选器来限制在模型中使用的数据,因此即使这些模型基于相同数据,其结果也将大不相同。请注意,CustomerID 列在所有模型中都是必需的,因为它是可作为事例键使用的唯一可用列。

本节介绍数据挖掘结构的基本体系结构。有关如何创建、管理、修改或查看数据挖掘结构的详细信息,请参阅管理数据挖掘结构和模型

定义挖掘结构

建立数据挖掘结构涉及到下列步骤:

  • 定义数据源。

  • 选择结构列并定义一个键。

  • 将源数据分区为定型集和可选的测试集。

  • 处理挖掘结构。

挖掘结构的数据源

在定义挖掘结构时,可以使用现有数据源视图中的列。使用数据源视图,可以组合多个数据源并将它们用作所创建的结构或挖掘模型中的单个源。客户端应用程序看不到原始数据源。

有关数据源视图的详细信息,请参阅数据源视图(Analysis Services - 多维数据)

如果您按照同一个挖掘结构生成多个挖掘模型,则这些模型可以使用该结构中的不同列,而且使用方式也可以不同。例如,可以创建单个结构,然后基于该结构生成单独的决策树和聚类分析模型,每个模型都使用不同的列并预测不同的属性。

数据挖掘结构仅存储源数据的绑定。您还可以使用 DMX CREATE MINING STRUCTURE (DMX) 语句创建数据挖掘结构,而不需要将该结构绑定到特定数据源。

挖掘结构列

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

挖掘结构也可包含嵌套表。嵌套表表示事例实体与其相关属性之间的一对多关系。例如,如果客户说明信息位于一个表中,而客户采购信息位于另一个表中,则可使用嵌套表将这些信息组合到一个事例中。客户标识符是实体,采购信息是相关属性。有关何时使用嵌套表的详细信息,请参阅嵌套表(Analysis Services – 数据挖掘)

若要在 Business Intelligence Development Studio 中创建数据挖掘模型时,必须首先创建一个数据挖掘结构。数据挖掘向导可引导您完成创建挖掘结构、选择数据和添加挖掘模型的整个过程。

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

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

定型数据和测试数据

在为挖掘结构定义数据时,还可以指定将一些数据用于定型并将另一些数据用于测试。因此,在创建数据挖掘结构之前,无须再对数据进行分区。您可以指定将一定百分比的数据用于测试并将其余数据用于定型,也可以指定将一定数量的事例用作测试数据集。分区信息将缓存在挖掘结构中;因此,同一个测试集可以用在所有基于该结构的模型中。

有关详细信息,请参阅将数据分区为定型集和测试集(Analysis Services - 数据挖掘)

启用钻取

即使您不打算在特定的挖掘模型中使用某列,也可以将该列添加到挖掘结构中。如果您没有为该列指定用法,则在进行分析和预测时将忽略该列。但是,仍可以通过针对挖掘模型启用钻取的方式在查询中使用该列。例如,如果您拥有适当的权限,则可以在挖掘模型中从特定结果钻取,以检索有关该节点中各个事例的详细信息,甚至还可以访问该模型中未使用的结构列。

有关详细信息,请参阅针对挖掘模型和挖掘结构使用钻取(Analysis Services – 数据挖掘)

处理挖掘结构

挖掘结构在处理之前只是一个元数据容器。当您处理挖掘结构时,Analysis Services 会创建一个缓存,用于存储有关数据的统计信息、如何离散化任何连续属性的信息以及挖掘模型以后要使用的其他信息。该挖掘模型自身不会存储任何数据,但是可以引用缓存中的信息。因此,处理挖掘模型时,结构缓存必须可用。否则,必须重新处理该结构,然后才能生成模型。

如果您不希望缓存数据,则可以将挖掘结构的 CacheMode 属性更改为 ClearAfterProcessing。这将导致在处理所有模型之后销毁缓存。将 CacheMode 属性设置为 ClearAfterProcessing 将禁止从挖掘模型钻取。

只要缓存数据可用,向挖掘结构中添加新挖掘模型时则不需要重新处理挖掘结构,而只需处理该模型。有关详细信息,请参阅处理数据挖掘对象

查看挖掘结构

不能使用查看器来浏览挖掘结构中的数据。但是,在 Business Intelligence Development Studio 中,可以使用数据挖掘设计器的**“挖掘结构”**选项卡来查看结构列及其定义。有关详细信息,请参阅数据挖掘设计器

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

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

在挖掘结构中使用数据挖掘模型

数据挖掘模型可向挖掘结构所代表的数据应用挖掘模型算法。挖掘模型是属于特定挖掘结构的对象,并且模型继承由挖掘结构定义的所有属性值。该模型可以使用挖掘结构包含的所有列,或使用其中一部分列。可以向挖掘结构中添加某个结构列的多个副本。还可以向挖掘模型中添加某个结构列的多个副本,然后向该模型中的每个结构列赋予不同的名称或别名。有关给结构列指定别名的详细信息,请参阅如何为模型列创建别名设置挖掘模型的属性

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