频繁项集挖掘方法
Apriori算法是一种发现频繁项集的基本算法。
Apriori算法:通过限制候选产生发现频繁项集
先验性质: 频繁项集的所有非空子集也一定是频繁的。
如何在算法中使用先验性质?
- 连接步
- 剪枝步
下面通过一个例子说明:
由频繁项集产生关联规则
由上面计算置信度的公式:
下来是一个例子:
如果最小置信度的阈值为70%,则只有第2、第3和最后一个规则可以输出,因为只有这些是强规则。
提高Apriori算法的效率
- 基于散列的计数: 一种基于散列的计数可以用于研所候选k项集的集合。
以考察k=2项集为例,对应得桶计数低于支持度阈值的2项集不可能是频繁的,因此直接从候选集中删除:
其中$h(x,y) = ((x的序) * 10 + (y的序)) mod 7$中的$x,y$的序表示的是项集的下标。
- 事务压缩:
- 划分(为找候选项集划分数据)
挖掘频繁项集的模式增长方法
Apriori算法的候选产生-检查方法显著压缩了候选项集的规模,并产生了很好的性能,但是它可能受两种非平凡开销的影响。
- 它可能仍然需要产生大量候选项集。例如,如果有$104$个频繁1项集,则Apriori算法需要产生多达$107$个候选2项集
- 它可能休要重复扫描整个数据库,通过模式匹配来检查一个很大的候选集合,检查数据库中每个事务来确定候选项集支持度的开销很大。
一种不产生候选项集的方法叫做频繁模式增长(FP-growth),算法思想如下:
例子如下:
FP树的挖掘过程如下:
使用垂直数据格式挖掘频繁项集
Apriori算法和FP-growth算法都从TID项集格式的事务集中挖掘频繁模式(即${TID: itemset}$),这种数据格式称为水平数据格式。
其中TID是事务表示符,而itemset是事务TID中购买的商品
也可以反过来使用${item :TID_set}$格式表示,这种数据格式称为垂直数据格式。
这种方法的优点:
- 项集的支持度计算简单地等于项集的TID集的长度
- 不需要扫描数据库来确定(k+1)项集的支持度,因为每个k项集的TID集携带了计算支持度的完整信息。
博客园上的格式还没有修改好[原文来自博主CSDN]。