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关联规则算法是已知 Apriori 算法的直接实现。

Microsoft决策树算法和Microsoft关联规则算法都可以分析关联,但每个算法发现的规则可能有所不同。 在决策树模型中,信息获取决定了导致特定规则的拆分。 在关联模型中,置信度完全确定规则。 因此,在关联模型中,强规则或置信度较高的规则可能并不一定很有趣,因为它不提供新信息。

Microsoft关联算法的实现

Apriori 算法不分析模式。 而是生成候选项集,然后对 候选项集进行计数。 项可以表示事件、产品或属性的值,具体取决于分析的数据类型。

在最常见的关联模型中,将表示是/否或缺失/现有值的布尔变量分配给每个属性,例如产品或事件名称。 市场篮分析是关联规则模型的示例,该模型使用布尔变量来表示客户购物篮中是否存在或缺少特定产品。

对于每个项集,该算法将创建表示支持和置信度分数。 可以使用这些分数对项集进行排名和派生有趣的规则。

还可以为数值属性创建关联模型。 如果属性是连续的,则可以 离散化或对存储桶中的数字进行分组。 可以将离散化值处理为布尔值或属性值对。

支持、概率和重要性

支持度(有时称为 频率)是包含目标项或项组合的案例数量。 该模型只能包含至少具有指定支持量的项。

频繁项集是指一组项,其项组合的支持度高于由 MINIMUM_SUPPORT 参数定义的阈值。 例如,如果项集为 {A,B,C} 且MINIMUM_SUPPORT值为 10,则必须在至少 10 个事例中找到每个项 A、B 和 C 才能包含在模型中,并且必须在至少 10 个事例中找到项 {A,B,C} 的组合。

注释

还可以通过指定项集的最大长度来控制挖掘模型中的项集数,其中长度表示项数。

默认情况下,任何特定项或项集的支持度是包含该项或这些项的案例数。 但是,您也可以将该数值输入为小于 1 的小数,从而将 MINIMUM_SUPPORT 表示为数据集中总案例数的百分比。 例如,如果指定MINIMUM_SUPPORT值为 0.03,则表示数据集中总事例的至少 3% 必须包含此项或项集才能包含在模型中。 试验模型以确定使用计数还是百分比更有意义。

相比之下,规则的阈值不表示为计数或百分比,而是表示为概率,有时称为 置信度。 例如,如果项集 {A,B,C} 发生在 50 个事例中,但项集 {A,B,D} 也发生在 50 个事例中,而另外 50 个事例中的项集 {A,B} 显然不是 {C} 的强预测值。 因此,若要根据所有已知结果对特定结果进行加权,SQL Server Analysis Services通过将项集 {A、B,C} 的支持除以对所有相关项集的支持来计算单个规则(如 If {A,B} Then {C})的概率。

可以通过设置MINIMUM_PROBABILITY的值来限制模型生成的规则数。

对于它创建的每个规则,SQL Server Analysis Services输出一个指示其重要性的分数,也称为提升。 提升重要性对于项集和规则的计算方式不同。

项集的重要性计算为项集的概率除以项集中各个项的复合概率。 例如,如果项集包含 {A,B},则SQL Server Analysis Services首先计算包含此组合 A 和 B 的所有事例,并将该计数除以事例总数,然后规范化概率。

规则的重要性通过给定规则左侧时规则右侧的对数似然来计算。 例如,在规则 If {A} Then {B}中,SQL Server Analysis Services 计算包含 A 和 B 的事例与包含 B 但不含 A 的事例之间的比率,然后使用对数刻度对该比率进行规范化处理。

功能选择

Microsoft关联规则算法不执行任何类型的自动功能选择。 相反,该算法提供用于控制算法使用的数据的参数。 此控件可能包括每个项集的大小限制,或设置向模型添加项集所需的最大和最小支持。

  • 若要筛选掉过于常见因而不感兴趣的项和事件,请减小MAXIMUM_SUPPORT的值,从模型中删除非常频繁的项集。

  • 若要筛选出很少见的项目和项集,请增加MINIMUM_SUPPORT的值。

  • 若要筛选出规则,请增加MINIMUM_PROBABILITY的值。

自定义 Microsoft 关联规则算法

Microsoft关联规则算法支持影响生成的挖掘模型的行为、性能和准确性的多个参数。

设置算法参数

可以使用 SQL Server Data Tools 中的数据挖掘设计器随时更改挖掘模型的参数。 还可以通过在 AMO 中使用 AlgorithmParameters 集合或使用 XMLA 中的 MiningModels 元素(ASSL) 以编程方式更改参数。 下表描述了每个参数。

注释

无法使用 DMX 语句更改现有模型中的参数。 必须在 DMX CREATE MODEL 或 ALTER STRUCTURE 中指定参数...创建模型时添加 MODEL。

MAXIMUM_ITEMSET_COUNT
指定要生成的项集的最大数目。 如果未指定数字,则使用默认值。

默认值为 200000。

注释

项集按支持排名。 在具有相同支持的项集中,排序是任意的。

MAXIMUM_ITEMSET_SIZE
指定项集中允许的最大项数。 将此值设置为 0 指定项集的大小没有限制。

默认值是3。

注释

降低此值可能会减少创建模型所需的时间,因为达到限制时模型处理会停止。

MAXIMUM_SUPPORT
指定项集对其支持所具有的最大案例数。 使用此参数可消除经常出现的项,因此可能没有什么意义。

如果将此值设置为小于 1,则该值表示总事例的百分比。 大于 1 的值表示可以包含项集的事例的绝对数。

默认值为 1。

MINIMUM_ITEMSET_SIZE
指定项集中允许的最小项数。 如果增加此数字,则模型可能包含较少的项集。 例如,如果要忽略单项项集,则此更改非常有用。

默认值为 1。

注释

不能通过增加最小值来减少模型处理时间,因为SQL Server Analysis Services必须计算单个项的概率作为处理的一部分。 但是,通过将此值设置为更高,可以筛选出较小的项集。

MINIMUM_PROBABILITY
指定规则为 true 的最小概率。

例如,如果将此值设置为 0.5,则表示无法生成小于 50% 概率的规则。

默认值为 0.4。

MINIMUM_SUPPORT
指定在算法生成规则之前,项集必须包含的最小实例数。

如果将此值设置为小于 1,则最小事例数将计算为总事例的百分比。

如果将此值设置为大于 1 的整数,则指定最小案例数计算为必须包含该项集的案例计数。 如果内存有限,算法可能会自动增加此参数的值。

默认值为 0.03。 此值表示,某项集若要包含在模型中,必须至少出现在 3% 的情况中。

OPTIMIZED_PREDICTION_COUNT
定义要缓存以优化预测的项数。

默认值为 0。 使用默认值时,该算法将生成查询中请求的预测数。

如果为OPTIMIZED_PREDICTION_COUNT指定非零值,即使请求其他预测 , 预测查询最多可以返回指定的项数。 但是,设置值可以提高预测性能。

例如,如果将值设置为 3,则算法仅缓存三个项目进行预测。 你无法看到其他预测,而这些预测的可能性可能与算法返回的三个结果同样高。

建模标志

Microsoft 关联规则算法支持以下建模标志。

NOT NULL
指示该列不能包含空值。 如果在模型训练期间SQL Server Analysis Services遇到 null,则返回错误。

应用于挖掘结构列。

MODEL_EXISTENCE_ONLY
将列视为具有两种可能的状态: Missing 和 Existing。 null 是缺失值。

适用于挖掘模型列。

要求

关联模型必须包含键列、输入列和单个可预测列。

输入列和可预测列

Microsoft关联规则算法支持下表中列出的特定输入列和可预测列。 有关挖掘模型中内容类型的含义的详细信息,请参阅内容类型(数据挖掘)。

列 内容类型
输入属性 循环、离散、离散化、键、表、有序
可预测属性 周期性、离散、离散化、表、有序

注释

该算法支持循环和有序内容类型,但它将其视为离散值,并且不执行特殊处理。

另见

Microsoft关联算法
关联模型查询示例
关联模型的挖掘模型内容(Analysis Services - 数据挖掘)