Apriori算法中的字典顺序

时间:2013-12-05 16:04:35

标签: algorithm apriori

我正在使用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 个答案:

答案 0 :(得分:3)

是的,你不应该加入他们。

我们举一个例子。

让我们说在第3级,你有频繁的项目集:

{A,B,C} {A,B,D} {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论文中得到证据。

希望这有帮助。