一、序列模式挖掘简介
序列模式的概念最早是由Agrawal和Srikant 提出的。
动机:大型连锁超市的交易数据有一系列的用户事务数据库,每一条记录包括用户的ID,事务发生的时间和事务涉及的项目。
如果能在其中挖掘涉及事务间关联关系的模式,即用户几次购买行为间的联系,可以采取更有针对性的营销措施。
二、事务数据库实例
例:一个事务数据库,一个事务代表一笔交易,一个单项代表交易的商品,单项属性中的数字记录的是商品ID
一般为了方便处理,需要把数据库转化为序列数据库。方法是把用户ID相同的记录合并,
有时每个事务的发生时间可以忽略,仅保持事务间的偏序关系。
三、prefixspan
前缀
假设所有的项在一个元素中按照字母表的顺序排列出来。给定一个序列α=<e1e2…en>
(在这里每一个e都和在S中给定的连续的元素相一致)和一个序列β=<e1’e2’…em’>(m≤n).只有如果:
1、ei’=ei(i≤m-1),2、em’∈em ,3、所有在(em—em’)的连续项在em’中都是按照字母表顺序排列的,
那么我们就说β是α的一个前缀。
例如:<a>,<aa>,<a(ab)>和<a(abc)>都是序列s=<a(abc)(ac)d(cf)>的前缀,但是如果每个项都在S中的序列s是连续的,
那么<ab>和<a(bc)>都认为是<a(abc)>的一个前缀。
后缀
序列α关于子序列β = <e1e2… em-1em’>的投影为α’ = <e1e2… en> (n >= m),则序列α关于子序列β的后缀为<em”em+1… en>,
其中em” = (em - em’)。
例如:对于序列s=<a(abc)(ac)d(cf)>,<(abc)(ac)d(cf)>就被认识为是关于前缀<a>的后缀,
<(-bc)(ac)d(cf)>就被认为是关于前缀<aa>的后缀,<(-c)(ac)d(cf)>就被被认为是关于前缀<a(ab)>的后缀。
投影
投影即投影数据库,是序列数据库S中所有相对于α前缀的后缀序列的集合。
算法步骤:
1)对投影数据库S|α进行一次扫描,找到一组连续的项b,其中b可以集合成为α的最后一个元素或者<b>可以被追加到α上,形成一个序列模式。 2)对于每一个连续的项b,把他添加到α上形成一个序列α’,并且输出α’。 3)对于每一个α’,创建一个α’-投影数据库S|α’,并调用PrefixSpan(α’,l+1,S|α’). |
例子:
1、使用之前的序列数据库进行简单的说明(给定的最小支持度是2):
扫描序列数据库S,产生长度为1的序列模式有:<a> : 4, <b>:4, <c> : 4, <d> : 3, <e> : 3, <f> : 3
序列模式的全集必然可以分为分别以<a>,<b>,<c>,<d>,<e>和<f>为前缀的序列模式的集合,
构造不同前缀所对应的投影数据库,结果如下页图所示:
2、分别以<a>和<f>为前缀的序列进行分析说明
<f>:
| pre <f> | Sequence |
| 1 | <(ab)(df)(cb)> |
| 2 | <cbc> |
| pre <fb> | Sequence |
| 1 | <(df)cb> |
| 2 | <c> |
<fc>:
| pre <fc> | Sequence |
| 1 | <b> |
| 2 | <bc> |
可以得出前缀是f的序列模式为 <f> <fb> <fc> <fbc> <fcb>
<a>:
| pre <a> | Sequence |
| 1 | <(abc)(ac)d(cf)> |
| 2 | <(_d)c(bc)(ae)> |
| 3 | <(_b)(df)cb> |
| 4 | <(_f)cbc> |
对于a的映射数据库进行查找局部频繁项(长度为一),可以得出<a> : 2, <b> : 4, <c> : 4,<d> : 2, <f> : 2, < _b> : 2
(要注意,第一项中的ab和_b是表示同样的元素)
(对于组合项的后缀提取,可以分为2个情况,1个是从_X中寻找,一个从后面找出连续的项集)
<ab>:
| pre <ab> | Sequence |
| 1 | <(_c)(ac)d(cf)> |
| 2 | <(_c)(ae)> |
| 3 | <c> |
| pre <a(bc)> | Sequence |
| 1 | <(ac)d(cf)> |
| 2 | <(ae)> |
| pre <(ab)d> | Sequence |
| 1 | <d(cf)> |
| pre <aba> | Sequence |
| 1 | <(_c)d(cf)> |
| 2 | <(_e)> |
| pre <(ab)> | Sequence |
| 1 | <(_c)(ac)d(cf)> |
| 2 | <(df)cb> |
| pre <(ab)d> | Sequence |
| 1 | <(cf)> |
| 2 | <(_f)cb> |
本文介绍了 PrefixSpan 算法在序列模式挖掘中的作用,详细解析了序列模式的概念、事务数据库实例、前缀和后缀的概念,以及算法的具体步骤,并通过示例展示了如何运用 PrefixSpan 发现频繁序列模式。

1576

被折叠的 条评论
为什么被折叠?



