块关联
什么是块关联
发掘块关联
- 通过预取提高性能
- 利用关联存储数据,提高读写性能
- 制定更好的缓存替换机制
获取块关联的性质
- 黑盒
- 灰盒
- 白盒
块关联的挖掘
频繁序列的挖掘
数据挖掘技术
包括了关联分析、分类、预测、聚簇分析、外部分析以及演变分析。
假设在事件x和y之间存在着一个强关联,那么意味着如果事件x发生,则事件y也很有可能会发生。我们使用一个关联规则x->y来描述x,y之间的这种关联。
频繁序列挖掘
是关联分析
的一种类型,用于发现序列数据库中的频繁子序列。在序列数据库中,如果一个子序列出现的次数不小于某个特定值(称为min_support),则可认为该序列是频繁的。一个子序列中事件在原来的序列中不要求是连续的。
C –Miner建立在最近所提出的名为“CloSpan”(Closed Sequential Pattern mining)的频繁序列挖掘算法之上。
什么是闭合频繁子序列?
CloSpan的主要思想是仅仅发现那些闭合频繁子序列
,一个闭合序列的支持度(support)是不同于它的父序列的。在上面的例子中,子序列ac就是闭合的,因为它的支持度(support)为5,而它的每一个父序列(例如,abc和agc等)的支持度(support)都不超过4,而子序列ab不是闭合的,因为它的支持度(support)与其父序列abc的支持度(support)值相同。
CloSpan只能生成闭合的而非所有的频繁子序列,原因在于任何非闭合序列都可以被具有相同支持度(support)的父序列来表示。
C-Miner:我们的挖掘算法
基本的挖掘算法有一个限制,那就是没有考虑频繁子序列的间隙。如果频繁序列中包含两个彼此在访问时间上相距很远的访问事件,则这个频繁序列对我们的应用就没有意义。
为了解决这个问题,C-Miner限定了访问距离。为了描述访问流中两个访问事件有多远,将这两个访问事件的访问距离表示为gap,gap由这两个访问事件之间的访问事件数来衡量。
预处理
采用非重叠切割的方法。
核心算法
C-Miner主要包括两个阶段:(1)生成一个频繁子序列的候选集,而这些频繁子序列包括了所有的闭合频繁子序列;(2)从候选集中对非闭合子序列进行剪枝操作。
第一个阶段,C-Miner使用深度优先程序来生成频繁序列的候选集。
基于此,通过将每一个频繁项目与前一次循环得到的较短频繁序列进行拼接,C-Miner可以不断迭代的生成更长的频繁序列。
为了更好的阐释这个思想,让我们考虑这样一个例子。为了得到长度为n的频繁子序列集Ln,我们可以将长度为n-1的频繁子序列集Ln-1与长度为1的频繁子序列集L1进行拼接。例如,假设我们已经计算出如下所示的L1和L2,为了计算L3,我们可以先将L2中的一个子序列与L1中一个项目连接从而计算出L3’:
L1={a,b,c};
L2={ab,ac,bc};
L3’=L2*L1
={abc,abb,abc,aca,acb,acc,bca,bcb,bcc}
为了获得更高的效率,C-Miner不会将L2中序列与L1中所有项目进行拼接,而是将L2中每个序列仅与其后缀数据库中的频繁序列进行连接。此例中,对于L2中的频繁序列ab,它的后缀数据库为Dab={ced,cef,ch,ijc},而只有c是频繁项目,所以只将ab与c连接,从而得到属于L3’的一个更长的序列abc。