• 沒有找到結果。

Apriori 的索引改良法

在文檔中 中 華 大 學 (頁 43-48)

第 3 章 SIT(SORTING INDEXING TRIMMING)演算法

3.2 索引(I NDEXING )

3.2.1 Apriori 的索引改良法

於傳統的Apriori 的演算法找尋高頻物項集合至少須比對的次數如範例圖 3.5

{m,p}

{f,p}

{f,m}

{c,p}

{c,m}

{c,f}

{b,p}

{b,m}

{b,f}

{b,c}

{a,p}

{a,m}

{a,f } {a,c}

{a,b}

Itemset

8 8 7 8 7 4 1 1 1 1 8 7 4 2 2 Count

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

圖 3.5 Apriori 演算法找尋高頻物項集合至少須比對的次數範例圖 左邊的圖代表候選物項集合,右邊的圖代表資料庫,其中各交易下的所有物項 已事先排序好,使用傳統的Apriori 的演算法,比對各候選物項集合是否為 Tid=1 物項集合的子集合,左邊圖的Count 欄位是各候選物項集合至少須比較的次數。

依圖3.5 資料來說明,要確認左邊候選物項集合是否為 Tid=1 物項集合的子集 合,其步驟如下

1. 比對候選物項集合{a,b},首先找尋物項 a,只比對了 1 次就找到了,然後找

尋物項b,於 Tid=1 的第 2 個位址的物項開始比對,結果發現是物項 c 不必 再往下比對,共比較了2 次,確認候選物項集合{a,b}不是 Tid=1 的子集合。

2. 比對候選物項集合{a,c},找尋物項 a 只比對了 1 次,接者比對物項 c 於 Tid=1

的第2 個位址物項開始比對,結果只比對了 1 次,候選物項集合{a,c}共比對 了2 次,確認候選物項集合{a,c}是 Tid=1 的子集合。

3. 比對候選物項集合{a,f},找尋物項 a 只比對了 1 次,接者比對物項 c 於 Tid=1

的第2 個位址物項開始比對結果分別比對 c→d→f 共 3 次,所以候選物項集 合{a,f}共比對了 4 次,確認候選物項集合{a,f}是 Tid=1 的子集合。

4. 依上序方法,依序比對了候選物項集合{a,m}、{a,p}、{b,c}、{b,f}、{b,m}、

{b,p}、{c,f}、{c,m}、{c,p}、{f,m}、{f,p}、{m,p}是否為 Tid=1 的子集合,分 別比對了7、8、1、1、1、1、4、7、8、7、8、8 次。

從以上的步驟得知,至少必須比對了2+2+4+7+8+1+1+1+1+4+7+8+7+8+8=69 次 才能確認圖3.5 左邊候選物項集合是否為 Tid=1 的物項集合的子集合,根據以上 的說明可以確認每個候選物項集合最少是1 次,最多是每個交易下的物項個數 的次數,就能判斷是否為一交易的子集合。

使用圖3.5 的資料庫,依各物項於資料庫出現的頻率排序,如圖 3.6

1,2,3,5,6,7,14,15 5

1,4,613,17 4

2,4,10,12,16 3

1,2,3,4,5,14,16 2

1,2,3,5,6,7,9,11 1

Items Tid

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

{5,6}

{4,6}

{4,5}

{3,6}

{3,5}

{3,4}

{2,6}

{2,5}

{2,4}

{2,3}

{1,6}

{1,5}

{1,4 } {1,3}

{1,2}

Itemset

5 4 4 5 4 4 5 4 4 3 5 4 4 3 2 Count

圖 3.6 依各物項的於資料庫出現的頻率由高至低排序

左邊的圖代表候選物項集合,右邊的圖代表資料庫,其中各交易下的所有物項 已事先按資料庫出現的頻率由高至低排序(排序過程請參照 3.1.2)

依圖3.6 資料來說明,要確認左邊候選物項集合是否為 Tid=1 物項集合的子集 合,其步驟如下

1. 比對候選物項集合{1,2},找尋物項 1 只比對了 1 次,接者比對物項 2 於 Tid=1

的第2 個位址物項開始比對,結果只比對了 1 次,候選物項集合{1,2}共比對 了2 次,確認候選物項集合{1,2}是 Tid=1 的子集合。

2. 比對候選物項集合{1,3},找尋物項 1 只比對了 1 次,接者比對物項 3 於 Tid=1

的第2 個位址物項開始比對,結果分別比對了 2→3 共 2 次,候選物項集合{1,3}

共比對了3 次,確認候選物項集合{1,3}是 Tid=1 的子集合。

3. 比對候選物項集合{1,4},找尋物項 1 只比對了 1 次,接者比對物項 4 於 Tid=1

的第2 個位址物項開始比對,結果分別比對了 2→3→5 共 3 次,發現物項 5 不必再往下比對,確認候選物項集合{1,4}不是 Tid=1 的子集合。

4. 依上序方法,依序比對了候選物項集合{1,5}、{1,6}、{2,3}、{2,4}、{2,5}、

{2,6}、{3,4}、{3,5}、{3,6}、{4,5}、{4,6}、{5,6}是否為 Tid=1 的子集合,分 別比對了4、5、3、4、4、5、4、4、5、4、4、5 次。

從以上的步驟得知,至少必須比對了2+3+4+4+5+3+4+4+5+4+4+5+4+4+5=60 次 才能確認圖3.6 左邊候選物項集合是否為 Tid=1 的物項集合的子集合。

同樣使用圖3.5 的資料庫,使用 SIT 方法排序,並將候選物項集合的第 1 個位址 物項建立索引對映矩陣,如圖3.7

1,8,9,12,14,15,16,17 5

7,11,13,15,16 4

4,6,10,13,17 3

8,10,12,13,14,16,17 2

1,3,5,12,14,15,16,17 1

Items Tid

{16,17}

{15,17}

{15,16}

{14,17}

{14,16}

{14,15}

{13,17}

{13,16}

{13,15}

{13,14}

{12,17}

{12,16}

{12,15 } {12,14}

{12,13}

Itemset

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Address

{16,17}

{15,17}

{15,16}

{14,17}

{14,16}

{14,15}

{13,17}

{13,16}

{13,15}

{13,14}

{12,17}

{12,16}

{12,15 } {12,14}

{12,13}

Count

0 0 17

15 15 16

14 13 15

12 10 14

9 6 13

5 1 12

0 0 11

0 0 10

0 0 9

0 0 8

0 0 7

0 0 6

0 0 5

0 0 4

0 0 3

0 0 2

0 0 1

End Start Item

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

圖 3.7 依據 SIT 方法排序建立索引編號對映矩陣

依據SIT 排序,將資料庫的物項依出現的頻率由低至高排序,由小至大建立索 引編號,更新成新的資料庫於圖3.7 的左下方的資料庫,然後於每個候選物項 集合的第1 個位址的物項建立索引編號的矩陣,儲存候選物項集合的第 1 個位 址物項的開始與結束位址。

圖3.7 左下方使用 SIT 的排序方法建立新資料庫,並建立索引編號矩陣,其內容 儲存所有的物項編號在各候選物項集合中第1 個位址物項的開始及結束位址,

所以物項編號1~11 不存在於候選物項集合中第 1 個位址的物項中,其開始與結 束位址為0,物項 12 在各候選物項集合中第 1 個位址的物項的開始及結束位址 分別為1、5;物項 13 在各候選物項集合中第 1 個位址的物項的開始及結束位址 分別為6、9,物項 14 在各候選物項集合中第 1 個位址的物項的開始及結束位址 分別為10、12,物項 15 在各候選物項集合中第 1 個物項的開始及結束位址分別 為13、14,物項 16 在各候選物項集合中第 1 個位址的物項的開始及結束位址為 15、15,物項編號 17 不存在於候選物項集合的第 1 個位址的物項中,開始與結

束位址為0。

當建立完索引對映矩陣之後,接著SIT 使用排序索引的方法找尋高頻物項集合 如圖3.8

1,8,9,12,14,15,16,17 5

7,11,13,15,16 4

4,6,10,13,17 3

8,10,12,13,14,16,17 2

1,3,5,12,14,15,16,17 1

Items Tid

{16,17}

{15,17}

{15,16}

{14,17}

{14,16}

{14,15}

{13,17}

{13,16}

{13,15}

{13,14}

{12,17}

{12,16}

{12,15 } {12,14}

{12,13}

Itemset

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Address

0 0 17

15 15 16

14 13 15

12 10 14

9 6 13

5 1 12

0 0 11

0 0 10

0 0 9

0 0 8

0 0 7

0 0 6

0 0 5

0 0 4

0 0 3

0 0 2

0 0 1

End Start Item

0 17

1 16

1+2=3 15

1+2+3=6 14

1+1+2+3+4=11 12

0 5

0 3

0 1

Count Item

圖 3.8 使用 SIT 的方法,找尋高頻物項集合

使用SIT 方法找尋是以交易下的各物項為主,分別找尋以該物項為首的候選物 項集合,利用索引對映矩陣直接對映,該物項是否存在,如存在,根據索引對 映矩陣的開始與結束位址來直接比對,不必將所有的候選物項集合逐一比對,

至於交易物項的開始位址也是自發現的位址開始比對,不必重頭比對。

依圖3.7 資料來說明,要確認左邊候選物項集合是否為 Tid=1 物項集合的子集 合,其步驟如下

1. Tid=1 的第 1~3 位址的物項 1、3、5,直接對映於索引對映矩陣,發現其開始

與結束位址為0,所以不必比對。

2. Tid=1 的第 4 個位址物項 12,直接對映至索引對映矩陣,發現其開始與結束

位址分別為1、5,得知候選物項集合的第 1~5 位址的集合為{12,13}、{12,14}、

{12,15}、{12,16}、{12,17}需要比對。

3. 比對步驟 2 所得的 5 個候選物項集合,已經確認候選物項集合的第 1 個位址

12 存在於 Tid=1,所以可直接至這 5 個候選物項集合的第 2 個位址開始比對 物項是否存在於Tid=1 物項集合內,至於 Tid=1 開始比對的位址則在物項 12 之後的位址,其位址為5。

4. 開始比對候選物項集合{12,13},候選物項集合第 2 個位址為物項 13,Tid=1

位址為5 的物項為 14,只比對了 1 次,候選物項集合{12,13}不是 Tid=1 的子 集合

5. 比對候選物項集合{12,14},候選物項集合第 2 個位址為物項 14,Tid=1 位址

為5 的物項為 14,只比對了 1 次,候選物項集合{12,14}是 Tid=1 的子集合

6. 依步驟 4~5 的方法比對了{12,15}、{12,16}、{12,17}分別比對了 2、3、4,所

以共比較了1+1+2+3+4=11 確認以物項 12 為第 1 個位址的候選物項集合比對 了12 次,就能確認這些候選物項集合是否為 Tid=1 的子集合。

7. 依步驟 1~6 的方法比對 Tid=1 的第 5~8 位址的物項 14、15、16、17,以這些

物項為第1 個位址的候選物項集合分別比對了 6、3、1、0 次,就能確認這些 候選物項集合是否為Tid=1 的子集合。

從以上的步驟得知,至少必須比對了11+6+3+1=21 次就能確認候選物項集合是 否為Tid=1 的物項集合的子集合。故依 SIT 方法改良 Aprioi 的效益是能有效的 減少比對次數,所以SIT 的方法排序,依據物項出現於資料庫的次數越高的放 在越後面,則越有效益,剛好與傳統的Apriori 排序順序相反。

在文檔中 中 華 大 學 (頁 43-48)

相關文件