第 3 章 SIT(SORTING INDEXING TRIMMING)演算法
3.1 排序(S ORTING )
第3章 SIT(Sorting Indexing Trimming)演
圖 3.1 交易物項未排序與排序的搜尋方式
假設要檢查候選物項集合{c,f}是否為 Tid=1 的子集合,首先說明左邊未排序的 資料庫,找出候選物項集合的物項c 是否存在於 Tid 的=1 集合內,依序比對物 項a→b→c ,共 3 次才確認物項 c 存在,接著找出候選物項集合的物項 f 是否 存在於Tid=1 的集合內,依序比對物項 a→b→c→i→g→p→m→f ,共 8 次才確 認物項f 存在,所以共須比較 11 次才能確認候選物項集合{c,f}為 Tid=1 的子集 合;若是使用右邊排序的資料庫,首先找出候選物項集合的物項c 是否存在於 Tid 的=1 集合內,依序比對物項 a→c ,共 2 次就確認物項 c 存在,接著找出候 選物項集合的物項f 是否存在於 Tid=1 的集合內,可直接從物項 c 之後的物項 f 開始比對,所以只比對1 次就確認物項 f 存在,所以共須比較 3 次就能確認候 選物項集合{c,f}為 Tid=1 的子集合。
根據以上的說明可知,若每個交易下的物項有排序,當候選物項集合中的某一 物項集合{i,j}是否存在於一交易 T 時,逐一比對 T 底下所有的物項是否有存在 物項i,若於 T 的第 x 位址找到時,於此候選物項集合下一個的物項 j,只須從 T 的第 x+1 的位址開始比對,無須從頭開始;如發生於 T 的第 y 位址的物項比 物項j 大時,因為有排序的原因我們可以確認 T 不存在物項 j。
3.1.2 交易物項依出現頻率的方式排序對於演算法的益處
有些演算法為了能得到更好的效益,事先依物項於資料庫出現的頻率排序,然 後再對每一交易下的物項排序來增加其效益,如圖3.2
3,1,7,2,14,5,15,6 5
4,1,13,6,17 4
4,2,10,12,16 3
3,4,1,2,14,5,16 2
3,1,7,2,9,11,5,6 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
1 s
3 p
1 o
1 n
3 m
1 l
1 k
1 j
1 i
1 h
1 g
4 f
1 e
1 d
4 c
3 b
3 a
Count Item
s o n l k j i h g e d p m b a f c Item
1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 4 4 Count
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Index
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
1
5 4
2 3
圖 3.2 資料庫依照物項出現的頻率由高至低排序 圖3.2 排序流程如下
1. 為原始資料庫。
2. 計算各物項於資料庫出現的次數。
3. 依照物項的次數由高至低排序,建立索引編號表格(索引編號愈小,代表物項
次數愈高) 。4. 依據索引編號表格的對映,將資料庫的物項改成相對映的索引編號。
5. 將各交易下的物件索引編號排序。
比對的方式如圖3.3
s o n l k j i h g e d p m b a f c Item
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Index
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
圖 3.3 交易物項依出現頻率的方式排序的搜尋方式
假設要檢查候選物項集合{c,f}是否是 Tid=1 的子集合於圖 3.3 中可看出,{c,f}
對映的索引編號是{1,2},找出候選物項集合的物項 1 是否存在於 Tid 的=1 集合 內,結果第一次就找到物項1,接著找出候選物項集合的下一個物項 2 是否存在 於Tid 的=1 集合內,結果也是第 1 次就找到了,所以只須比對 2 次就能確認{c,f}
是Tid=1 的子集合,這是因為出現頻率愈高的物項排在愈前面,想要比對的物 項愈快找到。由此可知依據物項於資料庫出現的次數排序,將更有助於Apriori 演算法的效益。
3.1.3 SIT 排序的方法
SIT 排序方法與 3.1.2 的排序的順序相反如圖 3.4
12,16,1,17,8,14,9,15 5
13,16,7,15,11 4
13,17,4,6,10 3
12,13,16,17,8,14,10 2
12,16,1,17,3,5,14,15 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
1 s
3 p
1 o
1 n
3 m
1 l
1 k
1 j
1 i
1 h
1 g
4 f
1 e
1 d
4 c
3 b
3 a
Count Item
f c p m b a s o n l k j i h g e d Item
4 4 3 3 3 3 1 1 1 1 1 1 1 1 1 1 1 Count
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Index
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
1 2 3
4
5
圖 3.4 SIT 排序的流程圖
SIT 的排序方式與 3.1.2 的方式相同,但是物項的索引編號是依照物項出現的次 數愈高,則編號愈大,這對於傳統的Apriori 演算法將是最不好的排序,但是對 於在於往後要介紹的索引方法將能達到最好的效率。
由本章節的討論得知不同的排序技巧將有助於搜尋比較的效益,只要於資料庫 使用簡單的SQL 語言花很少的時間事先將資料排序,就能獲的往後於大量資料 搜尋比較的好處。