Apriori 算法中的字典顺序
Posted
技术标签:
【中文标题】Apriori 算法中的字典顺序【英文标题】:Lexicographical order in Apriori algorithm 【发布时间】:2013-12-05 16:04:35 【问题描述】:我正在使用 Apriori 算法一段时间,我正在询问我在频繁项集的候选生成中的一个步骤。
如果我想将两个频繁的 3 项集连接到一个(候选)4 项集中,则连接项集中必须有 2 项相同而另一项不同。
比如我可以加入
Married: Yes, Age:20, Cars:1 and Married: Yes, Age:20, Unemployed: No
到
Married: Yes, Age:20, Cars:1, Unemployed: No
但有时我在 Apriori 算法中读到了这一步:
我可以加入两个频率。来自 L_k-1 的项目,当有按字典顺序排列的前 k-2 个项目相同而最后一个项目不同时。
但是当我从上面的词典排序我的项目集时,第一个 k-2 项目不会相同,所以我可能不会加入它们?!?
Age:20, Cars:1, Married: Yes and Age:20, Married: Yes Unemployed: No
希望我能把我的问题解释清楚!
感谢您的帮助!!
【问题讨论】:
【参考方案1】:是的,你不应该加入他们。
举个例子吧。
假设在第 3 级,您有频繁项集:
A, B, C 甲、乙、丁 A C, D B, C, D B, F, G
现在假设您要生成大小为 4 的候选项目集。
显然,您只想组合具有 1 个不同项目的项目集。否则,结果可能包含大小大于 4 的项集。例如,如果您可以组合 BCD 和 BFG,结果将是 BCDFG 大小为 5 的项集,这是我们不想要的。这就是为什么我们只组合具有一个不同项目的项目集的原因。
现在,让我解释一下为什么我们只组合具有前 k-1 个相同项的项集。原因是我们不想两次生成相同的候选。
例如,如果我们可以结合 BCD 和 ACD ,我们将得到 ABCD 。如果我们同时结合 ABC 和 ABD,我们也会得到 ABCD。这不好,因为我们会生成两次相同的候选!我们不希望这样!因此,通过按照字典顺序对项集进行排序,并且仅在前 k-1 个项相同时才合并,我们将避免这个问题。我们只会结合 ABC 和 ABD,但不会结合 BCD 和 ACD。你可以在 Apriori 论文中得到证明它有效的证据。
希望这会有所帮助。
【讨论】:
以上是关于Apriori 算法中的字典顺序的主要内容,如果未能解决你的问题,请参考以下文章