背景大多数关于频繁项集挖掘的例子都有具有唯一项的交易。例如{1,2}, {1,3}, {2,3,5,6}, {6}
. 我很想知道交易中的重复是否会影响结果。例如{1,2,1}, {2,2,3}, {4,3}, {4,1,2,4,2,6}
问题使用先验算法,事务数据库中对 1 项的支持是什么{1,2,1}, {2,2,3}, {4,3}, {4,1,2,4,2,6}
?我认为结果将是:
{1}: 2
{2}: 3
{3}: 2
{4}: 2
{6}: 1
背景大多数关于频繁项集挖掘的例子都有具有唯一项的交易。例如{1,2}, {1,3}, {2,3,5,6}, {6}
. 我很想知道交易中的重复是否会影响结果。例如{1,2,1}, {2,2,3}, {4,3}, {4,1,2,4,2,6}
问题使用先验算法,事务数据库中对 1 项的支持是什么{1,2,1}, {2,2,3}, {4,3}, {4,1,2,4,2,6}
?我认为结果将是:
{1}: 2
{2}: 3
{3}: 2
{4}: 2
{6}: 1
频繁项集挖掘的原始问题是没有数量的,即一个项目在一次交易中只能出现零次或一次。因此,您提到的情况是未定义的。
如果您想允许重复,您可以查看项目集挖掘问题的变体。
在“高效用项集挖掘”中,每个项目可以出现不止一次,每个项目也可以有一个权重,例如单位利润。高效用项集挖掘的目标是找到具有高效用(例如高利润)的项集。如果你很好奇,你可以看看这篇论文,看看他们是如何根据物品在交易中出现的次数和重量来定义效用的。高效用挖掘问题是比重复问题更普遍的问题。您可以使用诸如 FHM 和 HUI-Miner 之类的高效用项集挖掘算法,如果您为每个项目赋予 1 的权重,它将适用于重复问题。如果您好奇,可以在Java SPMF 数据挖掘库中获得 HUI-Miner 的 Java 实现。
另一种变体是“加权项集挖掘”,其中项具有权重但不能多次出现。
如果你稍微看一下这些变化和其他变化,我认为肯定有人已经解决了这个问题。
“默认” FIM 算法不允许重复。
但是您可以将重复项简单地编码为附加项,即
{ Beer, Beer } -> { Beer, Beer_2 }
然后照常进行。然后,您将获得无聊的关联规则,例如
{ Beer_2 } -> { Beer }
即买了第二瓶啤酒的人也买了第一瓶啤酒。
但是,从结果中删除这些是微不足道的:永远不要考虑移动x
到右侧,何时x_2
在左侧等。
在关联规则挖掘中,如果一个项目在多个事务中而不是在单个事务中重复,则它是频繁的。这就是您不需要在事务中包含重复项目的原因。这就是从该单元格中删除任何此类项目的原因。然后应用先验来获得良好的关联。