第 3 章 SIT(SORTING INDEXING TRIMMING)演算法
3.3 修剪(T RIMMING )
IM[16]+G17=170 IM[17]
IM[15]+G16=168 IM[16]
IM[14]+G15=165 IM[15]
IM[13]+G14=161 IM[14]
IM[12]+G13=156 IM[13]
IM[11]+G12=150 IM[12]
IM[10]+G11=143 IM[11]
IM[9]+G10=135 IM[10]
IM[8]+G9=126 IM[9]
IM[7]+G8=116 IM[8]
IM[6]+G7=105 IM[7]
IM[5]+G6=93 IM[6]
IM[4]+G5=80 IM[5]
IM[3]+G4=66 IM[4]
IM[2]+G3=51 IM[3]
IM[1]+G2=35 IM[2]
G1=18 IM[1]
0 IM[0]
Value Index Array
2 G17
3 G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
圖 3.11 MPHP 索引矩陣計算方法
於圖3.11 建立索引矩陣,將所有 Group 會遇到計算直接儲存於矩陣當中,且矩 陣的大小與物項的個數一樣,只使用很小的記憶體,當要計算雜湊函數時,如 H(13,16) ,其中的 G1+G2+….G12 的計算,只須直接對映到索引矩陣 IM(12)即 可,所以對於電腦計算只要IM(12)+(16-13)=153。由以上的說明可知,使用 SIT 的改良式MPHP 的雜湊函數只須 2 個運算元,而原本的 MPHP 的雜湊函數需要 9 個運算元,其中還包含乘法與除法。
SIT 所提出的索引技巧,除了能大量的改善 Apriori 的比對次數,還能應用於 MPHP 的雜湊函數,減少雜湊函數的運算元,惟 MPHP 的雜湊函數相對於關聯 式法則整個演算法執行的時間相對很少,所以必須資料庫下每個交易長度較長 的情況下,才能顯現其效能。
下不可能的物項,所以SIT 於 Apriori 的修剪將不考慮,而 MPHP 則可以適用。
首先要說明的是,修剪必須事先使用SIT 的方法排序才會得到最好的修剪效果,
如3.12 圖所示
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,3,4,6,12,13,14,16 5
2,3,11,16,19 4
2,6,8,10,15 3
1,2,3,6,12,13,15 2
1,3,4,6,7,9,13,16 1
Items Tid
3 16
3 13
4 6
4 3
3 2
3 1
Count Item
1,3,4,6,12,13,14,16 5
2,3,11,16,19 4
2,6,8,10,15 3
1,2,3,6,12,13,15 2
1,3,4,6,7,9,13,16 1
Items Tid
1 2
3 4
圖 3.12 物項未經排序之修剪範例
假設最小支持度為3,當找尋到第 1 層的高頻物項集合時,可以找出該高頻物 項集合中最大的物項,凡是於資料庫所有交易的物項大於最大的物項,即可直 接修剪。
圖3.12 的修剪步驟如下
1. 為原始資料庫。
2. 為了方便比較將所有物項改成數字編號。
3. 計算各物項的次數,找出大於最小支持度的物項分別有 1、2、3、6、13、16
等6 個物項。4. 在資料庫中,每個交易下的物項,只要是物項編號大於 16 的物項,可以修剪,
根據圖3.12 沒有使用所 3.1 節的方法排序只能於 Tid=4 剪除物項 19,所以其效 果不好,反而浪費時間在檢查有無可修剪的物項,為配合索引的技巧,物項是 根據於資料庫出現的次數由低至高排序,編號物項由低至高的排序,如圖
3.13 ,說明排序及修剪
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,8,9,12,14,15,16,17 7,11,13,15,16 4,6,10,13,17 8,10,12,13,14,16,17 1,3,5,12,14,15,16,17
Items
1 1 1 1 1 Start
5 4 3 2 1 Tid
17 16 15 14 13 12 Item
4 4 3 3 3 3 Count
1,8,9,12,14,15,16,17 7,11,13,15,16 4,6,10,13,17 8,10,12,13,14,16,17 1,3,5,12,14,15,16,17
Items
4 3 4 5 4 Start
5 4 3 2 1 Tid
3
1 2
4
圖 3.13 物項經排序之修剪範例
假設最小支持度為3,當找尋到第 1 層的高頻物項集合時,可以找出該高頻物 項集合中最小的物項,凡是於資料庫所有交易的物項小於最小的物項,即可直 接修剪。
圖3.13 的修剪步驟如下
1. 為原始資料庫。
2. 為了能達到最大的修剪的量,所以事先依物項於資料庫出現的次數由低至
高排序,物項編號由小至大,為了讓程式執行過程中不去真正刪除物項,所以須多加一欄位 Start,待後續要修剪後,程式是從 Start 所指的值開始 產生Hash table 的物項集合。
3. 計算各物項的次數,找出大於最小支持度的物項分別為 12、13、14、15、
16、17。
4. 在資料庫中,每個交易下的物項,只要是物項編號小於 12 的物項,可以
修剪,Tid=1 的前面 3 個物項 1、3、5 可以修剪,所以將 Start 的值設為 4,依此方法分別將 Tid=2、3、4、5 的 Start 的值分別設為 5、4、3、4。
根據圖3.12 沒有使用所 3.1 的方法排序只能於 Tid=4 剪除物項 19,所以其效果
於資料庫中每筆交易下的物項集合,至少可修剪了2 個以上物項。
根據圖3.13 的修剪搭配到 MPHP 的雜湊函數計算,修剪能減少雜湊函數計算的 量,再加上前面索引的技巧,MPHP 可以改善的效率如圖 3.15
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
10*2=20 28*9=252
5
3*2=6 10*9=90
4
1*2=2 10*9=90
3
10*2=20 21*9=189
2
10*2=20 28*9=252
1
SIT-MPHP MPHP
Tid Operators
10 28
5
3 10
4
1 10
3
10 21
2
10 28
1
SIT-MPHP MPHP
Tid Operands
34 66
SIT-MPHP
97 873
MPHP
Operands Operators
1,8,9,12,14,15,16,17 7,11,13,15,16 4,6,10,13,17 8,10,12,13,14,16,17 1,3,5,12,14,15,16,17
Items
4 3 4 3 4 Start
5 4 3 2 1 Tid
圖 3.14 MPHP 使用 SIT 的方法所節省的雜湊函數計算成本
由圖3.14 可知 MPHP 使用修剪的技巧減少了運算元,使用了索引及修剪的技巧 則可減少了運算子。