Thuật toán CHARM

Một phần của tài liệu NÂNG CAO HIỆU QUẢ CỦA CÁC THUẬT TOÁN KHAI THÁC LUẬT KẾT HỢP DỰA TRÊN DÀN (đầy đủ) (Trang 41 - 47)

CHARM dựa v o các tính chất của IT-pair để cải tiến thuật toán khai thác tập phổ biến (Eclat) th nh thuật toán khai thác tập phổ biến đóng. Ý tƣởng đơn giản nhƣng khá hiệu quả nhƣ sau: Cho 2 tập phổ biến X, YI, nếu (X)(Y) thì XY sẽ thuộc về cùng tập phổ biến đóng có tiền tố l XY. Nhƣ vậy ta không cần xét bất cứ tập cha n o của cả X lẫn Y ngoài XY. Quá trình tiếp tục khám phá đệ qui bằng cách tiếp tục xét các tập cha của XY.

2.2.2.1 Thuật toán

Kết quả : tập C gồm tất cả các tập phổ biến đóng của CSDL.

Phương pháp thực hiện:

Hình 2.12 – Thuật toán khai thác tập phổ biến đóng thỏa ngƣỡng minSupCount

Định nghĩa thứ tự tổng thể f: Ánh xạ f :P(I)N l một đơn ánh từ tập các itemset sang tập số nguy n. Với bất kì 2 itemset Xi và Xj, ta nói rằng Xif Xj khi v chỉ khi f(Xi) f(Xj). Hàm f định nghĩa một thứ tự tổng thể tr n tập tất cả các CHARM(D, minSupCount) 1. []= {lit(li):liI(li)minSupCount} 2. CHARM-EXTEND([], C= {}) 3. return C CHARM-EXTEND([P], C) 4. for each lit(li) in [P] do 5. PiPli and [Pi]

6. for each ljt(lj)in P with ji do 7. Xlilj and Yt(li)t(lj) 8. CHARM-PROPERTYXY,li,lj,Pi,   Pi , P 9. SUBSUMPTION-CHECK(C, Pi) 10. CHARM-EXTEND([Pi], C) CHARM-PROPERTYXY,li,lj,Pi,   Pi , P  11. if (X) minSupCount then 12. if t(li)t(lj) then // Tính chất 1 13. Remove lj from [P] 14. PiPilj 15. elseif t(li)t(lj)then // Tính chất 2 16. PiPilj 17. elseif t(li)t(lj) then // Tính chất 3 18. Remove lj from [P] 19. Add XY to  Pi // Theo thứ tự f 20. else // Tính chất 4 21. Add XY to  Pi // Theo thứ tự f

itemset. Ví dụ: nếu f chỉ thứ tự từ điển thì AC  AD nhƣng nếu f đƣợc sắp theo thứ tự tăng của độ phổ biến các itemset thì AD  AC do (AC)  (AD). Có 4 tính chất cơ bản của IT-pair (đƣợc minh họa trong hình 2.11) l m đòn bẩy cho CHARM khám phá nhanh các tập phổ biến đóng. Giả sử hiện tại chúng ta đang xử lý nút

) (P t

P trong đó  P l1,l2,...,ln l một lớp tiền tố, gọi Xi là một itemset của Pli

thì mỗi th nh vi n của  P l một cặp IT-pair Xit(Xi).

Thuật toán bắt đầu bằng việc khởi tạo lớp tiền tố [P], các nút đƣợc xét l các 1- itemset phổ biến v Tidset của chúng (lit(li),liI) ở dòng 1. Giả sử các phần tử trong [P] đƣợc sắp xếp theo thứ tự tổng thể f. Việc tính toán chính l thực thi thủ tục CHARM-EXTEND để trả về tập các itemset phổ biến đóng C.

CHARM-EXTEND xem xét mỗi kết hợp của IT-pair xuất hiện trong [P]. Thuật toán sẽ kết hợp mỗi IT-pair lit(li) (dòng 4) với mỗi IT-pair ljt(lj) khác đứng

sau nó (dòng 6) theo thứ tự tổng thể f. Mỗi li sinh ra một tiền tố mới PiPili

th nh lớp  Pi đƣợc khởi tạo rỗng tr n dòng 5. Tại dòng 7, hai IT-pair đƣợc kết hợp để sinh ra một cặp mới XY, trong đó X = li  lj và Y = t(li)  t(lj). Dòng 8 kiểm tra 4 tính chất của IT-pair bằng cách gọi thủ tục CHARM-PROPERTY. Thủ tục này thay đổi lớp hiện h nh [P] bằng cách xóa đi các IT-pair đ đƣợc gộp v o cặp khác. Nó cũng th m v o IT-pair mới trong lớp mới [Pi] và có thể thay đổi tiền tố Pi trong trƣờng hợp thỏa tính chất 1 hoặc 2. Sau đó thêm itemset Pi v o tập itemset phổ biến đóng C (dòng 9) với điều kiện Pi không bị gộp bởi bất kì tập đóng n o đƣợc tìm thấy trƣớc đó. Khi tất cả các lj đ đƣợc xử lý, thuật toán sẽ khám phá đệ qui các lớp tƣơng đƣơng mới [Pi] theo chiều sâu.

Tái sắp xếp tự động các phần tử: Theo thuật toán, nếu Xi và Xj thỏa tính chất 1 hoặc tính chất 2 thì ta sẽ không th m nút mới v o cây tìm kiếm. Với tính chất 1, bao đóng (sử dụng toán tử đóng) của hai itemset l bằng nhau, vì vậy chúng ta có thể

loại bỏ lj từ [Pi] v thay thế Pi với Pi  lj. Với tính chất 2, chúng ta vẫn có thể thay thế Pi với Pi  lj. Trong cả hai trƣờng hợp tr n, chúng ta không th m bất cứ một lớp mới [Pi] n o. Vì vậy, c ng xảy ra trƣờng hợp 1 v 2 nhiều thì c ng ít mức tìm kiếm đƣợc thực thi. Ngƣợc lại, trƣờng hợp 3 v 4 phải th m v o nút mới đòi hỏi th m mức xử lý tr n cây IT.

Vì chúng ta muốn t(li) = t(lj) (tính chất 1) hoặc t(li)  t(lj) (tính chất 2) n n chúng ta cần sắp xếp các itemset tăng dần theo độ phổ biến. Tại nút gốc, chúng ta sắp xếp các item tăng dần theo độ phổ biến của chúng. Với các mức còn lại, mỗi phần tử đƣợc th m v o theo thứ tự đ sắp xếp theo độ phổ biến của mỗi lớp mới [Pi] (dòng 19 v 21). Vì vậy, việc tái sắp xếp đƣợc thực hiện đệ qui tại mỗi nút tr n cây.

2.2.2.2. Minh họa

Hình 2.13 – Cây IT-tree tìm tập phổ biến đóng thỏa ngƣỡng minSupCount

Hình 2.13 minh họa quá trình khai thác FCI thỏa ngƣỡng phổ biến minSupCount = 3 trên IT-tree. Đầu ti n, lớp tƣơng đƣơng {A, C, D, T, W} đƣợc sắp xếp theo chiều tăng dần của độ phổ biến th nh [] = {D, T, A, W, C}. Khi li = D, nó kết hợp với các lj  {T, A, W, C}, do (DT) = 2 < minSupCount n n nó không đƣợc sinh ra ở mức kế. Tƣơng tự, (DA) = 2 < minSupCount. Mặt khác, do t(D)  t(W) = 2456  12345 = 245  DW l một nút mới. Tiếp tục kết hợp D với C, do t(D)  t(C) nên

123456 D2456 T1356 A1345 W12345 C123456 DC TC AW WC AWC DW245 TA135 TW135 DCW TCA TCW TCAW

thỏa tính chất 2  Thay D bởi DC (đƣợc thể hiện tr n cây bằng cách xóa D và thêm vào DC). Quá trình tiếp tục khai thác đệ qui theo chiều sâu để tìm các tập FCI. So sánh hình 2.13 v hình 2.5, có thể thấy mức tìm kiếm trong trƣờng hợp khai thác FCI giảm đáng kể so với khai thác FI (2 so với 4), điều n y dẫn đến không gian bộ nhớ y u cầu sẽ nhỏ hơn.

Để minh họa tính chất 1 của định lý 2.2.1, xét nút TCA135 với nút TCW135: Do

t(TCA) = t(TCW) = 135 n n cả TCA lẫn TCW đều không l tập đóng  Xóa nút TCW135 khỏi lớp tƣơng đƣơng [TC] v thay nút TCA135 thành TCAW135.

Bảng 2.5. Danh sách các FCI của CSDL tr n bảng 1.1 với minSupCount = 3 (Theo thứ tự khám phá đệ qui) FCI  CD 4 CDW 3 CT 4 ACTW 3 ACW 4 CW 5 C 6

2.2.2.3 Kiểm tra gộp nhanh

Cho Xi và Xj là hai itemset, ta nói itemset Xi gộp itemset Xj khi v chỉ khi Xj  Xi và (Xi) = (Xj). Trƣớc khi th m tập Pi v o tập đóng hiện h nh C, thuật toán CHARM thực hiện việc kiểm tra ở dòng 9 nhằm xét xem Pi có bị gộp bởi tập đóng n o trong

C? Nói cách khác, một điều có thể xảy ra l sau khi th m tập đóng Y vào C, khi khám phá các nhánh con khác, chúng ta có thể sinh ra tập X khác m không thể mở rộng th m nữa với XY và (Y) = (X). Trong trƣờng hợp n y, X không l tập đóng đƣợc gộp bởi Y v nó không đƣợc th m v o trong C. Do C tự động mở rộng trong suốt quá trình liệt k các mẫu đóng, chúng ta cần phƣơng pháp nhanh để thực thi sự kiểm tra gộp.

Rõ r ng, chúng ta muốn tránh so sánh Pi với tất cả các tập trong C vì độ phức tạp có thể l n đến O(|C|). Để rút trích nhanh các tập đóng có li n hệ, giải pháp rõ r ng l lƣu C trong bảng băm, nhƣng h m băm n o đƣợc dùng? Bởi vì chúng ta muốn thực thi việc kiểm tra tập con chứ không phải tr n các itemset. Chúng ta có thể dùng độ phổ biến cho h m băm, nhƣng nhiều itemset không li n quan cũng có cùng độ phổ biến. Bởi vì CHARM sử dụng thông tin từ các Tidset để giúp xác định xem liệu Pi có đƣợc gộp hay không? Chúng ta biết rằng, nếu t(Xi) = t(Xj) thì rõ ràng (Xi) = (Xj). Vì vậy, để kiểm tra Pi có đƣợc gộp hay không, ta cần kiểm tra t(Pi) =

t(C) hay không với một số tập đóng CC. Việc kiểm tra n y có thể thực hiện với độ phức tạp l O(1) sử dụng bảng băm. Nhƣng rõ r ng chúng ta không thể nổ lực để lƣu trữ các Tidset thực sự với mỗi tập đóng trong C; không gian bộ nhớ y u cầu sẽ có thể ngăn cản điều n y. Để giải quyết vấn đề, Zaki và các đồng sự trong [B96] đề nghị sử dụng tổng các tid trong Tidset l h m băm, nghĩa l   (adsbygoogle = window.adsbygoogle || []).push({});

) ( ) ( i P t T i T P h . Hàm

băm n y tốt bởi một số lí do sau: Thứ nhất, theo định nghĩa, một tập đóng thì không có tập cha với cùng độ phổ biến; điều n y dẫn đến phải có v i tid không xuất hiện trong bất kì tập đóng n o khác. Vì vậy, khóa của các tập đóng khác nhau thƣờng sẽ khác nhau. Thứ hai, thậm chí nếu có nhiều tập đóng với cùng khóa, kiểm tra độ phổ biến (nếu (Pi)(C)) giúp chúng ta thực hiện việc loại bỏ nhiều tập đóng có khóa giống nhau nhƣng trong thực tế chúng có độ phổ biến khác nhau. Thứ ba, h m băm n y dễ tính toán. Tuy nhi n, trong thực tế c i đặt luận án đ sử dụng t(X) làm khóa do độ phức tạp tính toán h m băm nhƣ tr n quá lớn trong khi số lƣợng các tập có cùng độ phổ biến trong C rất nhỏ (theo thực nghiệm, với |C| = 369450 trong CSDL Chess2 với minSup = 50% thì khả năng trùng khóa tối đa l 120). Mặt khác, nhƣ chúng ta đ biết, kỹ thuật Diffset thƣờng nhanh v tốn ít không gian bộ nhớ hơn so

với Tidset nhƣng nếu chúng ta muốn tính h m băm theo công thức tr n phải có Tidset v vì vậy, độ phức tạp để tính h m băm sẽ cao.

Hình 2.14 – Kiểm tra gộp nhanh [B96]

Một phần của tài liệu NÂNG CAO HIỆU QUẢ CỦA CÁC THUẬT TOÁN KHAI THÁC LUẬT KẾT HỢP DỰA TRÊN DÀN (đầy đủ) (Trang 41 - 47)