数据挖掘--挖掘频繁模式、关联和相关(2)

上一篇文章简述了挖掘频繁模式的基本概念:频繁模式即频繁出现在数据集中的模式,模式的类型有很多种,比如项集,序列和结构。频繁模式的挖掘就是关联规则的挖掘,就是通过找出所有的频繁模式然后推导出规律性的结论。

本文继续讨论频繁项集的挖掘方法,我们分析的模型仍然是最简单的“单维、单层、布尔频繁项集”。我们介绍的方法称为Apriori算法。

Apriori算法:利用频繁项集性质的先验知识,使用层序搜索迭代。具体方法是遍历数据库,记录每项的计数,并收集满足最小支持度的项,以得出频繁1项集--L1。然后用L1找出L2,用L2找出L3,以此类推,直到不能再找到频繁k项集。

由于每次都要遍历数据库,所以需要找到一种减少搜索空间的办法--利用Apriori性质:

"频繁项集的非空子集也是频繁的"---反单调性

这个命题可以证逆否命题:即只要子集不频繁,则该项集不频繁。因为包含越多的项集,总体概率一定越小,所以命题很容易得证。试想有n个人买了大白菜,那同时买大白菜和土豆的人数肯定不会比n大。

换句话说所以只要某项集不频繁,则其超集都不频繁。所以只要迭代的找到Lk-1项频繁项集,并且发现找不到Lk项频繁项集,那么更多项的频繁项集一定不存在,因而迭代结束。

那么迭代的过程如何呢?这里主要用到连接步剪枝步:

【连接步】大概的意思就是把两个k-1项集连接成k项集,具体算法可以参考现有资料。

【剪枝步】指的是每一步都检查该项集是否有非频繁子集,如果有则丢弃。

这样,首先遍历一次数据库,获得所有1项集的支持度,然后筛选出频繁1项集,再用频繁1项集进行连接步,得出备选的2项集,然后对2项集统计计算支持度并剪枝,结果得出频繁2项集,再用频繁2项集连接步,得备选3项集,再对3项集统计支持度并剪枝,得出频繁3项集....

所以就是这样一个过程的迭代:【对备选k项集统计支持度,并剪枝】--得出频繁k项集--【用频繁k项集连接步】--得出备选k+1项集

这样就可以得出所有的频繁项集,并且记录下每个项集的支持度。因而利用上一篇的公式:

confidence(A=>B) = P(B|A) = support(AUB)/support(A) = support_count(AUB)/support_count(A)

就可以得出所有规则的置信度,并挖掘出感兴趣的强规则。

猜你喜欢

转载自blog.csdn.net/owengbs/article/details/7484613