Java教程

PrefixSpan算法原理

本文主要是介绍PrefixSpan算法原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、简介

PrefixSpan算法的全称是Prefix-Projected Patten Growth,即前缀投影的模式挖掘,是一种关联规则挖掘算法,与Apriori算法,Fp-Growth算法一样,它们都是挖掘某个出现次数频繁的算法。Apriori和Fp-Growth算法都是挖掘频繁项集,而PrefixSpan算法挖掘的是频繁序列。

2、 概念

左边的数据记录称为项集,右边的数据记录称为序列。
左边表格的每一条记录称为项集(由不同字母组成)。
右边表格的每一条记录,是由多个项集组成的,并且组成序列的项集是有先后顺序的。

3、前缀、前缀投影(前缀投影又称后缀)的概念

对上面的表格求(a)元素的前缀及前缀投影,如下: 求前缀投影的方法是:对每条数据记录,从头开始扫描,如果不是前缀就删除这个元素,如果这个元素和前缀相同,也删除这个元素,此时对这一条记录停止扫描,并开始下一条数据记录的扫描。 _d符号:下划线称为占位符,这条元素数据记录为( ad )( c )( bc )( ae ),求a的前缀投影,从头开始扫描这条数据记录,第一个元素与和前缀a相同,此时发现a所在的项集有2个及2个以上的元素(即ad在同一个项集),那么删除a后,要用一个占位符下划线,代替a的位置。 同理,可求前缀(a)(a)的投影为:

4、PrefixSpan算法原理及流程

PrefixSpan算法的目的是挖掘出满足最小支持度的频繁序列,和Apriori算法类似,它是从长度为1的前缀开始挖掘序列模式,搜索对应的前缀投影数据库,得到长度为1的前缀对应的频繁序列,然后递归的挖掘长度为2的前缀对应的频繁序列,依此类推。直到某个前缀的前缀投影数据库为空时结束。
下面举例说明:所用数据库如下,设置的最小支持度为2:

* Step1: 扫描整个数据库,找出所有不同的元素,结果如下: a b c d e f g 共7个元素 再求出每个元素在表格中出现的次数(如果某个元素在同一条数据记录中出现多次,也只认为时出现了一次,如( a )( abc )( ac)( d )( cf )这个序列,a元素在这条记录中出现了多次,但只记为1次)。元素统计次数如下: 显然元素g出现的次数小于2,所以删除所有序列中的g元素。得到table 1表: * Step2: 对这个新的数据库table1,依次以刚才的频繁元素为前缀,求其前缀投影,结果如下: * Step3: 开始挖掘频繁序列,以a为前缀的投影数据库为例: 数据库: * Step4:对数据库table2求出频繁元素: * Step5:再次递归,这次选(d)元素为前缀的前缀投影: 到此为止,这个table3中的所有元素,其出现的次数都小于2,即没有频繁元素了,因此递归到这就结束了。 所以以上步骤中,求了三次前缀投影及频繁元素统计。得到如下频繁序列: * Step6:其他分支也是类似过程,上述可以看到大量的相同操作,这些相同的操作可以用递归表示。
这篇关于PrefixSpan算法原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!