1. 程式人生 > >關聯規則之序列模式挖掘--GSP算法

關聯規則之序列模式挖掘--GSP算法

數據庫 seq ima 時間跨度 height 其中 prior 挖掘 葉子節點

關聯規則--Apriori算法部分討論的關聯模式概念都強調同時出現關系,而忽略數據中的序列信息(時間/空間):

時間序列:顧客購買產品X,很可能在一段時間內購買產品Y

空間序列:在某個點發現了現象A,很可能在下一個點發現現象Y

例:6個月以前購買奔騰PC的客戶很可能在一個月內訂購新的CPU芯片。

註:1)序列模型=關聯規則+時間/空間維度

2)這裏討論的序列模式挖掘指的是時間維度上的挖掘。

一、基本定義

序列:將與對象A有關的所有事件按時間戳增序排列,就得到對象A的一個序列s

元素(事務):序列是事務的有序列表,可記作技術分享圖片其中每個技術分享圖片是一個或多個事件(項)的集族,即技術分享圖片

序列的長度:序列中元素的個數。

序列的大小:序列中事件的個數,K-序列是包含k個事件的序列。

如:如下課程序列中包含4個元素,8個事件。

技術分享圖片

子序列:序列t是另一個序列s的子序列,若t中每個有序元素都是s中一個有序元素的子集。即,序列技術分享圖片是序列技術分享圖片的子序列,若存在整數技術分享圖片,使得技術分享圖片

例:

技術分享圖片

序列數據庫:包含一個或多個序列數據的數據集,如下:

技術分享圖片

二、序列模式挖掘

序列的支持度:序列s的支持度指包含s的所有數據序列(與單個數據對象(上例中的A/B/C)相關聯的事件的有序列表)所占的比例,若序列s的支持度大於或等於minsup,則稱s是一個序列模式(頻繁序列)

序列模式挖掘:給定序列數據集D和用戶指定的最小支持度minsup,找出支持度大於或等於

minsup的所有序列。

例:下例中,假設minsup=50%,因為序列(子序列)<{2} {23}>包含在A,B,C中,所以其支持度=3/5=0.6,其他類似。

技術分享圖片

產生序列模式

1、蠻力法

枚舉所有可能的序列,並統計它們各自的支持度。值得註意的是:候選序列的個數比候選項集的個數大得多,兩個原因如下:

技術分享圖片

2、類Apriori算法

候選過程:一對頻繁(k-1)序列合並,產生候選k-序列。為不重復產生,合並原則如下:

序列S1與序列S2合並,僅當S1中去掉第一個事件得到的子序列與S2中去掉最後一個事件得到的子序列相同,合並結果為S1S2最後一個事件的連接,連接方式有兩種:

1)

S2的最後兩個事件屬於相同的元素,則S2的最後一個事件在合並後的序列中是S1的最後一個元素的一部分;

2)S2的最後兩個事件屬於不同的元素,則S2的最後一個事件在合並後的序列中成為連接到S1的尾部的單獨元素。

例:

<(1) (2) (3)> + <(2) (3) (4)> = <(1) (2) (3) (4)> :除去S1中第一個事件(1)與除去S2中最後一個事件(4)所剩下的子序列均為<(2) (3)>,且S2最後兩個事件(3)(4)屬於不同的元素,故單獨列出;

<(2 5) (3)> + <(5) (3 4)> = <(2 5) (3 4)>:除去事件2和事件4,剩下子序列相同,由於S2最後兩個事件(3 4)屬於相同的元素,所以合並到S1最後,而不是寫成<(2 5) (3) (3 4)>

技術分享圖片

候選剪枝:若候選k-序列的(k-1-序列至少有一個是非頻繁的,則被剪枝。

上例中,候選剪枝後只剩下<{1} {2,5} {3}>

3、時限約束

施加時限約束時,序列模式的每個元素都與一個時間窗口[l,u]相關聯,其中l是該時間窗口內事件的最早發生時間,u是該時間窗口內事件的最晚發生時間。

最大跨度約束:整個序列中所允許的事件的最晚和最早發生時間的最大時間差,記為maxspan,一般地,maxspan越長,在數據序列中檢測到模式的可能性越大,但較長的maxspan也可能捕獲不真實的模式。

註:最大跨度影響序列模式發現算法的支持度計數,施加最大時間跨度約束之後,有些數據序列就不再支持候選模式。

最小間隔和最大間隔約束:假設最大間隔maxgap=3(天),最小間隔mingap=1,即元素中的事件必須在前一個元素的事件出現後三(一)天內出現。

註:使用最大間隔約束可能違反先驗原理,以圖2.1為例,無約束情形下,<{2} {5}><{2}{3}{5}>的支持度都是60%,若施加約束mingap=0maxgap=1<{2} {5}>的支持度下降至40%(缺少D的支持),而<{2}{3}{5}>的支持度仍是60%,即超集的支持度比原集要高——與先驗原理違背。使用鄰接子序列的概念可避免這一問題。

技術分享圖片

例:

技術分享圖片

使用鄰接子序列修改先驗原理如下:

修訂的先驗原理:若一個k-序列是頻繁的,則它的所有鄰接(k-1-子序列也一定是頻繁的。

註:根據上述原理,在候選剪枝階段,並非所有k-1-序列都序列都需要檢查(違反最大間隔約束)。

例:maxgap=1,則不必檢查<{1}{2,3}{4}{5}>的子序列<{1}{2,3}{5}>是否頻繁,因為{2,3}{5}之間的時間差為2,大於一個單位,只需考察其鄰接子序列:<{1}{2,3}{4}><{2,3}{4}{5}><1}{2}{4}{5}><{1}{3}{4}{5}>

窗口大小約束:元素技術分享圖片中的事件不必同時出現,可定義一個窗口大小閾值(ws)來指定序列模式的任意元素中事件最晚和最早出現之間的最大允許時間差。(ws=0表示同一元素中的所有事件必須同時出現)。

--GSP算法

算法基本思路

1、長度為1的序列模式L1,作為初始的種子集;

2、根據長度為i的種子集Li,通過連接操作和剪切操作生成長度為i+1的候選序列模式技術分享圖片然後掃描數據庫,計算每個候選序列模式的支持度,產生長度為i+1的序列模式技術分享圖片並作為新的種子集。

3、重復第二步,直到沒有新的序列模式或新的候選序列模式產生為止。

解決兩大問題

1、候選集產生:合並+剪枝=期望盡可能少的候選集;

2、支持度計數

兩個技巧:

1)哈希樹存儲數據,減少對於候選序列需要檢查的原數據序列個數。

2)改變原數據系列的表達形式以有效發現一個候選項是否是數據序列的子序列。

3、具體做法:

對事物數據庫中的每個數據序列的每一項進行哈希,從而確定應該考察哈希樹哪些葉子節點中的候選K序列;對於葉子節點中的每個候選K序列,須考察其是否包含在該數據序列中,對每個包含在該數據序列中的候選序列,其計數值加1。

如何考察數據序列d是否包含某個候選K序列s?分兩步:

技術分享圖片

例:假設maxgap=30,mingap=5,ws=0,考察候選序列s=<(1,2)(3)(4)>是否包含在下列數據序列中。

技術分享圖片

1)首先尋找s的第一個元素(12)在該數據序列中第一次出現的位置,對應時間為10

2)mingap=5,故在時間15後尋找下一元素(3),發現其第一次出現時間為45,而45-10>30,轉入向後階段;

3)重新尋找(12)的第一次出現位置:50,接著在時間55後尋找(3):65,由65-50<30,故滿足最大時間間隔約束,轉入向前階段;

4)尋找(3)的下一個元素(4)在時間7065+5)後的第一次出現位置:90,由90-65<30,滿足;

5)考察結束,包含。

參考:

Srikant R ,Agrawal.R. Mining Sequential Patterns: Generalizations and Performance Improvements.

Pang-Ning Tan 數據挖掘導論.

關聯規則之序列模式挖掘--GSP算法