1. 程式人生 > >資料探勘之關聯分析五(序列模式)

資料探勘之關聯分析五(序列模式)

購物籃資料常常包含關於商品何時被顧客購買的時間資訊,可以使用這種資訊,將顧客在一段時間內的購物拼接成事務序列,這些事務通常基於時間或空間的先後次序。

問題描述

一般地,序列是元素(element)的有序列表。可以記做s=(e1,e2,,en),其中每個ej是多個事件的集簇,即ej=i1,i2,,ik,如
1. web站點訪問者訪問的web頁面序列:
<{主頁} {電子產品} {照相機和攝像機} {數碼相機} {購物車} {訂購確認} {返回購物}>
2. 電腦科學主修課程式列:
<{演算法與資料結構, 作業系統引論} {資料庫系統, 計算機體系結構} {計算機網路, 軟體工程} {計算機圖形學, 並行程式設計}>

序列可以用它的長度和出現時間個數刻畫,序列的長度對應於出現序列中的元素個數,k-序列是包含k個事件的序列。上面例子中web序列包含7個元素和7個事件,課程式列包含4個元素和8個事件。

序列不但包括事件序列,也包括空間序列,如下面最後一行的DNA序列

子序列subsequence
對於序列t和s,如果t中每個有序元素都是s中的一個有序元素的子集,那麼t是s的子序列。形式化為,序列t=<t1,t2,,tm>s=<s1,s2,,sn>,如果對於1j1j2jmn,使得t1sj1,t2sj2,,tmsjm,則t是s的子序列,並且t包含在s中。

序列模式發現

資料序列是指與單個物件相關聯的時間的有序列表。設D為包含一個或多個序列的資料集。
序列s的支援度是包含s的所有資料序列所佔的比例。如果序列s的支援度大於或等於使用者指定的閾值minsup,則稱s是一個序列模式(或頻繁序列)

序列模式發現, 給定資料集D和使用者指定的最小支援度閾值minsup,序列模式發現的任務是找出支援度大於或等於minsup的所有序列。

產生序列模式的一種蠻力方法是列舉所有可能的序列,並統計他們各自的支援度。
候選序列的個數比候選項集的個數大的多:
+ 一個項在項集中最多出現一次,但是一個時間可以在序列中出現多次,如給定的兩個項i1i2,能纏上一個候選2-項集i

1,i2,但是可以產生許多候選2-序列,如<i1,i2>,<i1,i2>,<i2,i1>,<i1,i1>
+ 次序在序列中很重要,但是在項集中不重要。如{1, 2}和{2, 1}表示同一個項集,但是<i1i2><i2i1>表示不同序列。

先驗原理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=<e1e2ek>的鄰接子序列