序列模式挖掘

所謂序列模式,個人定義是:在一組有序的數據列組成的數據集中,常常出現的那些序列組合構成的模式。跟咱們所熟知的關聯規則挖掘不同,序列模式挖掘的對象以及結果都是有序的,即數據集中的每一個序列的條目在時間或空間上是有序排列的,輸出的結果也是有序的。

舉個簡單的例子來講明,關聯規則一個經典的應用是計算超市購物中被共同購買的商品,它把每一個顧客的一次交易視做一個transaction,計算在不一樣transaction中不一樣item組合的規律性。而若是咱們考慮一個用戶屢次在超市購物的狀況,那麼這些不一樣時間點的交易記錄就構成了一個購買序列,N個用戶的購買序列就組成一個規模爲N的序列數據集。考慮這些時間上的因素以後,咱們就能獲得一些比關聯規則更有價值的規律,好比關聯挖掘常常能挖掘出如啤酒和尿布的搭配規律,而序列模式挖掘則能挖掘出諸如《育兒指南》->嬰兒車這樣帶有必定因果性質的規律。因此,序列模式挖掘比關聯挖掘能獲得更深入的知識。

在實際當中,序列模式挖掘被普遍地應用於各類序列數據集中,如生物信息學上的基因微陣列數據,從中挖掘哪些基因組合模式在某類病人中會頻繁出現;以單詞做爲item的文檔序列,研究在不一樣文檔中單詞序列的出現模式;用戶點擊流數據,用於挖掘用戶的頻繁點擊模式,創建用戶模型,完善網站功能與UI結構。除此以外還有不少,只要是序列數據集,均可以考慮利用序列模式挖掘得到規律。

圖1是一個序列數據庫,及其以0.75做爲最小閾值(min_sup)的頻繁序列模式。藉此介紹序列挖掘中的幾個主要概念。算法

圖1 簡單的序列數據庫,基本概念
圖1 簡單的序列數據庫,基本概念


序列(Sequence):以SID表示,一個序列便是一個完整的信息流。
項目(Item):序列中最小組成單位的集合,好比在這個樣例中的項目爲{A, B, C}。
事件(Event):一般用時間戳標誌,標識事件之間的先後關係。又叫Itemset,是Item的集合,樣例中以EID表示。
k頻繁序列:若是頻繁序列的項目個數爲k,則稱之爲k頻繁序列,以Fk表示(圖1的F1,F2,F3)。
序列的包含關係:對於序列x和y,若是存在着一個保序的映射,使得x中的每一個事件都被包含於y中的某個事件,則稱爲x被包含於y(x是y的子序列),例如序列B->AC是序列AB->E->ACD的子序列。
支持度(support):某序列x的支持度是指在整個序列集中包含x的序列的頻次。
有了以上概念以後,序列模式挖掘的問題就定義爲:給定一個序列數據庫以及最小支持度min_sup,找出全部支持度大於min_sup的序列模式。

解決這個問題的一個著名的算法叫SPADE,以及加入各類約束限制後的cSPADE,它們來自同一個做者Zaki。SPADE是無約束的序列頻繁模式挖掘算法,其基本思想是利用一個S後綴等價類(suffix equivalence class)的概念[S],從F1開始計算,由F1張出以F1中的頻繁序列爲[S]的F2,再以F2張出以F2中的頻繁序列爲[S]的F3,以此類推。因爲引入了後綴等價類這個概念,使得整個算法對數據庫的遍歷次數與計算量大大下降,是一個現實中有效的算法。cSPACE在前者的基礎上引入了對序列模式的約束,其中包括:

序列長度與寬度的約束(序列的長度是指序列中事件的個數,寬度是指最長事件的長度);
最小間隔的約束,即事件之間的最小時間間隔;
最大間隔的約束,即事件之間的最大時間間隔;
時間窗的約束,即整個序列都必須發生在某個時間窗內;
其它,如只限製爲某些Item,序列數據庫存在分類標籤。
以上的約束基本已經覆蓋了實際應用中全部可能碰到的限制狀況,實際上約束並不經常使用到,一般SPADE算法已經夠用了。

因爲數學表述過多,並且整個過程比較繁瑣,這裏不打算詳細敘述兩個算法的計算流程,有興趣的能夠參看文後附上的參考文獻。

很幸運的是,萬能的R已經有序列挖掘的包,對SPADE算法與cSPADE算法有了完整的實現,即便對算法並不充分了解,也能夠把它們用於本身的場景中。它就是arulesSequences,如下以一個例子簡單介紹一下它的用法。

library(arulesSequences)
data(zaki)
s1 <- cspade(zaki, parameter = list(support = 0.4), control = list(verbose = TRUE))
summary(s1)
as(s1, "data.frame")
s2 <- cspade(zaki, parameter = list(support = 0.4, maxwin = 5))
as(s2, "data.frame")

第2行導入數據庫zaki,它的結構相似於圖1所示的那種序列-事件集,第3行設定最小支持度爲0.4,並用無約束的SPADE算法搜索頻繁序列模式,第6行引入了時間窗的限制,用cSPADE算法進行搜索。整個過程十分簡潔明瞭。

更多使用的例子可在R的終端用?cspade命令查看。

參考文獻:
Sequence Mining in Categorical Domains: Incorporating Constraints, Mohammed J. Zaki, 2000 ACM

原文:http://www.wentrue.net/blog/?p=1016數據庫

相關文章
相關標籤/搜索