ALTER MINING STRUCTURE (DMX)

创建基于现有挖掘结构的新挖掘模型。使用 ALTER MINING STRUCTURE 语句创建新的挖掘模型时,该结构必须已存在。而使用 CREATE MINING MODEL (DMX) 语句时,创建一个模型并同时自动生成其基础挖掘结构。

语法

ALTER MINING STRUCTURE <structure>
ADD MINING MODEL <model>
(
    <column definition list>
  [(<nested column definition list>) [WITH FILTER (<nested filter criteria>)]]
)
USING <algorithm> [(<parameter list>)] 
[WITH DRILLTHROUGH]
[,FILTER(<filter criteria>)]

参数

  • structure
    要向其中添加挖掘模型的挖掘结构的名称。

  • model
    挖掘模型的唯一名称。

  • column definition list
    列定义的逗号分隔列表。

  • nested column definition list
    嵌套表中列的逗号分隔的列表(如果适用)。

  • nested filter criteria
    应用于嵌套表中的列的筛选表达式。

  • algorithm
    提供程序定义的数据挖掘算法的名称。

    注意注意

    通过使用 DMSCHEMA_MINING_SERVICES 行集 可检索当前提供程序支持的算法的列表。若要查看当前 Analysis Services 实例支持的算法,请参阅数据挖掘属性

  • parameter list
    可选。由提供程序定义的算法所需参数的逗号分隔列表。

  • filter criteria
    应用于事例表中的列的筛选表达式。

注释

如果挖掘结构中包含组合键,则挖掘模型必须包括该结构中定义的所有键列。

如果模型不需要可预测列(例如,使用 Microsoft 聚类分析和 Microsoft 顺序分析和聚类分析算法生成的模型),则不必在语句中包括列定义。生成的模型中的所有属性都将被视为输入。

在应用于事例表的 WITH 子句中,可以同时为筛选和钻取操作指定选项:

  • 添加 FILTER 关键字和筛选条件。筛选器应用于挖掘模型中的事例。

  • 添加 DRILLTHROUGH 关键字,以使挖掘模型的用户可以从模型结果深化到事例数据。在数据挖掘扩展插件 (DMX) 中,仅当创建模型时才能启用钻取功能。

若要同时使用事例筛选功能和钻取功能,应使用以下示例中所示的语法,在单条 WITH 子句中组合关键字:

WITH DRILLTHROUGH, FILTER(Gender = 'Male')

列定义列表

通过指定包括每一列对应的如下信息的列定义列表,来定义模型的结构:

  • 名称(必选)

  • 别名(可选)

  • 建模标志

  • 由 PREDICT 或 PREDICT_ONLY 子句指示的预测请求,用于向算法指示该列是否包含可预测值

使用以下列定义列表语法来定义单个列:

<structure column name>  [AS <model column name>]  [<modeling flags>]    [<prediction>]

列名和别名

在列定义列表中使用的列名必须是该列在挖掘结构中使用的名称。不过,您可以选择定义一个别名来表示挖掘模型中的结构列。也可以为同一个结构列创建多个列定义,并为该列的每个副本分配一个不同的别名和预测用途。如果您不定义别名,则默认情况下将使用结构列名。有关详细信息,请参阅如何为模型列创建别名

对于嵌套表列,应指定嵌套表的名称,将数据类型指定为 TABLE,然后提供要包括在模型中的嵌套列的列表(括在括号内)。

可以通过在嵌套表列定义后附上一个筛选条件表达式,来定义应用于嵌套表的筛选表达式。

建模标志

Analysis Services 支持将下列建模标志用在挖掘模型列中:

注意注意

NOT_NULL 建模标志应用于挖掘结构列。有关详细信息,请参阅 CREATE MINING STRUCTURE (DMX)

术语

定义

REGRESSOR

指示该算法可以在回归算法的回归公式中使用指定列。

MODEL_EXISTENCE_ONLY

指示该属性列的值没有该属性的存在重要。

可以为一个列定义多个建模标志。有关如何使用建模标志的详细信息,请参阅建模标志 (DMX)

预测子句

预测子句说明使用预测列的方式。下表将列出可能的子句。

PREDICT

该列可以由模型预测,并且它的值可用作输入以预测其他可预测列的值。

PREDICT_ONLY

此列可以由模型预测,但其值不可用于输入事例来预测其他可预测列的值。

筛选条件表达式

可以定义限制在挖掘模型中使用的事例的筛选器。此筛选器可应用于事例表中的列和/或嵌套表中的行。

筛选条件表达式是简化的 DMX 谓词,与 WHERE 子句相似。筛选表达式仅限于使用基本数学运算符、标量和列名的公式。但 EXISTS 运算符是个例外,如果为子查询至少返回一行,则它的计算结果为 true。可以通过使用常用逻辑运算符 AND、OR 和 NOT 来组合谓词。

有关与挖掘模型一起使用的筛选器的详细信息,请参阅为挖掘模型创建筛选器(Analysis Services – 数据挖掘)

注意注意

筛选器中的列必须是挖掘结构列。不能对模型列或别名列创建筛选器。

有关 DMX 运算符和语法的详细信息,请参阅挖掘模型列

参数定义列表

可以通过向参数列表中添加算法参数来调整模型的性能和功能。可使用的参数取决于您在 USING 子句中指定的算法。有关与每种算法关联的参数的列表,请参阅数据挖掘算法(Analysis Services – 数据挖掘)

参数列表语法如下:

[<parameter> = <value>, <parameter> = <value>,…]

示例 1:向结构中添加模型

下面的示例向 New Mailing 挖掘结构中添加 Naive Bayes 挖掘模型,并将属性状态的最大数目限定为 50。

ALTER MINING STRUCTURE [New Mailing]
ADD MINING MODEL [Naive Bayes]
(
    CustomerKey, 
    Gender,
    [Number Cars Owned],
    [Bike Buyer] PREDICT
)
USING Microsoft_Naive_Bayes (MAXIMUM_STATES = 50)

示例 2:向结构中添加筛选后的模型

下面的示例将 Naive Bayes Women 挖掘模型添加到 New Mailing 挖掘结构中。新模型有着与示例 1 中添加的挖掘模型相同的基本结构;但是,此模型将挖掘结构中的事例限定为 50 岁以上的女性客户。

ALTER MINING STRUCTURE [New Mailing]
ADD MINING MODEL [Naive Bayes Women]
(
    CustomerKey, 
    Gender,
    [Number Cars Owned],
    [Bike Buyer] PREDICT
)
USING Microsoft_Naive_Bayes
WITH FILTER([Gender] = 'F' AND [Age] >50)

示例 3:将筛选后的模型添加到具有嵌套表的结构中

下面的示例将一个挖掘模型添加到市场篮挖掘结构的修改后的版本中。已修改示例中使用的挖掘结构以添加一个 Region 列和一个 Income Group 列,前者包含客户区域属性,后者通过使用 High、Moderate 或 Low 值对客户收入进行分类。

挖掘结构还包括一个嵌套表,其中列出客户已购买的商品。

因为挖掘结构包含嵌套表,所以可以对事例表和/或嵌套表定义筛选器。本示例结合使用事例筛选器和嵌套行筛选器,将事例限定为购买过 road 轮胎型号之一的欧洲高收入客户。

ALTER MINING STRUCTURE [Market Basket with Region and Income]
ADD MINING MODEL [Decision Trees]
(
    CustomerKey, 
    Region,
    [Income Group],
    [Product] PREDICT (Model) 
WITH FILTER (EXISTS (SELECT * FROM [v Assoc Seq Line Items] WHERE 
 [Model] = 'HL Road Tire' OR
 [Model] = 'LL Road Tire' OR
 [Model] = 'ML Road Tire' )
)
) WITH FILTER ([Income Group] = 'High' AND [Region] = 'Europe')
USING Microsoft_Decision Trees