序列模式PrefixSpan演算法

2021-08-10 20:25:03 字數 3393 閱讀 9519

與gsp一樣,prefixspan演算法也是序列模式分析演算法的一種,不過與gsp演算法不同的是prefixspan演算法不產生任何的侯選集,在這點上可以說已經比gsp好很多了。prefixspan演算法可以挖掘出滿足閾值的所有序列模式,可以說是非常經典的演算法。

prefixspan演算法的全稱是prefix-projected pattern growth,即字首投影的模式挖掘

核心思想:採用分治的思想,不斷產生序列資料庫的多個更小的投影資料庫,然後在各個投影資料庫上進行序列模式挖掘。它從長度為1的字首開始挖掘序列模式,搜尋對應的投影資料庫得到長度為1的字首對應的頻繁序列,然後遞迴的挖掘長度為2的字首所對應的頻繁序列,……,以此類推,一直遞迴到不能挖掘到更長的字首挖掘為止。

類似於樹的深度優先搜尋。

3)所有在(bm-am)的連續項在bm中都是按照字母表順序排列的

稱b是a的乙個字首。

輸入:序列資料庫s和支援度閾值α

輸出:所有滿足支援度要求的頻繁序列集

1. 找出所有長度為1的字首和對應的投影資料庫

2. 對長度為1的字首進行計數,將支援度低於閾值α的字首對應的項從資料庫s中刪除,同時得到所有的頻繁1項序列,i=1.

3. 對於每個長度為i滿足支援度要求的字首進行遞迴挖掘:

1) 找出字首所對應的投影資料庫。如果投影資料庫為空,則遞迴返回。

2) 統計對應投影資料庫中各項的支援度計數。如果所有項的支援度計數都低於閾值α,則遞迴返回。

3) 將滿足支援度計數的各個單項和當前的字首進行合併,得到若干新的字首。

4) 令i=i+1,字首為合併單項後的各個字首,分別遞迴執行第3步。

如下例子,支援度閾值為50%。

1.prefixspan演算法不需要產生候選序列

與相似優先順序演算法不同,prefixspan演算法從較短的連續項中產生序列模式增長很少在投影資料庫中,不用生成候選序列,不用判斷是否有候選序列的存在。
2.投影資料庫一直縮小投影資料庫比原始資料庫更小,因為只有那些有著連續字首的字尾子串行才能投影到投影資料。因為:

1)通常在序列資料庫中只有一組很小的序列模式增長的非常快,且當字首增長時,投影資料庫數量會變小;

2)投影僅僅發生在與字首相關的字尾部分。

3.prefixspan演算法主要消耗是構造投影資料庫

在最壞情況下,prefixspan演算法為每乙個序列模式建立乙個投影資料庫。如果存在一些很大數量的序列模式,那麼它的消耗是非平凡的。
為此,提出乙個減小投影資料庫個數的技術。1. 偽投影技術介紹偽投影技術:能夠減少投影資料庫的數量和大小。

演算法思想:當資料庫可以儲存在主存之中,我們就用乙個指標指向資料庫中的乙個序列作為乙個偽投影,而不是去通過收集所有的字尾而真實的構造物理投影。

每乙個投影由兩部分組成:指向資料庫中序列的指標和序列中字尾的後繼。

2.偽投影的分析

偽投影避免了物理的複製字尾,這樣它在執行時間和空間上就很高效,但它不適用於基於硬碟的訪問。因為隨機訪問硬碟空間是十分耗時的。

基於此原因,只要主存中可以容下乙個投影資料庫,就使用偽投影技術,如果原始序列資料庫或投影資料庫太大而不適應於主存,就用物理投影。

prefixspan演算法不論在執行時間還是空間上都大大優於spade、gsp演算法,且與spade和gsp演算法相比,在記憶體使用上更加穩定。
1.不產生候選序列的模式增長

prefixspan演算法是乙個基於模式增長的演算法,與基於優先順序的傳統演算法不同,prefixspan演算法沒有產生任何沒用序列,而且只是記下本地1-項組的頻率。當最小支援度減小時,連續的序列就呈現指數增長,而基於最優化的演算法會花費大量呈指數增長的時間去處理乙個很小的資料庫。
2.採用基於投影的分治法作為減小資料的有效方法

prefixspan演算法的搜尋空間是集中的且限制在一組投影資料庫中。投影資料庫的大小經常隨挖掘程序的序列模式增長而快速減小。與之相比,基於優先順序的演算法經常在每次迭代過程中搜尋原始的資料庫。這樣就會搜尋和檢查很多不相干的序列,增加負擔。
3.prefixspan演算法消耗相對穩定的記憶體

因為prefixspan演算法不產生候選序列,且使用分治法進行搜尋。另一方面,當支援度降到很小時,如gsp、spade演算法,產生和檢測候選序列的方法需要大量記憶體。
4.prefixspan演算法應用於基於字首的投影模式增長,比使用連續的模式定位投影方法freespan演算法更加高效。

與應用到freespan演算法中的字首投影模式增長的連續投影相比,prefixspan演算法僅在有字尾的連續項上進行投影,這樣節省大量時間、空間,且投影的序列收縮很快。當挖掘很緊密的資料庫時,freespan演算法不能從投影中獲得很多,但prefixspan演算法仍能在序列長度和投影資料庫中序列個數上有很大減少。

頻繁序列模式挖掘

序列模式是頻繁模式的一種特殊情況,它們的應用範圍完全不一樣!如 購買物品 尿布 啤酒 可樂 麵包 尿布 啤酒 上述購物清單是兩個使用者的購物清單,根據上面的清單,我們可以發現尿布和啤酒組合起來一起購買的情況較多,因此超市可以根據這樣的頻繁項集分析,將尿布和啤酒放在較近的地方,或者將尿布和啤酒同時 等...

GSP序列模式演算法

參考文獻 gsp gsp演算法是序列模式挖掘演算法的一種,他是一種類apriori的一種,整個過程與apriori演算法比較類似,不過在細節上會略有不同,在下面的描述中,將會有所描述。gsp在原有的頻繁模式定義的概念下,增加了3個的概念。1 加入時間約束min gap,max gap,要求原來的連續...

Python實現最長公共子串行(查重基礎演算法)

一 問題描述 給定乙個序列x 另乙個序列z 是x的子串行,如果存在乙個嚴格遞增的x中元素下標的序列,使得xij zj 1 j k 給定兩個序列x和y,當另一串行z既是x的子串行又是y的子串行時,稱z是序列x和y的公共子串行。最長公共子串行就是公共子串行中長度最長的子串行。接下來簡單明瞭地舉例。x x...