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

來源:互聯網
上載者:User

標籤:apriori   模式   根據   不重複   round   修改   事件   .com   沒有   

 關聯規則--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} {2,3}>包含在A,B,C中,所以其支援度=3/5=0.6,其他類似。

 

 

產生序列模式

1、蠻力法

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

 

2、類Apriori演算法

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

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

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=0,maxgap=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的第一個元素(1,2)在該資料序列中第一次出現的位置,對應時間為10;

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

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

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

5)考察結束,包含。

 

參考:

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

Pang-Ning Tan 資料採礦導論.

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.