序列模式挖掘——GSP算法

序列模式挖掘的基本概念
项目全集I、项集X和事务集合T的概念和文章关联规则挖掘——Apriori算法 中定义的一致。一个序列(Sequence)是一个有序的项集列表,这个有序通常是指时间有序。我们将序列s表示为:
<a1a2...ar> <script id="MathJax-Element-43" type="math/tex"> </script>
其中, ai 是一个项集,也称为s的一个元素。序列元素 ai
{x1,x2,...,xk}
表示,其中 xjI ,并且, ai 中的元素是按字典序排列的。一个项目在一个序列的某个元素中只能出现一次,但是可以出现在序列的多个元素中。一个序列中元素的个数成为序列的基数;一个序列中项目的个数成为序列的长度,长度为k的序列成为k-序列。这里有一个关于序列的例子,如下表:
这里写图片描述
其中,每一个用户每一次购买的项目集合,是一个事务,也是一个项目集合,每一个用户所有次购买事务按时间排序就组成了一个序列,比如,对应于用户2的序列位: <(10,20)(30)(10,40,60,70)> <script id="MathJax-Element-49" type="math/tex"><(10, 20)(30)(10, 40, 60, 70)></script>。注意到,序列元素中的的项目是有序的。
子序列超虚列:对于两个序列 s1=<a1a2...ar> 和序列 s2=<b1b2...bv> ,如果存在整数 1j1<j2<...<jr1<jrv 使得 a1bj1,a2bj2,...,arbjr , 那么 s1 就是 s2 的字序列, s2 就是 s1 的超序列。比如, <(10)(30)(10,40,60,70)> <script id="MathJax-Element-58" type="math/tex"><(10)(30)(10, 40, 60, 70)></script>就是 <(10,20)(30)(10,40,60,70)> <script id="MathJax-Element-59" type="math/tex"><(10, 20)(30)(10, 40, 60, 70)></script>的字序列。
序列模式挖掘,就是从一个数据序列(Data Sequence)集合S中找出所有满足用户指定最小支持度的序列。每个这样的序列称为一个频繁序列,或者序列模式。可以看出,序列模式挖掘类似于Apriori算法中的频繁项目集挖掘是类似的,而且你接下来就会发现,帮助我们实现序列模式挖掘的GSP算法和频繁项目集挖掘的算法十分接近,如果你已经理解了频繁项目集挖掘算法,那么就可以很容理解GSP算法。
GSP算法
直接给出算法伪代码:
这里写图片描述
candidategenSPM(Fk1) 的伪代码如下:
这里写图片描述
其中, Ck 表示候选k-频繁序列模式, Fk 表示k-频繁序列模式, UkFk 表示所有k-频繁序列模式的并集。
关于GSP算法更详细的介绍,可以阅读论文[2]。
参考资料:
1. Bing Liu. 《Web Data Exploring Hyperlinks, Contents, and Usage Data》Second Edition.
2. R. Srikant and R. Agrawal. Mining Sequential Patterns: Generalizations and Performance Improvements.

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值