1. 程式人生 > >序列模式挖掘(AprioriAll和AprioriSome演算法)

序列模式挖掘(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) (4, 5) (8)>包含在<(7) (3, 8) (9) (4, 5, 6) (8)>中,因為。注意:<(3) (5)>不包含於<(3, 5)>,因為前者表示兩次交易分別是(3)和(5),後者表示一次交易有(3, 5)。

定義3 最大序列(Maximal Sequence)表示不包含在任何其他序列中。

定義4 序列s的支援度(support)是指所有序列中包含序列s的個數(百分比)。滿足最小支援度(minimum support)的序列稱為大序列(large sequence)。大序列中的所有最長序列就稱為序列模式

(sequential pattern)。

定義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)>