自学数据挖掘十大算法之Apriori

Apriori简述:

Apriori算法是关联规则分析,于1994年由Rakesh提出,其目的是在一个数据集中找出项与项之间的关系,也称购物篮分析。此算法有一个经典的案例:啤酒和尿布,美国的超市经过大量数据分析发现美国的老爷们儿在给自己孩子买纸尿布的同时大多都会提上一些啤酒,于是超市将这两样东西放在一起,大大提高了两者的销量。

概念描述:

    •  项集:指经常出现在一起的物品的集合,关联规则表示某两种物品之间的关系;
    • 候选集(Candidate itemset):通过向下合并得到的项集,定义为C[k];
    • 频繁项集:支持度大于等于特定的最小支持度(Minimum Support)的项集。表示为L[k]。注意,频繁集的子集一定是频繁集;
    • 支持度(Support):数据集中包含该项集的记录所占的比例,定义为support(X) = occur(X) / count(D) = P(X),比如10个人一起去超市买东西,其中有三个人买了苹果,那么苹果在这里的支持度就是0.3,支持度有绝对支持度和相对支持度之分,前者表示某项存在的个数,后者表示该项在所有项中占的比例;
    • 可信度(或置信度)(Confidence),定义为confidence(X->Y) = support(XY) /support(X) = P(X | Y)。

Apriori核心算法过程如下:

       1. 通过单趟扫描数据库D计算出各个1项集的支持度,得到频繁1项集的集合。

       2. 连接步:为了生成,预先生成,由2个只有一个项不同的属于的频集做一个(k-2)JOIN运算得到的。

       3. 剪枝步:由于是的超集,所以可能有些元素不是频繁的。在 潜在k项集的某个子集不是中的成员是,则该潜在频繁项集不可能是频繁的可以从中移去。

       4. 通过单趟扫描数据库D,计算中各个项集的支持度,将中不满足支持度的项集去掉形成。

      通过迭代循环,重复步骤2~4,直到有某个r值使得为空,这时算法停止。在剪枝步中的每个元素需在交易数据库中进行验证来决定其是否加入,这里的验证过程是算法性能的一个瓶颈。这个方法要求多次扫描可能很大的交易数据库。可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点。

伪代码如下:

(1)L1 = find_frequent_1-itemsets(D); // 挖掘频繁1-项集,比较容易

(2)for (k=2;Lk-1 ≠Φ ;k++) {

(3)Ck = apriori_gen(Lk-1 ,min_sup);   // 调用apriori_gen方法生成候选频繁k-项集

(4)for each transaction t ∈ D {         // 扫描事务数据库D

(5)Ct = subset(Ck,t);

(6)for each candidate c ∈ Ct

(7)c.count++;             //   统计候选频繁k-项集的计数

(8)}

(9)Lk ={c ∈ Ck|c.count≥min_sup}  // 满足最小支持度的k-项集即为频繁k-项集

(10) }

(11) return L= ∪ k Lk;   // 合并频繁k-项集(k>0)

算法的图例说明:

交易ID

商品ID

T1

I1 I2 I5

T2

I2 I4

T3

I2 I3

T4

I1 I2 I4

T5

I1 I3

T6

I2 I3

T7

I1 I3

T8

I 1 I2 I3 I5

T9

I1 I2 I3


现在已经有很多改进Apriori算法的方法例如通过基于hash表的项集计数、事物压缩、划分、选样、动态项集计数等可以有效改善Apriori的时间复杂度。在此不再讨论。


参考:

韩家炜:《数据挖掘概念与技术》

http://blog.csdn.net/zjd950131/article/details/8071414



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值