数据挖掘中的apriori算法的具体步骤是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘中的apriori算法的具体步骤是啥?相关的知识,希望对你有一定的参考价值。

参考技术A 算法:Apriori
输入:D - 事务数据库;min_sup - 最小支持度计数阈值
输出:L - D中的频繁项集
方法:
L1=find_frequent_1-itemsets(D); // 找出所有频繁1项集
For(k=2;Lk-1!=null;k++)
Ck=apriori_gen(Lk-1); // 产生候选,并剪枝
For each 事务t in D // 扫描D进行候选计数
Ct =subset(Ck,t); // 得到t的子集
For each 候选c 属于 Ct
c.count++;

Lk=c属于Ck | c.count>=min_sup

Return L=所有的频繁集;

Procedure apriori_gen(Lk-1:frequent(k-1)-itemsets)
For each项集l1属于Lk-1
For each项集 l2属于Lk-1
If((l1[1]=l2[1])&&( l1[2]=l2[2])&&……..
&& (l1[k-2]=l2[k-2])&&(l1[k-1]<l2[k-1])) then
c=l1连接l2 //连接步:产生候选
if has_infrequent_subset(c,Lk-1) then
delete c; //剪枝步:删除非频繁候选
else add c to Ck;

Return Ck;

Procedure has_infrequent_sub(c:candidate k-itemset; Lk-1:frequent(k-1)-itemsets)
For each(k-1)-subset s of c
If s不属于Lk-1 then
Return true;
Return false;

Apriori 算法中的字典顺序

【中文标题】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算法的具体步骤是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Apriori算法

Apriori算法

Apriori算法详解之一相关概念和核心步骤

R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息获取更独特的有新意的关联规则

Apriori 算法中的字典顺序

[ML&DL] 频繁项集Apriori算法