数据挖掘---挖掘频繁模式、关联和相关性
一、频繁模式
频繁地出现在数据集中的模式(如项集、子序列或子结构)。
例1:频繁地同时出现在交易数据集中的商品(如牛奶和面包)的集合是频繁项集。
2:购物篮分析案例:通过发行顾客放入它们购物篮中商品之间的关联,分析顾客购物习惯。这种关联的发现可以帮助零售商了解哪些商品频繁地被顾客同时购买,从而帮助它们制定更好的营销策略。
二、支持度、置信度
关联规则的支持度(support)和置信度(confidence)是规则兴趣度的两种度量。
其分别反映所发现规则的有用性和确定性。
在典型情况下,关联规则被认为是有趣的,如果它满足最小支持度阈值和最小置信度阈值。
三、频繁项集、闭项集和关联规则
3.1 支持度、置信度
假设:对于事件A,B
(1)支持度support :A,B同时发生的概率(支持度没有先后之分)
(2)置信度:发生A事件,同时也出现B事件的概率
3.2 关联规则挖掘过程
挖掘关联规则的问题可以归结为挖掘频繁项集
(1)找出所有的频繁项集。根据定义这些项集的每个频繁出现次数至少为预先定义的min_sup;
(2)由频繁项集产生强关联规则。根据定义,这些规则必须满足最小支持度和最小置信度。
大型数据集中第一步会产生大量满足最小支持度(min_sup)阈值的项集。(如果一个项集是频繁地,,其子集也必然是频繁地)。对于任何计算机,项集的个数太大了,都无法计算和存储。因此引入了 闭频繁项集和极大频繁项集概念。
3.3 频繁项集挖掘方法 (如何由频繁项集产生强关联规则)
先学习挖掘最简单形式的频繁模式的方法。这种频繁模式如购物篮分析中那些。
我们从Apriori(先验)算法开始。Apriori算法是一种发型频繁项集的基本算法。
(1)算法原理
Apriori算法使用一种称为逐层搜索的迭代方法,其中k项集用于探索(k+1)项集。
首先,扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁1项的集合,记为;
然后,使用找出频繁2项集的集合
;
......
最后,直到不能再找到频繁k项集。找出的每个都需要一次数据库的完整扫描。
为了提高频繁项集逐层产生的效率,一种称为先验性质(Apriori property)的中药性质用于压缩搜索空间。
先验性质:频繁项集的所有非空子集也一定是频繁地。
注意这里L2与L2互连也不是随意的。{1,2}只跟含有1、2的项互连
(2)由频繁项集产生关联规则
一旦由数据库D中的事务找出频繁项集,就可以直接由它们产生强关联规则(强关联规则:满足最小支持度和最小置信度)
(3) Apriori算法的变形(提高效率和可伸缩性)
基于散列的技术、事务压缩、划分、抽样、动态项集计数
(4)挖掘频繁项集的模式增长方法
Apriori算法的候选产生-检查方法显著压缩了候选项集的规模,并产生了很好的性能,但是它受两种非凡开销的影响:1、需要产生大量候选项集;2、需要重复扫描整个数据库。因此产生了频繁模式增长(FP-growth)
其分治策略如下:
首先:将代表频繁项集的数据库压缩到一颗频繁模式树(FP树),该树扔保留项集的关联信息;
然后:把这种压缩后的数据库划分为一组条件数据库(一种特殊类型的投影数据库),每个数据库关联一个频繁项或“模式段”, 并分别挖掘出每个条件数据库;
然后:对于每个“模式片段”,只需考虑与它相关联数据集;
因此:随着被考察模式的“增长”,这种方法可以显著地压缩被搜索的数据集的大小。
解题:
3.4 挖掘频繁项集的其他办法
使用垂直数据格式挖掘频繁项集、
挖掘闭模式和极大模式(重点说下闭模式(阅读文献用到))
频繁模式挖掘可能产生大量频繁项集,闭频繁项集可以显著减少频繁模式挖掘所产生的模式数量,而且保持频繁项集集合的完整信息。即,从闭频繁项集的集合可以很容易得到频繁项集的集合和其支持度。所以实践中更希望挖掘闭频繁项集的集合,而不是所有频繁项集的集合。
1、那么如何挖掘闭频繁项集呢
(1)一种朴素的方法是,首先挖掘频繁项集的完全集,然后删除这样的频繁项集,它们是某个频繁集的真子集,并且具有相同的支持度;但是这种方法的开销太大;
(2)另一种是在挖掘过程中直接搜索闭频繁项集。这要求在挖掘过程中一旦识别闭项集就尽快对搜索空间进行剪枝。剪枝策略如下:
(3)另一种优化是有效的检查新发现的频繁项集,看它是否是闭的,因为挖掘的过程不能确保所产生的每个频繁项集都是闭的。 当一个新的频繁项集导出后,必须进行两种闭包检查:超集检查;子集检查
参考:《数据挖掘概念与技术》