• 沒有找到結果。

第二章 相關研究工作

第四節 循序模式探勘

本論文在探索讀者借閱的順序性方面與[3][12]同屬循序模式探勘,所以在此 將這兩個演算法稍做整理介紹。

AprioriAll[3]屬於循序模式 (Sequential Pattern) 探勘之演算法,即同一使用 者在不同時間點有許多交易記錄,這些交易形成一個序列,每一序列為項目集所 形成的有序集(Order Set),AprioriAll 的目的是要在這些交易序列中找出包含次數 大於最小支持度的序列,在此所謂「包含」的定義為:如果存在 i1<i2< … < in及二 個序列<a1a2… an>及<b1b2… bn>,使得 a1⊆bi1,a2⊆bi2,…,an⊆bin,則序列<b1b2… bn>

包含<a1a2… an>。例如,序列<(7)(3 8)(9)(4 5 6)(8)>包含序列<(3)(4 5)(8)>,因為 (3)

⊆(3 8)、(4 5) ⊆(4 5 6)且(8) ⊆(8),然而<(3)(5)>並不包含<(3 5)>,反之,<(3 5)>

亦不包含<(3)(5)>。

以下舉例說明 AprioriAll 演算法。圖 2 - 4 - 1(a)為一以使用者編號為索引的 交易序列資料庫,每個序列裡的項目集為此使用者每次交易的物品,亦即該次的 交易記錄,例如使用者 2 曾交易三次,此三次交易分別為(10 20),(30),(40 50 70)。

現欲找出被大於 25%的交易序列包含之序列,作法如下:首先,用 Apriori 演算

接下來,再以 AprioriAll 演算法來探勘出所有的大序列。AprioriAll 和 Apriori 大部分都相同,唯一不同的是它將 Apriori 產生候選集時連結(Join)的步驟更改成 為有序性,如圖 2 - 4 - 3所示。圖 2 - 4 - 4為 L3 產生 C4 的過程。

Customer Id Customer Sequence Large Itemsets Mapped To 1

<(10 20)(30)(40 50 70)>

<(30 50 70)>

<(30)(40 70)(90)>

<(90)>

Orginal Customer Sequence

Transformed Customer Sequence

<(10 20)(30)(40 50 70)>

<(30 50 70)>

<(30)(40 70)(90)>

<(90)>

<{(30)}{(90)}>

<{(30)}{(40)(70)(40 70)}>

<{(30)(70)}>

<{(30)}{(40)(70)(40 70)}{(90)}>

<{(90)}>

select p.litemset1,…,p.litemsetk-1, q.litemsetk-1

from Lk-1 p,Lk-1 q

where p.itemset1=q.itemset1,…,p.itemsetk-2=q.itemsetk-2;

圖 2 - 4 - 3:AprioriAll 產生候集時連結的步驟

Large (after pruning)

<1 2 3>

因為 AprioriAll 沒有考慮到時間的限制及分類,所以在[12]中提出了一個新 的演算法,稱為 GSP (Generalized Sequential Patterns)。

GSP 加入了三個條件:

1. 時間限制 (Time Constraints):使用者通常會希望限制一個順序模式裡,

二個相鄰項目間有最大和(或)最小時間間隔。例如:以一個書商而言,

如果有一位客戶今天買了一本書,三年後才又買了另一本書,書商會覺 得這位讀者買這兩本書的時間間隔太久,這兩本書應該是沒什麼相關性 的,所以書商對這樣的順序模式不感興趣。

2. 滑動的時間視窗 (Sliding Time Window):在很多應用中,短時間內出現 在兩筆不同交易中的項目可能是有相關性的,所以可以將這兩個項目做 聯集加到順序模式裡視為同一筆交易。例如:有一位客戶今天訂了

“Foundation”,明天訂了“Ringworld”,隔了一週又訂了“Foundation and Empire”和“Ringworld Engineers”,則可以將“Foundation”和

“Ringworld”聯集起來,將〈(Foundation, Ringworld) (Foundation and Empire, Ringworld Engineers)〉加到順序模式裡。

3. 分類:很多資料庫都有對項目做分類,使用者如果想要得到不同層次間 的模式,則需加入分類。例如:給定一個分類圖如圖 2 - 4 - 5,若我們 想知道讀者借閱某一類別或某位作者的館藏後會借哪些書,則必須將類

別 及 作 者 也 加 入 交 易 資 料 裡 。 舉 例 來 說 : 如 果 有 一 位 讀 者 借 了

“ Foundation ” 及 “ Perfect Spy ” 二 本 館 藏 , 其 交 易 序 列 為

〈(Foundation)(Perfect Spy)〉,則我們必須將類別“Science Fiction”、

“Spy”及作者“Asimov”、“Le Carre”也加入序列中,使序列擴充 為〈(Foundation, Asimov, Science Fiction)(Perfect Spy, Le Carre, Spy)〉,

如此一來我們才能探勘出類別、作者及書目之間的關聯性。

圖 2 - 4 - 5:分類圖[12]

GSP 演算法如下:

首先,GSP 和 AprioriAll 一樣,在資料庫中找出所有長度為 1 的大項目集,

相當於長度為 1 的序列。接下來再依序產生候選集並計算候選集是否大於最小支 持度。

GSP 分為兩個步驟來產生候選集 Ck

1. 連結(Join):

用 Lk-1來連結 Lk-1。假設 Ck-1中有兩個序列 S1和 S2,如果 S1去掉 第一個項目和 S2 去掉最後一個項目後所得的序列相同,則將 S1 和 S2

連結起來成為 Ck的序列,此序列即為 S1加上 S2的最後一個項目。如:

〈(1,2) (3)〉和〈(2) (3,4)〉做連結後會產生〈(1,2) (3,4)〉。

Science Fiction

Asimov Niven

Foundation Foundation and Empire

Second Foundation

Ringworld Ringworld Engineers

Perfect Spy

Smiley’s People Le Carre

Spy

2. 刪除(Prune):

〈(2)(3,4)(5)〉、〈(1,2)(3)(5)(6)〉及〈(3)(5)〉等都是 s 的連續的子序列,但是

〈(1,2)(3,4)(6)〉和〈(1)(5)(6)〉則不是。 (after pruning)

<(1, 2)(3)>

GSP 在計算候選集是否大於最小支持度時,加入了時間限制和滑動的時間視

Transaction-Time Items

10

們所設定的時間視窗,因此找到出現時間在 20 之後的項目集(2,6)。

Items Times

1 → 10 → 50 → NULL 2 → 10 → 50 → 90 → NULL 3 → 45 → 65 → NULL 4 → 25 → 90 → NULL 5 → NULL

6 → 25 → 95 → NULL 7 → NULL

圖 2 - 4 - 8:各個項目的時間陣列

相關文件