GSP算法

GSP算法(Generalized Sequential Pattern mining algorithm)

https://wenku.baidu.com/view/19ee9abd960590c69ec376c6.html
http://www.doc88.com/p-999957186220.html
Mining Sequential Patterns: Generalizations and Performance Improvements(參考文獻)

一、算法基本思想

給定一個事務數據庫,GSP算法需要對事務數據庫進行多遍掃描,GSP算法挖掘序列模式的基本架構如下:

   第一遍掃描確定該數據庫中每一項的支持度,即確定該事務數據庫中包含每一項的數據序列的數目。在第一遍掃描結束後,該算法知道哪些項是頻繁的,即產生了頻繁1項集,而每個頻繁1項集即形成了頻繁1序列。由頻繁k序列集合Lk可產生候選(k+1)序列集合Ck+1,候選(k+1)序列集合中的每條候選序列均包含相同個數的項,且其項的個數均比其對應的種子頻繁序列集合Lk中項的個數大1。在產生每一條候選(k+1)序列的同時對其計數,當所有的候選(k+1)序列均已產生後,算法根據每條候選(k+1)序列的計數確定哪些候選(k+1)序列形成頻繁(k+1)序列,並作爲下一步的種子集合。當由某個種子集合Lk產生的候選序列集合爲空時,算法結束。

GSP算法在原有aporiori的基礎上,引入3個新的概念來定義頻繁模式子序列:

1) 加入時間約束,指定模式中相鄰元素之間的最小和最大時間間隔,使得原有的apriori關注的連續變成了只要滿足min_gap和max_gap約束的序列,都算是連續的。
2) 加入time_window_size。放寬了序列模式元素中項必須來自同一個事務的限制,而是允許項存在事務時間在用戶指定的時間窗內的一組事務中。使得transaction有新的定義,只要在window_size內的item,都可以認爲是在同一個itemset。
3) 加入分類標準。

GSP算法是一個典型的序列模式挖掘算法,它通過採用產生並檢測一個候選序列的方法,是基於優先級原則的一個算法。

類似於樹的廣度優先搜索。

二、算法原理

1)根據所輸入的序列,找出所有的單項集,即1頻繁模式,這裏會經過最小支持度閾值的判斷。
2)根據1頻繁模式進行連接運算,產生2頻繁模式,這裏會有進行最小閾值的判斷。
3)根據2頻繁模式連接產生3頻繁模式,會經過最小支持度判斷和剪枝操作,剪枝操作的原理在於判斷他的所有子集是否也全是頻繁模式。
4)3頻繁模式不斷的挖掘直到不能夠產生出候選集爲止。

三、產生候選序列模式的步驟

1)連接階段:如果去掉序列模式S1的第一個項目與去掉序列模式S2的最後一個項目所得到的序列相同,則可以將S1與S2進行連接,即將S2的最後一個項目添加到S1中。

2)剪切階段:若某候選序列模式的某個子序列不是序列模式,則此候選序列不可能是序列模式,將它從候選序列模式中刪除。

這裏寫圖片描述
在連接步中,種子序列<(1,2) 3>和<2 (3,4)>連接可產生候選4序列<(1,2) (3,4)>;種子序列<2 3 5>連接可產生候選4序列<(1,2) 3 5>。其餘的序列均不滿足連接條件。在剪枝步中,候選4序列<(1,2) 3 5>被剪去,因爲其連續子序列<1,3,5>不包含在頻繁3序列集合L3中。

四、後選集計數

對於事務數據庫中的每個數據序列,需對其每一項進行哈希,從而確定應該考察哈希樹那些葉子節點中的候選k序列。對於葉子節點中的每個候選k序列,需考察其是否包含在該數據序列中;對每個包含在該數據序列中的候選序列,其計數值加1。在考察某個數據序列d是否包含某個候選k序列時,需分成兩個階段:

1)向前階段:在d中尋找從s的首項開始的連續子序列xi-xj(j>i)直至time(xj)-time(xi)>maxgap,此時轉入向後階段;否則,如在d中不能找到s的某個元素,則s不是d的子序列。

2)向後階段:由於此時time(xj)-time(xi)>maxgap,故此時應從時間值爲time(xj)-maxgap後重新搜索xj-1,但同時應保持xj-2位置不變。當新找到的xj-1仍不滿足time(xj)-time(xi)<=maxgap時,從時間值爲time(xj)-maxgap後重新搜索xj-2,同時保持xi-3位置不變,直至某位置元素xj-i滿足條件或x1不能保持位置不變,此時,返回前向階段。

   A.當xj-1滿足time(xj-i)-time(xj-(i+1))<=maxgap時(此時,x1保持位置不變),向前階段
應從xj-i位置後重新搜索xj-i+1及後續元素;
   B.當x1不能保持位置不變時,先前階段應從原x1位置後重新搜索x1及後續元素。

   在考察某個數據序列d是否包含某個候選k序列s的兩個階段中,需要在數據序列d中不斷尋找候選序列s中的單個元素。故將數據序列d作如下轉換:對d中的每一項建立一個此項出現時間的鏈表。此時,若欲尋找某些x在事務時間t後的第一次出現位置對應的事務時間,只需對x的事務時間鏈表遍歷直至出現某個大於t的事務時間。若欲找出候選序列s的某個元素Si=(X1...Xn)在事務時間t後的第一次出現,只需遍歷其中每項Xi(1<=i<=n)的事務時間鏈表以找出Xi在事務時間t後第一次出現的事務時間;若time(Xn)-time(X1)<=ws,則已經在數據序列d中找到Si,可以繼續在d中尋找s的下一個元素;否則,令t=time(Xn)- ws並重復此過程。

五、案例分析

現假設最大事務時間間隔maxgap=30,最小事務時間間隔mingap=5,滑動時間窗口ws=0,考察候選數據序列s=<(1,2)(3)(4)>是否包含在該數據序列中。

這裏寫圖片描述

這裏寫圖片描述

解析過程:

首先尋找s的第一個元素(1,2)在該數據序列中第一次出現的位置,對應的事務時間爲10。由於最小事務時間間隔mingap=5,故應在事務時間15之後尋找s的下一個元素(3)。由表2看出,45-10>30,故轉入向後階段,重新尋找元素(1,2)第一次的出現位置,則事務時間爲50,故下一步應該在事務時間55後尋找元素(3),時間65,滿足約束。此時尋找(3)的下一個元素(4),時間90,90-65=25<=30,滿足約束,考察結束。

六、GSP算法分析

與AprioriAll算法相比,GSP算法計算較少的候選集,並且在數據轉換中不需要事先計算頻繁集。GSP算法時間複雜度與序列中的元素個數成線性比例關係,執行時間隨數據序列中字段的增加而增加,但增加不明顯。

七、GSP算法問題

1)如果序列數據庫規模較大,則有可能產生大量的候選序列模式;
2)需要對序列數據庫進行循環掃描;
3)對於序列模式的長度比較長的情況,算法難以處理。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章