关联规则
关联规则
**节点用途:**该节点是一种基于Apriori算法的关联分析模型。
Apriori 节点会发现数据中的关联规则。关联规则是下列形式的语句:如果 条件 则 结果。 例如,”if 客户购买剃须刀和剃后产品,then 该客户还会购买剃须泡沫,并且置信度为 80%。” Apriori 从数据中提取一系列规则,提取的规则带有出现频率最高的信息内容。
使用要求: 要创建 Apriori 规则集,您需要一个或多个输入字段和一个或多个目标字段。 输入字段和输出字段(角色为输入、目标或两者的字段)必须是符号型字段。角色为无的字段将被忽略。 执行节点之前字段类型必须完全实例化。数据可以是表格格式,也可以是事务格式。
**算法强度:**对于较大的问题,Apriori通常处理速度快。它对于可以包含的规则数也没有任何限制,可以处理最多带有 32 个预条件的规则。 Apriori 提供了五种不同的训练方法,因此将数据挖掘方法与当前问题相匹配时可以实现更强的灵活性。
操作方法:
- 在配置对话框,如下图:

配置选项卡:
说明:
- 对象ID:如输入数据是以单项物品购买为记录的数据格式,选择对象ID(顾客的唯一识别码)
- 物品: 用户单次购买的物品名称
- 项列: 如输入数据是以事务为条目的数据格式,选择用于进行关联规则分析的事务字段
- 算法:系统默认算法Aprior
- 建议在数据集较小时,选择Aprior
- 建议在数据集较大时, 选择FPGrowth
- 最低条件支持度: 产生频繁项集时的支持度的阈值
- 最小规则置信度: 指在剪枝时置信度的阈值。置信度低于该阈值的规则会被剪枝
- 最大前项数: 关联规则X->Y中,X包含的最大宽度
案例如下:
该业务流程包括,对初始数据进行处理,得到可以用于关联分析的事务数据,剔除掉单次购买且仅购买一种商品的购买记录后。连接关联规则节点进行分析,并对分析出的规则通过“置信度*支持度”的方式进行质量评估,最后经排序后选择高质量的关联规则。其整体流程图,如下。

图5.2.1.1购物篮分析工作流图
第一步:产生用来生成关联规则的数据。关联规则节点可以接受两种数据形式:
- 以单项物品购买为记录的原始数据,数据中必须包括用户的唯一识别代码,如图5.2.1.2所示的“卡号”。

图5.2.1.2
- 以事务为条目的数据格式,可以通过原始数据汇总(以用户唯一识别代码分组,汇总“物品”字段的列表)得到,数据格式如图图5.2.1.3所示,其中“列表(物品)”条目为事务数据; 图XX关联规则流程中以此种数据为例。

图5.2.1.3 购物篮数据集
第二步:对数据进行处理,需要删除原数据中单次购买且只购买一件物品的用户记录。
第三步:将处理好的数据连接到关联规则节点,假定原数据为第二种格式,进行节点配置,配置完成后可以执行节点,输出结果。其配置图,如图5.2.1.4所示。

图5.2.1.4 Apriori节点配置图
在完成了配置后,可以对节点进行执行,将输出训练规则,包括前后项及支持度和每条规则的置信度。如下图所示:

图5.2.1.5
第四步:在输出训练表中,通过派生节点生成规则质量字段代表关联规则的质量。
规则质量=$置信度$ * $支持度$
第五步:对规则质量进行排序,查看高质量的规则。

图5.2.1.6关联分析输出数据集图
基于生成的规则,我们知道如果客户购买啤酒和蔬菜罐头的话,那么他有87.4%的可能性还会购买冻肉。同理还可以得到更多关于关联购买的规则。
子集匹配
**节点用途:**该节点用于寻找第一个输入表中与第二个输入表中匹配的所有子集。输出表中成对的输出子集和集。可以用这个节点寻找与给定项集匹配的所有事务。
**匹配方式:**模糊匹配, 至少有一个项集与子集匹配。

配置选项卡:
说明:
- **子集字段:**包含要寻找的子集的字段。
- **ID字段:**搜索集的ID。
- **集字段:**包含搜索集的字段。
- 为匹配集合添加字段: 如果选中此项,将在输出中追加集字段,将会为每一个匹配的集创建一条新的记录。
- 最大不匹配数: 允许的最大的不匹配数。默认值为0。
项集搜索
**节点用途:**该节点提供了不同的算法去搜索频繁项集。集成的算法包括:Apriori、FP生长、RElim、SaM、JIM。
- **Apriori:**Apriori算法对其进行子集格的广度优先搜索。这是一个很快实现,使用前缀树,组织项集计数。
- **FP生长:**该算法表示将事务数据库作为前缀树,它通过将节点组织到列表中并指向同一项目来提升。 该搜索是通过投射前缀树、递归地运行和修剪原始树进行。
- **RElim:**递归消除算法是受FP生长算法的启发,但是它没有前缀树或其他复杂的数据结构。 该算法的主要优势不是因为它的速度,而是其结构简单。基本上,所有的工作都是在一个仅有几行代码的递归函数中完成。
- **SaM:**分裂合并算法结合深度优先遍历一个水平交易表示的子集格。该算法的优势也是因为其简单的结构,它只使用一个简单的数组作为唯一的数据结构。
- **JIM:**它使用Eclat算法的扩展寻找Jaccard项集。类似于频繁项集的挖掘(试图发现事务数据库中支持度超过用户指定阈值(最小支持度)的项集), Jaccard项集的Jaccard指数涵盖了用户指定的阈值。这一措施比简单支持度更好评估项目的关联强度。

配置选项卡:
说明:
- 对象ID:如输入数据是以单项物品购买为记录的数据格式,选择对象ID(顾客的唯一识别码)
- 物品: 用户单次购买的物品名称
- 项列: 如输入数据是以事务为条目的数据格式,选择用于进行关联规则分析的事务字段
- 算法:系统默认算法Aprior
- 建议在数据集较小时,选择Aprior
- 建议在数据集较大时, 选择FPGrowth
- **最小集大小:**设置项集的最小大小
- **最低支持度:**指定在规则集中保留规则的支持度标准。支持度指的是训练数据中条件(规则中的”if”部分)为真的记录的百分比。
案例如下:
我们使用案例“41购物篮分析”中的数据建立如下工作流:

配置节点如下图:

执行结果如下图:
