我正在使用 Apriori 算法一段时间,我问我有关频繁项集候选生成的步骤。
如果我想将两个频繁的 3 项集连接到一个(候选)4 项集,则连接项集中必须有 2 项相同,而另一项不同。
例如我可以加入
{Married: Yes, Age:20, Cars:1} and {Married: Yes, Age:20, Unemployed: No}
Run Code Online (Sandbox Code Playgroud)
到
{Married: Yes, Age:20, Cars:1, Unemployed: No}
Run Code Online (Sandbox Code Playgroud)
但有时我读到 Apriori 算法中的这一步:
我可以加入两个频率。L_{k-1} 中的项,当按字典顺序排序时,前 k-2 项相同,最后一项不同。
但是当我从上面的词典中订购我的项目集时,第一个 k-2 项目不会相同,所以我可能不会加入它们?!?
{Age:20, Cars:1, Married: Yes} and {Age:20, Married: Yes Unemployed: No}
Run Code Online (Sandbox Code Playgroud)
我希望我能向您清楚地解释我的问题!
感谢您的帮助!!
是的,你不应该加入他们。
让我们举个例子。
假设在第 3 级,您有频繁项集:
{ A、B、C} { A、B、D} { AC、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 论文中得到它有效的证明。
希望这可以帮助。