購物籃數據常常包含關於商品何時被顧客購買的時間信息,可以使用這種信息,將顧客在一段時間內的購物拼接成事務序列,這些事務通常基於時間或空間的先后次序。
問題描述
一般地,序列是元素(element)的有序列表。可以記做\(s = (e_1, e_2, \cdots, e_n)\),其中每個\(e_j\)是多個事件的集簇,即\(e_j = {i_1, i_2, \cdots, i_k}\),如
- web站點訪問者訪問的web頁面序列:
<{主頁} {電子產品} {照相機和攝像機} {數碼相機} {購物車} {訂購確認} {返回購物}> - 計算機科學主修課程序列:
<{算法與數據結構, 操作系統引論} {數據庫系統, 計算機體系結構} {計算機網絡, 軟件工程} {計算機圖形學, 並行程序設計}>
序列可以用它的長度和出現時間個數刻畫,序列的長度對應於出現序列中的元素個數,k-序列是包含k個事件的序列。上面例子中web序列包含7個元素和7個事件,課程序列包含4個元素和8個事件。
序列不但包括事件序列,也包括空間序列,如下面最后一行的DNA序列
子序列subsequence
對於序列t和s,如果t中每個有序元素都是s中的一個有序元素的子集,那么t是s的子序列。形式化為,序列 $ t = < t_1, t_2, \cdots, t_m > $ 和 $ s = < s_1, s_2, \cdots, s_n > $,如果 $ 1 \leq j_1 \leq j_2 \leq \cdots \leq j_m \leq n $,使得 $ t_1 \subseteq s_{j_1}, t_2 \subseteq s_{j_2}, \cdots, t_m \subseteq s_{j_m} $,則t是s的子序列,並且t包含在s中。
序列模式發現
數據序列是指與單個對象相關聯的時間的有序列表。設D為包含一個或多個序列的數據集。
序列s的支持度是包含s的所有數據序列所占的比例。如果序列s的支持度大於或等於用戶指定的閾值minsup,則稱s是一個序列模式(或頻繁序列)
序列模式發現, 給定數據集D和用戶指定的最小支持度閾值minsup,序列模式發現的任務是找出支持度大於或等於minsup的所有序列。
產生序列模式的一種蠻力方法是枚舉所有可能的序列,並統計他們各自的支持度。
候選序列的個數比候選項集的個數大的多:
- 一個項在項集中最多出現一次,但是一個時間可以在序列中出現多次,如給定的兩個項\(i_1\)和\(i_2\),能纏上一個候選2-項集\({i_1, i_2}\),但是可以產生許多候選2-序列,如\(<{i_1, i_2}>, <{i_1}, {i_2}>, <{i_2, i_1}>, <{i_1, i_1}>\)。
- 次序在序列中很重要,但是在項集中不重要。如{1, 2}和{2, 1}表示同一個項集,但是\(<{i_1}{i_2}>\)和$<{i_2}{i_1}> $表示不同序列。
先驗原理Apriori對於序列數據成立
該算法迭代地產生新的候選k序列,減掉那些(k-1)序列非頻繁的候選,然后對保留的候選計數,識別序列模式。
候選產生,一對頻繁(k-1)序列合並,產生候選k-序列,為了避免重復產生候選,傳統的Apriori算法僅當前k-1項相同時才合並一對頻繁k-項集,序列也可以這樣
序列合並過程:
序列\(s^{(1)}\)與另一個序列\(s^{(2)}\)合並,僅當從\(s^{(1)}\)中去掉第一個事件得到的子序列和從\(s^{(2)}\)中去掉最后一個事件得到的子序列相同,結果得到的候選是\(s^{(1)}\)與\(s^{(2)}\)的最后一個事件鏈接。\(s_{(2)}\)的最后一個事件可以作為最后一個事件合並到\(s_{(1)}\)的最后一個元素中,也可以起作為一個不同的元素,取決於下面條件
- 如果\(s_{(2)}\)的最后兩個事件屬於相同的元素,則\(s_{(2)}\)的最后一個事件在合並后的序列中是\(s_{(1)}\)的最后一個元素
- 如果\(s_{(2)}\)的最后兩個事件屬於不同的元素,則\(s_{(2)}\)的最后一個事件在合並后的序列中成為連接到\(s_{(1)}\)的尾部的單獨元素。
候選剪枝,如果候選k-序列至少有一個是你非頻繁的,那么它將被減掉。
支持度計數,在支持度計數期間,算法將枚舉屬於特定數據序列的所有候選k-序列,這些候選的支持度將增值。計數之后,算法識別出頻繁k-序列,並舍棄支持度小於閾值的候選。
時限約束
上面討論的模式並沒有再兩個事件之間體現時限約束,即兩個事件之間的間隔,因此需要定義新的序列模式。
序列模式的每個元素都與一個時間窗口\({l,u}\)相關聯,其中\(l\)是該時間窗口事件的最早發生事件,而\(u\)是該時間窗口事件的最晚發生事件。
1.最大跨度約束
最大跨度約束指定整個序列中所允許的事件的最晚和最早發生時間的最大時間差。
一般地,最大時間跨度maxspan越長,在數據序列中檢測到模式的可能性就比較大。然而較長的maxspan也可能捕獲不真實的模式,因為增加這兩個不相關的事件成為時間相關事件的可能性,此外,模式也可能涉及陳舊事件。
2.最小間隔和最大間隔約束
時限約束也可以通過限制序列中兩個相繼元素之間的時間差來指定,使用最大間隔約束的一個旁效就是可能違反先驗原理。可能會出現序列中事件數增加時,支持度也增加,這就違背了先驗原理。
鄰接子序列, 序列s是序列 \(w = < e_1 e_2 \cdots e_k >\) 的鄰接子序列必須滿足下面條件之一,
- s是從\(w\)刪除\(e_1\)或\(e_k\)中一個事件后得到
- s是從\(w\)刪除至少包含兩個事件的\(e_i\)中刪除一個事件后得到
- s是t的鄰接子序列,而t是w的鄰接子序列
用鄰接子序列概念,可以用如下方法修改先驗原理,來處理最大間隔約束。
修訂的先驗原理, 如果一個k-序列是頻繁的,則它的所有鄰接k-1序列也一定是頻繁的。
3.窗口大小約束
元素\(s_j\)中的事件不必同時出現,定義一個窗口大小閾值(ws)來指定序列模式的任意元素中最晚和最早出現之間的最大時間差,窗口為0表示統一元素中的所有事件必須同時出現。
下面例子中(ws=2,mingap=0, maxgap=3, maxspan=\(\infty\))
數據挖掘之關聯分析一(基本概念)
數據挖掘之關聯分析二(頻繁項集的產生)
數據挖掘之關聯分析三(規則的產生)
數據挖掘之關聯分析四(連續屬性處理)
數據挖掘之關聯分析五(序列模式)
數據挖掘之關聯分析六(子圖模式)
數據挖掘之關聯分析七(非頻繁模式)