5/29 AprioriAll算法研究(1)

终于有时间来研究这个算法了。上上次说到这个算法非常适合学习路径的挖掘,为什么呢?因为这是一种频繁序列挖掘,与通常的频繁模式挖掘不同,它考虑到了事件出现的序列,这是非常适合学习路径的特点的,有点类似于先导课和后延课的感觉。

举个栗子:某华辑同学在某段时间学习了离散数学课程,接下来又学习了数据结构课程,那我们接下来应该给他推荐什么课呢?如果数据库里显示,学过这两门课的同学还学过Java编程语言和数据库原理两门课,那么我们应该推荐哪一门呢?可能这两门课和华辑同学学的两门课的关联程度不相上下,但是熟悉计算机或者软件专业教学安排的同学可能有一些模糊的感觉,Java编程语言看起来是更基础的课程,而数据库结构更像是学会了数据结构之后应该学的东西。没错,这就是一种序列模式,当我们匹配到频繁序列之后,我们就可以推荐之后的事件,而不是关联度同样高的之前事件了。

在AprioriAll之前先说一下Apriori思想:如果某个项集是频繁的,那么它的所有子集也是频繁的。这一思想用到关联模式发掘中就是非常成功的Apriori算法,可以快速的找到频繁项集。这一算法的详细解释一搜就有好多,这里不再赘述了。

AprioriAll本质上是Apriori思想的扩张,只是在产生候选序列和频繁序列方面考虑序列元素有序的特点,将项集的处理改为序列的处理。

基于水平格式的Apriori类算法将序列模式挖掘过程分为5个具体阶段,即排序阶段、找频繁项集阶段、转换阶段、产生频繁序列阶段以及最大化阶段。AprioriAll也是如此:

1) 排序阶段。数据库D以客户号为主键,交易时间为次键进行排序。这个阶段将原来的事务数据库转换成由客户序列组成的数据库。
 2) 频繁项集阶段。找出所有频繁项集组成的集合L。也同步得到所有频繁1-序列组成的集合。
 3) 转换阶段。在找序列模式的过程中,要不断地进行检测一个给定的频繁集是否包含于一个客户序列中。
 4) 序列阶段。利用已知的频繁集的集合来找到所需的序列。类似于关联的Apriori算法。

5)最大化阶段。在频繁序列模式集合中持出最大频繁序列模式集合

1.排序阶段

       对原始数据表(交易数据库D)按客户号(作为主关键字)和交易时间(作为次关键字)进行排序,排序后通过对同一客户的事件进行合并得到对应的序列数据库&#

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值