FP-Growth(并发)
剧情简介
该Operator使用FP-tree数据结构有效地计算ExampleSet中所有频繁出现的项集。描述
在网上购物时,你有时会得到以下形式的建议:“购买X商品的顾客也购买了y商品。”此建议是关联规则的一个示例。为了得到它,你首先必须知道市场上哪些商品最常出现在顾客的购物篮中,在这里FP-Growth算法可以发挥作用。
FP-Growth算法是一种计算事务数据库中频繁共存项的高效算法。为了理解它是如何工作的,让我们从一些术语开始,以客户事务为例:
- 物品-在市场上出售的任何物品
- 篮子-客户选择的一个或多个项目的容器
- Itemset—在同一购物篮中一起出售的任何商品的子集
- 交易-在购买的那一刻,在单个购物篮里的全部物品
- 交易数据库-由商家记录的完整的购物篮/交易
在这里,“购物篮”和“交易”这两个词可以互换使用,因为我们将客户的购物篮与所购买的商品标识在一起。为了使这些定义具体化,请考虑以下事务数据库:
- Transaction1 = (product1, product2, product7)
- Transaction2 = (product2, product5, product7)
- Transaction3 = (product6, product7, product8, product9)
- Transaction4 = (product1, product3, product4, product6, product7)
游戏中有9种不同的道具可供出售,有4个篮子/交易,包含不同数量的道具。出现最频繁的项product7在事务数据库中出现了四次。以下每个项集出现两次:(product1, product7), (product2, product7), (product6, product7)。
可以有效地创建fp树数据结构,将数据压缩得如此之大,以至于在许多情况下,甚至大型数据库也可以放入主内存中。在上面的示例中,FP-tree的根旁将有最频繁出现的产品product7,其分支从product7到product1、product2和product6。如果我们坚持一个产品必须在事务数据库中出现不止一次,那么剩余的产品将被排除在fp树之外。乐鱼全站app下载事务数据库最初可能是一个4 x 9(事务x产品)数据表,其中有许多零条目,但现在它被简化为一个极简的树,只捕获相关的频率数据。乐鱼全站app下载
即使有一个有效的树结构,算法所考虑的项目集的数量也会变得非常大。通过参数的帮助项目集的最大数量,您可以在必要时减少运行时间和内存。
请记住,网上购物只是一个例子;FP-Growth算法可以应用于任何可以用项目、项目集和篮子/交易来表述的问题。该算法的典型设置是一个大型事务数据库(许多篮子),每个篮子中只有少量的项目——与所有项目的集合相比很小。
- support =(一个项目或项目集在数据库中出现的次数)/(数据库中篮子的数量)
一般来说,“最小支持”的概念创建了一个界限,定义了项目集频繁出现或不频繁出现的含义。如果一个项目或项目集只出现在几个筐中,则通过参数将其排除最小的支持或最小频率.排除不经常出现的项和项集有助于压缩数据并提高结果的统计显著性。另一方面,如果最小的支持或最小频率设置过高,算法可能找不到零项集。因此,该操作符通过复选框提供了两种主要模式求最小项集数:
1.如果未选中,则使用固定的最小支持值,并且
2.如果选中,使用动态最小支持值,以确保结果包含最小数量的项集。
FP-Growth支持几种不同的输入数据格式。请注意以下要求:
- 在ExampleSet中,一个事务=一行。有关这些列的讨论,请参见下面。
- 所有项目的值必须是标称的
- 事务ID是可选的,如果存在,它应该具有“ID”角色,这样它就不会被标识为项。
对于列,在第二篇教程中说明了三种可用的输入格式,以及必要的预处理。以下是总结:
- 列中的项目列表:属于一个事务的所有项目以类似csv的格式显示在一个列中,由项目分隔符分隔。与CSV文件一样,条目可以加引号,并且可以使用转义字符。您可以修改项目名称。
- 分列项:属于一个事务的所有项显示在分列中。对于每个事务,第一个项目名称出现在第一列,第二个项目名称出现在第二列,依此类推。列数对应于具有最大项目数的篮子。缺少值表示没有项目。您可以修改项目名称。
- 虚拟编码列中的项目:所有项目集合中的每个项目都有自己的列,项目名称是列名。对于每笔交易,二值(true/false)表示该商品是否可以在购物篮中找到。如果您的数据是二项式的,但没有将值标识为true/false,则可能必须设置正值参数。
输入
- 榜样(数据表)
这个输入端口需要一个ExampleSet。正如在描述中详细讨论的那样,这个Operator支持输入数据的几种不同格式。
输出
- 榜样(数据表)
作为输入给出的ExampleSet将不做任何更改地传递。
- 频繁集(频繁项目集)
频繁出现的项集通过该端口传递。诸如Create Association Rules之类的操作符可以使用这些频繁出现的项集来生成关联规则。
参数
- input_format
参见第二篇教程中的示例。正如在描述中详细讨论的那样,这个Operator支持输入数据的几种不同格式。
- 列中的项目列表:属于一个事务的所有项目以类似csv的格式显示在一个列中,由项目分隔符分隔。
- 分列显示项目:属于一个事务的所有项目显示在单独的列中,第一个项目名称显示在第一列,第二个项目名称显示在第二列,等等。
- 虚拟编码列中的项目:所有项目集合中的每个项目都有自己的列,项目名称是列名。对于每笔交易,二值(true/false)表示该商品是否可以在购物篮中找到。
- item_separators
此参数定义项分隔符。它也可以作为正则表达式提供。
范围: - use_quotes
选中此参数定义a引号字符.在CSV文件中,如果项分隔符有可能出现在项目名称中,可以使用引号来防止混淆。例如,if(,)是项分隔符,而(")是引号字符,则行(a,b,c,d)将被解释为4项。另一方面,("a,b,c,d")将被解释为单个项,其值为a,b,c,d。
范围: - quotes_character
此参数定义引号字符并且只有在使用引号检查。
范围: - escape_character
此参数定义转义字符,用来逃避的引号字符或项分隔符。例如,if(")是引号字符('\')是转义字符,则("yes")被解释为(yes), (\"yes\")被解释为("yes")。If('|')是项分隔符,('\')是转义字符,则一行(a\|b|c)被解释为两个项(a|b)和(c)。
范围: - trim_item_names
如果选中此参数,则删除项目名称开头和结尾的空白。
范围: - positive_value
在…的情况下虚拟编码列中的项使用二项属性时,此参数确定应将哪个值视为正数,从而确定哪些项属于事务。如果此参数为空,则从ExampleSet推断出正值。
范围: - min_requirement
该参数提供了两种不同的方法来定义截止,消除不经常出现的项集。
- support:最小支持值(出现次数与ExampleSet大小的比例)
- frequency:最小频率(出现次数)
- min_support
最小支持= (itemset出现的次数)/ (ExampleSet的大小)
减小此值以增加结果中的项集数量。
范围: - min_frequency
最小频率=一个项目集出现的次数
减小此值以增加结果中的项集数量。
范围: - min_items_per_itemset
项集大小的下界。
范围: - max_items_per_itemset
项集大小的上限(0:没有上限)。
范围: - max_number_of_itemsets
项目集数量的上限(0:没有上限)。如果内存用完,请减小此值或增大最小的支持或最小频率.
范围: - find_min_number_of_itemsets
选中该参数,结果将至少包含a最小项集数量,支持率最高的。最小支持值会自动减少,直到找到最小的项集数量。
范围: - min_number_of_itemsets
此参数仅在……时有效求最小项集数检查。此参数指定结果中应包含的最小项集数量。
范围: - max_number_of_retries
此参数仅在……时有效求最小项集数检查。当自动减少最小支持/最小频率的值时,此参数决定操作员在放弃之前可以减少多少次。增加这个数字可以得到更多的结果。
范围: - requirement_decrease_factor
此参数仅在……时有效求最小项集数检查。当自动减少最小支持/最小频率的值时,这个乘法因子决定了新的截止值。值越低,查找所需项目集数量的步骤就越少。
范围: - must_contain_list
该参数通过精确的项名列表指定必须包含在频繁出现的项集中(如果有的话)的项。
范围: - must_contain_regexp
该参数通过正则表达式指定必须包含在频繁出现的项集中(如果有的话)的项。
范围:
教程的过程
FP-Growth算子介绍
这个过程显示了一个市场篮子分析。使用检索操作符加载包含事务的数据集。这里插入了一个断点,以便您可以查看ExampleSet。我们必须使用Aggregate Operator进行一些预处理,以将ExampleSet塑造成可接受的输入格式。在FP-Growth Operator之前插入一个断点,以便您可以查看输入数据。使用FP-Growth算子生成频繁项集。最后,使用Create Association Rules Operator从频繁项集创建规则。频繁项集和关联规则可以在Results View中查看。用不同的参数值运行这个过程,以便更好地理解这个Operator。
FP-Growth算子的输入格式
数据被加载并转换为三种不同的输入格式。在FP-Growth operator之前插入一个断点,以便您可以看到每种格式的输入数据。使用FP-Growth Operator,结果项集可以在Results View中查看。结果都是相同的,因为输入数据是相同的,尽管格式不同。