Các thuật toán khai thác tập phổ biến

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 25 - 149)

Các thuật toán khai thác tập phổ biến thƣờng đƣợc sử dụng l Apriori [B7], Eclat [B103] và FP-Growth [B38]. Phần n y trình b y chi tiết thuật toán Apriori v Eclat. Apriori l thuật toán nền tảng còn Eclat l thuật toán đƣợc sử dụng để khai thác tập phổ biến phục vụ cho việc phát sinh luật trong chƣơng 3. Ngo i ra, Eclat cũng đƣợc sử dụng để xây dựng dàn tập phổ biến.

2.1.2.1 Thuật toán Apriori a) Ý tưởng của thuật toán

Thuật toán khai thác các tập phổ biến bằng cách thực hiện nhiều lần duyệt CSDL. Duyệt lần thứ nhất để tính độ phổ biến của các 1-itemset v xác định các item phổ biến từ chúng, nghĩa là độ phổ biến thỏa ngƣỡng phổ biến tối thiểu. Trong các lần duyệt sau, thuật toán sẽ kết hợp các itemset phổ biến đ tìm đƣợc trong lần duyệt trƣớc để tìm các tập ứng vi n. Sau đó tính độ phổ biến thực sự của các tập ứng vi n n y nhằm xác định itemset n o trong các tập ứng vi n l tập phổ biến thực sự. Các itemset n y trở th nh các hạt giống cho lần duyệt tiếp theo. Quá trình n y thực hiện cho đến khi không còn một tập phổ biến mới n o nữa đƣợc sinh ra.

Thuật toán Apriori sinh ra các tập ứng vi n trong một lần duyệt bằng cách chỉ sử dụng các tập phổ biến đ đƣợc khai thác trong lần duyệt trƣớc m không cần quan tâm đến các giao dịch trong cơ sở dữ liệu. Tính chất apriori đƣợc áp dụng trong giai đoạn n y để tỉa bớt các ứng vi n. Các ứng vi n k-itemset đƣợc sinh ra bằng cách kết hợp các tập phổ biến thuộc (k-1)-itemset v loại bỏ các ứng vi n có chứa tập con không phải l tập phổ biến. Cách l m n y dẫn đến một lƣợng ít hơn nhiều các tập ứng vi n cần tính độ phổ biến v đây chính l cách tỉa ứng vi n của thuật toán Apriori.

Qui ƣớc: Giả sử các item trong mỗi giao dịch đƣợc lƣu giữ theo thứ tự từ điển, nghĩa l A phải đứng trƣớc B, B phải đứng trƣớc C, v.v.

Bảng 2.1. Tập các ký hiệu dùng trong thuật toán Apriori

Ký hiệu Ý nghĩa

Lk Tập các tập k-itemset phổ biến. Mỗi phần tử của tập n y có hai trƣờng:

- Itemset.

- Độ phổ biến tƣơng ứng.

Ck Tập các tập ứng vi n có k-itemset (đƣợc gọi l tập các mẫu phổ biến tiềm năng). Mỗi phần tử của tập n y có hai trƣờng:

- Itemset.

- Độ phổ biến tƣơng ứng.

b) Thuật toán

Gồm 2 bƣớc: Bƣớc kết hợp v bƣớc tỉa các ứng vi n. Bƣớc kết hợp:

Bƣớc n y nhằm tìm tập Lk bằng việc kết hợp các tập phổ biến trong Lk-1 với nhau. Kết quả l tập các ứng vi n Ck. Hai tập phổ biến l1 và l2 thuộc Lk-1 sẽ đƣợc kết hợp với nhau nếu chúng thỏa đều kiện sau:

]) 1 [ ] 1 [ ( ]) 2 [ ] 2 [ ( ... ]) 2 [ ] 2 [ ( ]) 1 [ ] 1 [ (l1 l2  l1 l2   l1 k l2 k  l1k l2 k (2.1) Kết quả sẽ l itemset: ] 1 [ ] 1 [ ] 2 [ ]... 2 [ ] 1 [ 1 1 1 2 1 l l kl kl kl (2.2) Bƣớc tỉa:

Ta có Ck l tập chứa Lk, nghĩa l thuật toán cần lọc các tập từ Ck để tạo ra Lk. Bƣớc n y sẽ loại bỏ các itemset c  Ck nếu c tồn tại tập con (k-1)-itemset không có trong Lk-1.

Hình 2.1 trình b y m giả của thuật toán Apriori: L1 chứa các 1-itemset thỏa minSupCount (dòng 1), từ dòng 2 đến dòng 6 l quá trình lặp đi lặp lại của việc sinh ứng vi n v đếm độ phổ biến của các ứng vi n bằng cách xét chúng với các giao dịch trong CSDL. Việc sinh ứng vi n (h m Apriori-gen) sử dụng tính chất

apriori để tỉa các ứng vi n (dòng 14 – 15), việc sinh các ứng vi n từ l1 và l2 phải thỏa m n l1 và l2 có cùng tiền tố l (k-2)-itemset (dòng 12 – 13).

Đầu vào: Cơ sở dữ liệu giao dịch D v ngƣỡng độ phổ biến minSupCount.

Kết quả: FI chứa danh sách các tập phổ biến trong D thỏa minSupCount.

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

Hình 2.1 – Thuật toán Apriori [B7]

c) Ví dụ minh họa

Xét CSDL mẫu ở bảng 1.1, tất cả các tập phổ biến có độ phổ biến thỏa minSupCount = 3 (50% số giao dịch) nhƣ sau:

1. L1 = { jI: (j)  minSupCount} 2. for (k = 2; Lk-1; k++) do 3. Ck = Apriori_gen(Lk-1) 4. for each tD do 5. for each ckCk do 6. if ckt then ck.count++ 7. Lk = {ckCk| ck.count  minSupCount} 8. FI = kLk Apriori_gen(Lk-1) 9. Ck =  10.for each l1Lk-1 do 11. for each l2Lk-1 do 12. if (l1[1]=l2[1])(l1[2]=l2[2])...(l1[k-2]=l2[k-2])(l1[k- 1]<l2[k-1]) then 13. c = l1l2 //bước kết hợp l1 và l2 sinh ra ứng viên c

14. if Has_infrequent_subset(c, Lk-1) = False then 15. Add c into Ck

16. return Ck

Has_infrequent_subset(c, Lk-1) 17. for each (k-1)-itemset sc do 18. if sLk-1 then

19. return True 20. return False (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 2.2. Kết quả chạy từng bƣớc của thuật toán Apriori

CSDL L1

TID Nội dung Item 

1 A, C, T, W D 4 2 C, D, W W 5 3 A, C, T, W A 4 4 A, C, D, W C 6 5 A, C, D, T, W T 4 6 C, D, T C2 L2 Itemset  Itemset  AC 4 AC 4 AD 2 AT 3 AT 3 AW 4 AW 4 CD 4 CD 4 CT 4 CT 4 CW 5 CW 5 DW 3 DT 2 TW 3 DW 3 TW 3 C3 L3 Itemset  Itemset  ACT 3 ACT 3 ACW 4 ACW 4 ATW 3 ATW 3 CDW 3 CDW 3 CTW 3 CTW 3

CDT không tồn tại trong C3 vì DT không l tập phổ biến.

C4 L4

Itemset  Itemset 

Từ L3, chỉ có ACT v ACW có cùng tiền tố (l AC) n n kết hợp đƣợc với nhau tạo th nh ACTW. Xét ACTW, tất cả các tập phổ biến con của ACTW có 3-itemset đều phổ biến. Vì vậy, ACTW l một ứng vi n cần tính độ phổ biến. Cuối cùng, do L4

chỉ có 1 tập phổ biến n n C5 = L5 = , thuật toán dừng.

Ta có danh sách các tập phổ biến đƣợc trình b y trong bảng 2.3.

Bảng 2.3. Danh sách các tập phổ biến với minSupCount = 3 STT Tập phổ biến  1 D 4 2 T 4 3 A 4 4 W 5 5 C 6 6 DW 3 7 CD 4 8 AT 3 9 TW 3 10 CT 4 11 AW 4 12 AC 4 13 CW 5 14 CDW 3 15 ATW 3 16 ACT 3 17 CTW 3 18 ACW 4 19 ACTW 3

d) Hạn chế của thuật toán Apriori

- Chi phí lớn cho việc phát sinh các tập ứng vi n. Ví dụ: Nếu có 104 item phổ biến thì thuật toán Apriori sẽ cần sinh ra hơn 107 các ứng vi n 2-itemset.

- Lặp lại nhiều lần duyệt CSDL: Số lần duyệt CSDL của thuật toán Apriori bằng độ d i của mẫu phổ biến d i nhất tìm đƣợc. Thuật toán Apriori chỉ thích hợp cho các CSDL thƣa1, đối với các CSDL đặc2 thì thuật toán thực hiện kém hiệu quả.

2.1.2.2 Thuật toán Eclat và dEclat a) Kết nối Galois [B97]

Cho CSDL D với quan hệ nhị phân   I T. Với XIYT, gọi P(X) l tập hợp chứa tất cả các tập con của X, hai ánh xạ it giữa P(I) và P(T) đƣợc định nghĩa nhƣ sau:

i) t:P(I)P(T), t(X)yT |xX,xy (2.3) ii) i:P(T)P(I), i(Y)xI|yY,xy (2.4) Kết nối Galois thỏa các tính chất sau [B97]:

Cho X,X1,X2P(I) và Y,Y1,Y2P(T), ta có: i) X1X2t(X1)t(X2)

ii) Y1Y2i(Y1)i(Y2) iii)Xi(t(X)) vàYt(i(Y))

Hình 2.2 minh họa hai ánh xạ n y trong đó ánh xạ t(X) l tập tất cả các giao dịch có chứa itemset X (hay còn gọi l Tidset của X) và i(Y) l tập tất cả các item có trong tất cả các giao dịch Y. Kí hiệu itemset X v tập các giao dịch tƣơng ứng với nó t(X) là Xt(X) v đƣợc gọi l IT-pair. Tƣơng tự đối với tập giao dịch Yi(Y) là Yi(Y).

Hình 2.2 – Kết nối Galois [B97] Ví dụ: Xét CSDL trong bảng 1.1, ta có: 1345 12345 123456 1345 ) ( ) ( ) ( ) (ACWt At Ct W     t

CW ACDTW ACTW CDW i i i i(235) (2) (3) (5)   

b) Cấu trúc IT-tree (Itemset Tidset – tree) và các lớp tương đương [B96]

Cho I l tập các item v XI, ta định nghĩa một h m p(X, k) chứa k phần tử đầu của X v một quan hệ tƣơng đƣơng dựa v o tiền tố K tr n itemset nhƣ sau:

) , ( ) , ( , ,Y I X Y p X k p Y k X k    

  . Nghĩa l , hai itemset thuộc cùng một lớp tƣơng đƣơng khi v chỉ khi chúng chia sẻ chung k phần tử đầu phổ biến. Nhƣ trình b y trong hình 2.3, mỗi nút trong IT-tree đại diện cho một cặp Itemset-Tidset

Xt(X), thực tế l một lớp tiền tố. Tất cả các nút con của nút X thuộc về lớp tƣơng đƣơng của nó bởi vì chúng chia sẻ cùng tiền tố X.

Hình 2.3 – Cây IT-tree v các lớp tƣơng đƣơng [B96]

Lớp tƣơng đƣơng P đƣợc kí hiệu l [P] = {l1, l2,…, ln}, trong đó P l nút cha v mỗi (adsbygoogle = window.adsbygoogle || []).push({});

li l một item, đại diện cho nút Plit(Pli). Chẳng hạn, nút gốc của cây tƣơng ứng với [] = {A, C, D, T, W}, nút trái cùng của nút gốc l lớp [A] chứa tất cả các itemset chứa A l tiền tố, nghĩa l tập {C, D, T, W}. Việc tạo ra các nút con của

123456

A1345 C123456 D2456 T1356 W12345

AC1345 AD45 AT135 AW1345 CD2456 CT1356 CW12345 DT56 DW245 TW135

ACD45 ACT135 ACW1345 ADT45 ADW45 ATW135 CDT56 CDW245 CTW135 DTW5

ACDT5 ACDW45 ACTW135 ADTW45 CDTW56

một nút Plit(Pli) trong một lớp tƣơng đƣơng đƣợc thực hiện đơn giản bằng cách kết hợp Plit(Pli) với các nút đứng sau nó tr n cùng một lớp tƣơng đƣơng. Quá trình n y sẽ đƣợc tiếp tục thực hiện đệ qui đối với các lớp tƣơng đƣơng mới cho đến khi không còn lớp tƣơng đƣơng n o đƣợc tạo ra.

c) Thuật toán Eclat [B96, B98, B103]

Đầu vào: CSDL D v ngƣỡng phổ biến minSupCount.

Kết quả: IT-tree chứa tất cả các tập phổ biến của CSDL. Phương pháp thực hiện:

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

Đầu ti n, thuật toán khởi tạo lớp tƣơng đƣơng rỗng ([]) chứa các nút đơn (nút chứa các 1-itemset) phổ biến (nghĩa l độ phổ biến của 1-itemset tƣơng ứng lớn hơn hay bằng minSupCount hay đơn giản hơn l |t(j)|  minSupCount, dòng 1). Sau đó nó gọi thủ tục ENUMERATE_FREQUENT với đầu v o l lớp tƣơng đƣơng rỗng. Thủ tục ENUMERATE_FREQUENT sẽ xét mỗi nút li  [P] (dòng 3) với các nút

lj  [P] (dòng 5) đứng sau nó, với mỗi cặp (li, lj), thủ tục n y sẽ tính Y = t(lilj) =

Eclat( D, minSupCount) 1. [] = { jt(j): jI(j)  minSupCount} 2. ENUMERATE_FREQUENT([]) ENUMERATE_FREQUENT([P]) 3. for all li [P] do 4. [Pi] = {}

5. for all lj [P], with j > i do 6. X = lilj

7. Y = t( li )  t( lj )

8. if |Y|  minSupCount then 9. [Pi] = [Pi]  {XY }

t(li)t(lj) (dòng 7), nếu |Y|  minSupCount nghĩa l độ phổ biến của lilj thỏa minSupCount thì thêm nút XY v o lớp tƣơng đƣơng [Pi] (đƣợc khởi tạo rỗng ở dòng 4). Sau đó, gọi đệ qui thủ tục ENUMERATE_FREQUENT để sinh ra các lớp tƣơng đƣơng con cho đến khi không còn lớp tƣơng tƣơng n o đƣợc tạo ra (dòng 10).

d) Minh họa thuật toán Eclat

Xét CSDL ở bảng 1.1 với minSupCount = 3, ta có cây tìm kiếm minh họa cho quá trình khai thác tập phổ biến nhƣ trong hình 2.5.

Hình 2.5 – Cây tìm kiếm tập FI thỏa ngƣỡng minSupCount = 3

Xét nút li = A1345 và lj = C123456, hai nút n y sẽ tạo ra nút mới l AC1345 (Y=1345), do |Y|  3 n n AC l tập phổ biến v nút AC1345 sẽ đƣợc th m v o lớp tƣơng đƣơng [A]. Tƣơng tự, xét A với D, do |t(A)  t(D)| = |45| = 2 < minSupCount n n AD không l tập phổ biến. Sau khi tạo ra lớp tƣơng đƣơng [A] với các nút {AC1345, AT135, AW1345}, thuật toán gọi đệ qui thủ tục

ENUMERATE_FREQUENT với đầu v o l [A]. Thuật toán tiếp tục xét mỗi nút

123456

A1345 C123456 D2456 T1356 W12345

AC1345 AT135 AW1345 CD2456 CT1356 CW12345 DW245 TW135

ACT135 ACW1345 ATW135 CDW245 CTW135

trong [A] với các nút đứng sau nó để hình th nh n n các lớp tƣơng đƣơng mới nhƣ [AC], [AT], v.v.

e) Nhận xét

Cây tìm kiếm IT-tree luôn lệch trái do: (adsbygoogle = window.adsbygoogle || []).push({});

i) Ứng với mỗi lớp tƣơng đƣơng li ta cần xét với mọi lj (j > i) cho n n i c ng nhỏ thì số lƣợng j cần xét c ng lớn.

ii) Khi |t(li)| > |t(lj)| thì phần giao nhau giữa t(li) với các phần tử của các lớp tƣơng đƣơng khác thƣờng sẽ lớn hơn phần giao của t(lj) với các lớp tƣơng đƣơng còn lại. Với các nhận xét tr n, ta thấy i) không thể cải thiện; để cải tiến ii) ta chỉ cần sắp xếp các li trong lớp tƣơng đƣơng [P] theo chiều tăng dần của độ phổ biến v với sự cải tiến n y, IT-tree sẽ ít lệch trái hơn. Ta có thuật toán cải tiến nhƣ trong hình 2.6 (các tham số đầu v o, đầu ra nhƣ trong thuật toán ở hình 2.4).

Hình 2.6 – Thuật toán khai thác FI có sắp xếp

Hình 2.7 minh họa cây tìm kiếm IT-tree sử dụng phƣơng pháp sắp xếp. Có thể thấy cây ít lệch trái hơn (so với trong hình 2.5) v số itemset phát sinh không thỏa ngƣỡng minSupCount cũng ít hơn (2 trong trƣờng hợp có sắp xếp v 3 trong trƣờng

Eclat_SORT(D, minSupCount) 1. [] = { jt(j): jI(j)  minSupCount} 2. ENUMERATE_FREQUENT_SORT([]) ENUMERATE_FREQUENT_SORT([P]) 1. SORT_SUPPORT([P]) 2. for all li [P] do 3. [Pi] = 

4. for all lj [P], with j > i do 5. X = lilj

6. Y = t( li )  t( lj )

7. if |Y|  minSupCount then 8. [Pi] = [Pi]  {XY }

hợp không sắp xếp). Điều n y dẫn đến thời gian tính toán sẽ giảm v quá trình tìm kiếm ít tốn không gian bộ nhớ hơn (do cơ chế đệ qui cần phải lƣu lại các nhánh con b n phải để xử lý về sau trƣớc khi gọi đệ qui). Tuy nhi n, có thể thấy các nút con sinh ra tr n cùng một mức của một nút cha n o đó thƣờng đ thỏa điều kiện sắp tăng theo độ phổ biến n n ta chỉ cần sắp xếp ở mức 1 của cây, các mức còn lại không cần sắp xếp bởi vì chúng sẽ thừa hƣởng kết quả từ mức trƣớc đó (đây chỉ l một heuristic, mục đích để không cần sắp xếp ở mỗi lần gọi đệ qui).

Hình 2.7 – Cây tìm kiếm tập FI thỏa ngƣỡng minSupCount = 3 có sắp xếp

f) Diffset để tính nhanh độ phổ biến [B96, B98]

Giả sử chúng ta đang thao tác tr n IT-tree sử dụng định dạng dữ liệu dọc. Các thuật toán khai thác dữ liệu sử dụng định dạng dọc cho thấy rất hiệu quả v thực thi tốt hơn cách tiếp cận theo định dạng ngang [B98]. Lợi ích chính của việc sử dụng định dạng dọc l :

i) Tính toán độ phổ biến đơn giản v nhanh hơn. Chỉ cần tính phần giao giữa các Tidset v đƣợc hỗ trợ tốt bởi các CSDL hiện h nh.

ii) Nó tự động tỉa các thông tin không li n quan, chỉ có các định danh giao dịch (tid) có li n quan với tần số xác định đƣợc giữ lại sau mỗi lần giao. Đối với những

123456

A1345 D2456 T1356 W12345 C123456

AT135 AW1345 AC1345 DW245 DC2456 TW135 TC1356 WC12345

ATW135 ATC135 AWC1345 DWC245 TWC135

CSDL chứa nhiều giao dịch, phƣơng pháp dọc l m giảm đáng kể số lần I/O tr n CSDL (thƣờng chỉ tốn một lần I/O).

Mặc dù có nhiều ƣu điểm trong phƣơng pháp khai thác dựa tr n định dạng dữ liệu dọc, nhƣng khi số lƣợng phần tử của mỗi Tidset lớn (mỗi itemset chứa trong nhiều giao dịch), phƣơng pháp n y chịu tổn thất do thời gian tính phần giao quá lớn. Hơn nữa, kích thƣớc của các Tidset đƣợc sinh ra tức thời cũng rất lớn, đòi hỏi dữ liệu phải đƣợc lƣu trữ lớn. Tr n các CSDL đặc, với đặc điểm l có nhiều item với tần số xuất hiện cao, các ƣu điểm của phƣơng pháp dọc giảm đáng kể. Chính vì vậy, Zaki và Gouda đ đƣa ra cách biểu diễn dữ liệu dọc có t n l Diffset [B98]. Diffset lƣu vết các sự khác nhau giữa các tid của các mẫu ứng vi n từ mẫu phổ biến cha của nó. Các khác nhau n y sẽ truyền đi theo mọi hƣớng từ một nút đến các con của nó bắt đầu từ gốc. Diffset l m giảm kích thƣớc bộ nhớ y u cầu để lƣu kết quả tức thời. Vì thế, thậm chí khi CSDL đặc, các thuật toán khai thác theo định dạng dữ liệu dọc có thể lƣu trữ ho n to n trong bộ nhớ chính. Vì Diffset l một phần nhỏ của kích

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 25 - 149)