序列模式挖掘(AprioriAll和AprioriSome演算法)
序列模式(sequential pattern)挖掘最早由Agrawal等人提出,針對帶有交易時間屬性的交易資料庫,獲取頻繁專案序列以發現某段時間內客戶的購買活動規律。每一次交易包含customer-id,transaction-time和items(購置的商品內容)。
定義1一個序列(sequence)是項集的有序表,序列s記為 ,其中每個 是一個項集(itemset),表示多次交易的組合。項集 i (itemset)記為,其中 代表一個項(item),表示一次交易。一個序列的長度(Length)是它所包含的項集個數,若具有長度k,則記為K-序列。
定義2 序列包含在(is
contained in
定義3 最大序列(Maximal Sequence)表示不包含在任何其他序列中。
定義4 序列s的支援度(support)是指所有序列中包含序列s的個數(百分比)。滿足最小支援度(minimum
support)的序列稱為大序列(large sequence)。大序列中的所有最長序列就稱為序列模式
定義5 項集i的支援度是指所有序列中包含項集i的個數。因此項集i和1-序列<i>的支援度相同。滿足最小支援度的項集稱為大項集(large itemset)或者litemset。注意:大序列中的所有項集必須是大項集。因此,大序列就是litemset的列表。
2 演算法
序列模式挖掘分為五個步驟:排序階段,大項集階段,轉換階段,序列階段,最大序列階段。2.1 排序階段(Sort)
對資料庫進行排序整理,將原始資料庫轉換成序列資料庫。例如交易資料庫就以客戶號(Cust_id)和交易時間(Tran_time)來排序。例如table1到table2 。
客戶號(Cust_id) |
交易時間 (Tran_time) |
物品 (Item) |
1 1 |
June 25’99 June 30’99 |
30 90 |
2 2 2 |
June 10’99 June 15’99 June 20’99 |
10,20 30 40,60,70 |
3 |
June 25’99 |
30,50,70 |
4 4 4 |
June 25’99 June 30’99 July 25’99 |
30 40,70 90 |
5 |
June 12’99 |
90 |
Table 1 帶交易時間的交易資料來源例項
客戶號(Cust_id) |
顧客序列(Customer Sequence) |
1 |
<(30)(90)> |
2 |
<(10,20)(30)(40,60,70)> |
3 |
<(30,50,70)> |
4 |
<(30)(40,70)((90) > |
5 |
<(90)> |