1.9.1 Thuật toỏn
UWEP bao gồm 5 bước được mụ tả như sau:
1. Đếm cỏc 1-itemset trong d và tạo tidlist cho mỗi item trong d.
2. Kiểm tra cỏc itemset lớn trong D mà cỏc item thành phần khụng cú trong d, đồng thời kiểm tra độ lớn của cỏc itemset cha của chỳng.
3. Kiểm tra cỏc itemset lớn trong d xem chỳng cỳ lớn trong N khụng. 4. Kiểm tra cỏc itemset lớn trong D khụng được đếm trong d xem chỳng
cỳ lớn trong N khụng.
5. Sinh cỏc tập Candidate từ tập cỏc itemset lớn cú được từ bước trước.
Thuật toỏn Cắt tỉa sớm (UWEP)
Đầu vào : Cơ sở dữ liệu cũ D, cơ sở dữ liệu mới d
Đầu ra : Large Itemset trờn D + d
1. C1
d = cỏc 1-itemset trong d cú support > 0 2. Pruneset = L1 D – C1 d 3. Initial_pruning(Pruneset) 4. k=1 5. While Ck d ≠ 0 and Lk D ≠ 0 do Begin 6. Unchecked = Lk D
7. For all X thuộc Ck
ddo
If X là nhỏ trong d và X là lớn trong D then
Loại X khỏi Unchecked
if X nhỏ trong N then
Loại tất cả tập cha của X khỏi LD
else
Bổ sung X vào LN
End
else if X là lớn cả ở trong d và D then Begin
Loại X khỏi Unchecked Bổ sung X vào LN và Lk d
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP else if X là lớn ở d nhưng là nhỏ ở D then
Begin
Tỡm supportD(X) dựng tidlists
Nếu X là lớn trong N then
Bổ sung X vào LN và Lk d
End
8. For (với mọi X thuộc Unchecked) do begin
Tỡm supportd(X) dựng tidlists
If X là nhỏ trong N then
Loại bỏ cỏc tập cha của X khỏi LD
If X là lớn trong N then Bổ sung X vào LN 9. End 10. k=k+1 11. Ck d = generate_candidate(Lk-1 d ) 12. End
Thuật toỏn UWEP
Initial_pruning(PruneSet)
1. While PruneSet ≠ 0 dobegin
2. X= Phần tử đầu tiờn của PruneSet 3. If X là nhỏ trong N then
Loại bỏ X và cỏc itemset cha của nú khỏi LD và PruneSet
4. Else 5. Begin
Bổ sung cỏc tập cha của X trong LD vào tập PruneSet Bổ sung X vào LN và loại bỏ X khỏi LD
6. End
7. Loại bỏ X khỏi PruneSet
8. End
Thuật toỏn Initial_pruning
1.9.2 Tớnh đỳng đắn và hiệu quả
Ta sẽ chứng minh kết quả của phộp chạy thuật toỏn UWEP trờn cơ sở dữ liệu bổ sung là đỳng đắn và đầy đủ. Sau đú ta cũng sẽ chứng minh số lượng Candidate sinh ra và được đếm bởi thuật toỏn là tối thiểu.
Phỏt biểu 1: Cho tập cỏc transaction cũ (D), tập cỏc transaction mới (d), và tập cỏc itemset LD lớn trờn D, ta sẽ chứng minh thuật toỏn UWEP nờu trờn sẽ phỏt hiện đầy đủ và chớnh xỏc tất cả cỏc itemset lớn trờn D+d.
Chứng minh:
Gọi X là k-itemset lớn. X phải lớn trờn D hoặc d hoặc trờn cả D và d. Vỡ thế, để tỡm cỏc itemset lớn trờn D+d, ta phải kiểm tra cỏc itemset lớn của D trờn d, và cỏc itemset lớn của d trờn D. Ta sẽ chứng minh thuật toỏn đó làm tốt cụng việc này bằng hai bước chứng minh như sau. Đầu tiờn, ta sẽ chứng minh mọi itemset lớn trong D cũng được kiểm tra trờn d và ngược lại, mọi itemset lớn trong d cũng được kiểm tra trờn D.
Trong bước tỉa ban đầu, cỏc itemset X trong LD cú support bằng 0 được kiểm tra. Nếu X là nhỏ trong D+d, tất cả cỏc itemset cha của X sẽ bị loại vỡ chỳng khụng thể lớn trờn D+d. Nếu X là lớn trong D+d, chỳng ta sẽ đặt X vào tập LN
và cỏc itemset cha vào PruneSet. Quỏ trỡnh này được lặp lại cho đến khi PruneSet rỗng. Cuối cựng, bất kỡ itemset lớn nào trong D mà cú support trong d bằng 0 sẽ được kiểm tra trờn d. Vỡ thế, trước vũng lặp While (dũng 5 của thuật toỏn), LD gồm cỏc itemset lớn trờn D mà cú support trờn d lớn hơn 0, và LN sẽ chứa tất cả itemset lớn chứa item cú support trờn d bằng 0.
Trong vũng lặp thứ k, Unchecked được khởi tạo cho tập cỏc k-itemset lớn trờn D. Mọi thành phần của Unchecked cú trong Ck
d sẽ được kiểm tra (dũng 9 và 16). Nếu itemset trong Unchecked khụng tồn tại trong Ck
d, thỡ vũng lặp for thứ hai sẽ đếm support của nú trong d và sẽ xỏc định được cỏc itemset lớn trong N.
Vỡ vậy, tất cả cỏc itemset lớn trong Lk
D được kiểm tra trong d và đó chỉ ra cỏc itemset lớn trong N. Bõy giờ ta chứng minh tất cả cỏc itemset lớn trong Ld
được kiểm tra trong D. Trong thuật toỏn UWEP, Ck
d chứa những ứng viờn itemset lớn trờn N (khụng phải trờn d). Trong vũng for đầu tiờn, ta chỉ bổ sung những itemset trong Ck
d
và lớn trờn N vào tập Lk
d (dũng 17 và 22). Nếu k-itemset X lớn trờn d nhưng khụng lớn trờn N thỡ cỏc itemset cha của chỳng sẽ khụng thể lớn trờn N. Và vỡ vậy, ta khụng cần bổ sung X vào tập Lk
d. Nếu cú itemset lớn trong Ck
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
trờn D, ta sẽ bổ sung vào Lk
N theo dũng 17. Nếu itemset lớn đú nhỏ trong D, ta sẽ đếm support của nú dựng tidlist và quyết định đưa vào Lk
N và Lk
d tại dũng 22. Vậy ta cũng đó chứng minh, tất cả cỏc itemset lớn trong d được kiểm tra trờn D.
Phỏt biểu 2: Số lượng Candidate sinh ra và được đếm bởi thuật toỏn là nhỏ nhất, tức là số thao tỏc của thuật toỏn là ớt nhất cú thể.
Chứng minh:
Vỡ mọi thao tỏc sinh Candidate đều chỉ tỏc động lờn d nờn ta sẽ chứng minh phỏt biểu 2 thụng qua cỏc thao tỏc xử lớ trờn d mà thụi. Đầu tiờn, ta cú C1
d chỉ gồm cỏc itemset cú support lớn hơn 0. C1
d chứa số lượng itemset tối thiểu vỡ để xỏc định itemset lớn trong N, chỳng ta phải xỏc định support của cỏc item trong d. Vỡ chỉ những itemset lớn trờn N thỡ cỏc itemset cha của chỳng mới cú thể là lớn trờn N nờn trong bước lặp thứ k, chỳng ta chỉ bổ sung những itemset lớn trờn N vào Lk
d . Do đú, số lượng itemset trong Lk
d cũng là tối thiểu cho phộp đảm bảo tớnh đỳng đắn của thuật toỏn (đó chứng minh trờn). Và vỡ Ck+1
d
được sinh từ Lk
d nờn số lượng Candidate sinh ra trong bước lặp tiếp theo cũng là tối thiểu.
1.9.3 Thớ dụ minh họa
Giả sử cú cơ sở dữ liệu D và phần dữ liệu cập nhật d dưới đõy.
D d
1 2 3 4 5 6 7 8 9 A, C, D, E, F B, D, F A, D, E A, B, D, E, F A, B, C, E, F B, F A, D, E, F A, B, D, F A, D, F 1 2 3 4 5 6 A, F B, C, F A, C B, F A, B, C A, C, D
Thiết lập Minsup ngưỡng tối thiểu là 0.3. Vỡ thế một itemset phải được support bởi ớt nhất 0.3 * 9 = 3 transactions trờn D và ớt nhất 0.3 * 6 = 2 transactions trờn d (được support ớt nhất bởi 5 transactiỳn trờn N) mới được coi là Large.
Với cơ sở dữ liệu ban đầu D, ta cú: L1
D = {(A,7), (B,5), (D,7), (E,5), (F,8)} L2
D = {(AB,3), (AD,6), (AE,5), (AF,6), (BD,3), (BF,5), (DE,4), (DF,6), (EF,4) }
L3
D = {(ABF,3), (ADE,4), (ADF,5), (AEF,4), (BDF,3), (DEF,3) } L4
D = {(ADEF,3) }
Trong bước đầu tiờn của thuật toỏn, thuật toỏn duyệt d một lần để tỡm 1- itemset, đồng thời sinh tidlist cho mỗi 1-itemset đú. Cụ thể là:
C1
d = {(A,4), (B,3), (C,4), (D,1), (F,3) }.
E cú support bằng 0 trờn d nờn được đưa vào PruneSet để kiểm tra cỏc itemsets chứa E trong LD. Vỡ support(E) = 5 nờn E là lớn trờn N, ta loại E khỏi LD và đưa vào LN, đồng thời bổ sung cỏc tập cha của L2
d (AE, DE, EF) vào PruneSet. Sau đú lặp lại cỏc thao tỏc trờn với mỗi thành tố trong PruneSet. Vỡ support của DE và EF là 4, chỳng khụng được đưa vào LN. Ta cũng loại cỏc
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
tập cha của chỳng khỏi LD, bao gồm ADE, DEF, AEF, ADEF. Sau thao tỏc tỉa này, ta cú tập cỏc itemset lớn trong D và trong N như sau:
L1
D = {(A, 7), (B, 5), (D, 7), (F, 8)} L2
D = {(AB, 3), (AD, 6), (AF, 6), (BD, 3), (BF, 5), (DF, 6)} L3 D = {(ABF, 3), (ADF, 5), (BDF, 3)} L4 D = 0 L5 D = {(E, 5), (AE, 5)}
Bước lặp đầu bổ sung A, B, C, D, F vào LN và cỏc 1-itemset lớn trong d A, B, C, F vào L1
d. D khụng được bổ sung vỡ nỳ khụng lớn trờn d. Sau bước này, ta cú:
L1
d = {(A, 4), (B, 3), (C, 4), (F, 3) } và L1
N= {(A, 11), (B, 8), (C, 6), (D, 8), (E, 5), (F, 11) } Bắt đầu bước lặp thứ hai, ta cú tập cỏc ứng viờn trong d.
C2
d = {(AB, 1), (AC, 3), (AF, 1), (BC, 2), (BF, 2), (CF, 1) } và Unchecked = {AB, AD, AF, BD, BF, DF}
AB nhỏ trờn d nhưng lớn trờn D. AB cũng khụng lớn trờn N vỡ supportN (AB) = 4. Vỡ thế cỏc tập cha của AB bao gồm ABF bị loại khỏi tập LD. Itemset AC là lớn trờn d nhưng nhỏ trờn D. Support của AC trờn D được xỏc định bằng cỏch lấy giao của 2 tập tidlist của A và C trờn D. TidlistD(A) = {1, 3, 4, 5, 7, 8, 9}, tidlistD(C)= {1, 5} nờn giao của chỳng là {1, 5} và ta cú supportD(AC) =2. Vỡ supportD(AC)=3 + 2= 5, AC được bổ sung vào LN. AF là nhỏ trong d, nhưng cú supportN(AF) = 7 nờn được bổ sung vào LN mà khụng được bổ sung vào L2
d. BC lớn trờn d nhưng nhỏ trờn D. Vỡ thế thuật toỏn sẽ tớnh support của BC trờn D, giỏ trị này bằng 1. Support của BC trờn N là 3, nờn thuật toỏn khụng bổ sung BC vào LN cũng như L2
d. BF là lớn trờn cả D và d, nờn là lớn trờn N. CF là nhỏ trờn cả D và d nờn là nhỏ trờn N. Lỳc này, ta sẽ kiểm tra từng thành phần trong C2
d và cú Unchecked = {AD, BD, DF}
Vỡ D khụng cú trong L1
d nờn để tỡm support của AD, BD, DF trờn d, phải dựng tidlist của cỏc item trong itemsets. Kết quả là support của AD, BD, DF lần lượt là 1, 0, 0. Cộng với support của chỳng trờn D, ta cú support của AD, BD, DF trờn N là 7, 3, 6. AD và DF lớn trờn N nờn được bổ sung vào LN. Vỡ BD nhỏ trờn N nờn ta loại bỏ cỏc itemset cha của nú gồm BDF khỏi LD.
Kết quả của cuối vũng 2 là: L2
d = {(AC, 3), (BF, 2)} L2
N = {(AC, 5), (AD, 7), (AE, 5), (AF, 7), (BF, 7), (DF, 6)} Trước khi tiến hành vũng lặp thứ 3, ta tớnh được:
C1 d = 0
Unchecked = {ADF} Vỡ C1
d = 0 nờn thuật toỏn chuyển sang kiểm tra thành phần trong Unchecked. SupportN (ADF) = SupportD(ADF) + Supportd(ADF) = 5 + 0 = 5, và là lớn trờn N. Vỡ thế ADF được bổ sung vào LN và thuật toỏn kết thỳc tại đõy.
Kết quả thu được tập itemset lớn là: L1
N = {(A, 11), (B, 8), (C, 6), (D, 8), (E, 5), (F, 11)} L1
N = {(AC, 5), (AD, 7), (AE, 5), (AF, 7), (BF, 7), (DF, 6)} L3
N = {ADF, 5}
1.9.4 Đỏnh giỏ hiệu năng
Trong cỏc thử nghiệm đỏnh giỏ tớnh hiệu quả của UWEP, tỏc giả F.Ayan đó sử dụng dữ liệu với số lượng cỏc transaction cũ |D| = 200.000, số lượng transaction mới |d| = 2000, số lượng item trong một transaction trung bỡnh là 10, số lượng item trong toàn bộ transaction là 1000. F. Ayan cú thử nghiệm so sỏnh giữa UWEP và Partition, thuật toỏn được coi là hiệu quả nhất trong số cỏc thuật toỏn KPDLTD ra đời trước UWEP và đó rỳt ra kết luận như sau. Khi kớch thước của cơ sở dữ liệu nhỏ, UWEP nhanh hơn hẳn Partition nhưng sự chờnh lệch này giảm dần với cỏc cơ sở dữ liệu cú kớch thước lớn hơn. Với dữ liệu cú kớch thước khoảng 100 nghỡn transaction thỡ tốc độ hai thuật toỏn là
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
xấp xỉ nhau, nhưng UWEP vẫn thực thi nhanh hơn. Biểu đồ thống kờ dưới đấy là kết quả của thớ nghiệm.
Hỡnh 3-22 So sỏnh hiệu năng thuật toỏn UWEP và Partition
1.10THUẬT TOÁN ZIGZAG
1.10.1 Thuật toỏn
Tư tưởng của thuật toỏn Zigzag là cập nhật cỏc itemset lớn cực đại (maximal frequent itemset). Một itemset lớn cực đại là một itemset lớn khụng là tập con của bất cứ itemset lớn khỏc. Tập cỏc itemset lớn cực đại gọi là MFI. Nếu biết được MFI, ta sẽ biết được tất cả cỏc itemset lớn. Support của cỏc itemset lớn này sẽ được tớnh thụng qua một lần duyệt cơ sở dữ liệu. Việc tỡm cỏc itemset lớn thụng qua tỡm MFI sẽ làm tăng hiệu quả của việc sinh cỏc ứng viờn (với số lượng ứng viờn ớt hơn nhiều so với cỏc thuật toỏn khỏc).
Zigzag bao gồm 3 bước chớnh: 1. Cập nhật tidlist của cỏc item
2. Cập nhật cỏc itemset lớn cực đại trong dữ liệu thay đổi d 3. Cập nhật support của cỏc itemset lớn trong d
a. Cập nhật tidlist của cỏc item
Bước này nhằm tạo tidlist trờn d+ và trờn d- cho mỗi item thuộc N. Theo kết quả cú được, tidlist của cỏc item trờn N cũng sẽ được cập nhật bằng cỏch sau: ấN = ( ấD U ấd+ ) - ấd-
Nhờ sử dụng bảng Hash trong cài đặt, cú thể thực hiện bước này ngay sau cỏc sửa đổi tỏc động lờn cơ sở dữ liệu.
b. Cập nhật cỏc itemset lớn cực đại trong dữ liệu mới N
Sau khi cập nhật tidlist của cỏc item, ta phải tỡm cỏc itemset lớn trong N. Ta sẽ thực hiện việc tỡm kiếm này thụng qua việc tỡm cỏc itemset lớn cực đại trong N. Việc tỡm cỏc itemset lớn cực đại được coi là hiệu quả nếu thỏa món hai tớnh chất sau. Thứ nhất, cỏch tớnh support phải nhanh. Việc tớnh support liờn quan đến chi phớ thao tỏc duyệt cỏc ứng viờn. Cú nhiều kĩ thuật để cải tiến việc đếm support, cú thể dựng cỏc dạng nộn của tidlist như diffset hay chuỗi bit vector. Thứ hai, phải đảm bảo cơ chế cắt tỉa khụng gian ứng viờn khụng cú nhiều khả năng là itemset lớn. Tớnh chất thứ hai liờn quan đến số lượng ứng viờn sinh ra trong bước lặp. Số lượng ứng viờn sinh ra càng nhỏ thỡ việc tỡm kiếm càng nhanh. Giải phỏp của Zigzag là sử dụng kĩ thuật theo vết lựi (back tracking) tương tự như GenMax. Kĩ thuật theo vết lựi cú nhiều ưu điểm tăng tốc quỏ trỡnh tớnh support và quỏ trỡnh loại bỏ ứng viờn thừa. Dưới đõy sẽ mụ tả kĩ hơn về kĩ thuật này.
Kĩ thuật đếm nhanh support
Kĩ thuật đếm nhanh support của Zigzag dựa trờn sự kết hợp (associativity) của cỏc itemset, được mụ tả như sau:
Gọi X là k-itemset bao gồm cỏc item X1, X2, … X3. ấ(X) là tidlist của X và l(X)= |ấ(X)| là chiều dài tidlist của X, cũng là số support của X trong cơ sở dữ liệu. Thụng tin của tidlist đó được cập nhật tại bước đầu tiờn, nờn việc này được thực hiện khỏ dễ dàng. Mục tiờu của bước này là tỡm càng nhiều càng tốt cỏc itemset duy trỡ mà việc tớnh support của chỳng chỉ cần dựa trờn
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
tập d+ và d-. Ta khụng cần tớnh support của cỏc itemset này trong D vỡ thụng tin đỳ đú được lưu trong P. Để đẩy nhanh tốc độ tỡm kiếm cỏc itemset duy trỡ ta cú thể dựng một bảng hash để lưu trữ support của chỳng.
Hỡnh 3-23 Thuật toỏn Combine Set
Kĩ thuật tỉa
Kĩ thuật tỉa được thể hiện qua thuật toỏn Opt_Gen_Max dưới đõy Procedure Opt_Gen_Max(Ii, Ci, i)
1. For (mọi x thuộc Ci ) do
2. Begin
3. Ii+1 = I U {x}
4. Si+1 = { y : y thuộc Ci và y > x}
5. If Ii+1 U Si+1 cỳ cỏc itemset cha thuộc MFI then return 6. Ci+1 = Combine_Set(Ii+1, Si+1)
7. If Ci+1 = 0 then
If Ii+1 khụng cú itemset cha thuộc MFI then MFI = MFI U Ii+1
8. Else
Sắp xếp Ci+1 dựa trờn tương quan giữa Ii+1 với từng thành phần của Ci+1
Opt_Gen_Max(Ii+1, Ci+1, i+1) 9. End if
10. End
Hỡnh 3-24 Thuật toỏn Opt_Gen_Max
Procedure Combine_Set( Ii+1, Si+1)
1. C=0
2. For (mọi y thuộc Si+1) do
3. Begin
4. y’ = y
5. If Ii+1 U {y} là itemset duy trỡ then
s(y’) = s(II+1 U {y}) + sd+(Ii+1 U {y}) – sd-(Ii+1 U {y}) 6. Else
s(y’) = sN(Ii+1 U {y})
7. If s(y’) ≥ minsup then C = C U {y} 8. End
c. Cập nhật support của cỏc itemset lớn trong d
Bước trờn chỉ giỳp ta tỡm ra cỏc itemset lớn mà chưa tỡm cỏc support cho cỏc tập con của chỳng. Để tỡm support cho cỏc tập con, ta phải mất một lần duyệt qua cơ sở dữ liệu. Đõy là nhược điểm của cỏc thuật toỏn sử dụng phương phỏp