TDB cefad ea cef cfad cef d-cond DB (d:2) cefa cfa e-cond DB (e:4) c:3 ea-cond DB (ea:2) c a-cond DB (a:3) cef e cf f-cond DB (f:4) ce:3 c
f_list:{c:4, e:4, f:4, a:3, d:2}
Output F.C.I: cfad:2
Output F.C.I: a:3
Output F.C.I: ae:2
Output F.C.I: cf:4, cef:3
27
Diễn giải thuật toán:
Trong CSDL bảng 2.12 với minsup = 2, sử dụng phương pháp chia để trị trong khai thác các tập phổ biến đóng như trong hình 2.14
1. Tìm hàng mục phổ biến: Duyệt CSDL để tìm tập hợp các hạng mục phổ biến và lập một danh sách hạng mục phổ biến, được gọi là f_list, f_list = {c: 4; e: 4; f: 4; a: 3; d: 2}, trong đó các mục được sắp xếp giảm dần theo độ phổ biến như trong Hình 2.14
2. Kỹ thuật chia để trị: Tất cả các tập đóng phổ biến có thể được chia thành 5 tập con không chồng lên nhau dựa trên f_list:
- Các tập con chứa mục d,
- Các tập con chứa mục a và không chứa mục d, - Các tập con chứa mục f và không chứa mục a và d, - Các tập con chứa mục e và không chứa mục f, a và d - Các tập con chỉ chứa mục c
3. Quá trình tìm các tập con của các tập đóng phổ biến: Các tập con của các tập đóng phổ biến có thể được khai thác bằng cách xây dựng các cơ sở dữ liệu tương ứng và điều kiện đệ quy của chúng.
(a) Tìm các tập đóng phổ biến có chứa d. Chỉ giao tác có chứa d là cần thiết. Cơ sở dữ liệu có điều kiện, được ký hiệu là TDB|d, chứa tất cả các giao tác có d, đó là {cefa, cfa}. Chú ý hạng mục bị loại bỏ trong mỗi giao tác vì nó xuất hiện trong mọi giao tác của cơ sở dữ liệu có điều kiện.
Độ phổ biến của d là 2. Các mục c, f và a xuất hiện hai lần tương ứng trong TDB|d. Có nghĩa là mọi giao tác có chứa d cũng chứa c, f và a. Hơn nữa, e là không phổ biến vì nó chỉ xuất hiện một lần trong TDB|d. Do đó, cfad: 2 là tập phổ biến đóng. Quá trình khai thác của TDB|d kết thúc.
(b) Tìm các tập phổ biến đóng có chứa a không có d. Tương tự, cơ sở dữ liệu có điều kiện, TDB|a = {cef; e; cf}. Mục d trong các giao tác như vậy được bỏ qua, vì các tập phổ biến đóng có chứa d đã được tìm thấy trong TDB|d. Vì sup (a) = 3 và không có bất kỳ mục nào xuất hiện trong mọi giao tác của TDB|a, như vậy a: 3 là một mục đóng.
28 Để tìm các mục phổ biến đóng còn lại có chứa a nhưng không d, chúng ta cần phải tiếp tục khai thác TDB|a. Đầu tiên, tập các mục phổ biến trong TDB|a, f_lista = {c: 2; e: 2; f: 2}3. Theo f_lista, các tập phổ biến đóng có chứa a nhưng không d có thể được phân chia thêm thành ba tập con:
(1) Tập con có chứa af nhưng không d,
(2) Tập con có chứa ae nhưng không chứa d hoặc f, (3) Tập con có chứa ac nhưng d, e hoặc f.
Chúng có thể được khai thác bằng cách xây dựng cơ sở dữ liệu có điều kiện đệ quy. Độ phổ biến fa tương đương với cfad, do đó fa và a cũng là một hạng mục phổ biến đóng được tìm thấy. Điều đó có nghĩa là mọi giao tác có chứa fa cũng phải chứa cfad. Do đó, không có mục phổ biến đóng có chứa fa nhưng không có d. Tương tự như vậy, không có mục phổ biến đóng chứa ca không d, e hoặc f, vì ca là một tập con của cfad và sup (ca) = sup (cfad). Cơ sở dữ liệu có điều kiện ea, TDB|e a = {c}, không thể tạo ra bất kỳ mục phổ biến nào. Vì vậy, ea: 2 là tập phổ biến đóng.
(c) Tìm các tập phổ biến đóng chứa f nhưng không có d. TDB|f = {ce: 3; c}, c xuất hiện trong mọi giao tác f-cond, và cf không phải là tập hợp con của bất kỳ tập phổ biến đóng nào có cùng sự phổ biến, do đó cf: 4 là một tập phổ biến đóng. Độ phổ biến của fc bằng với f và c, f và c luôn xuất hiện cùng nhau, do đó không có các tập phổ biến đóng chứa c nhưng không có f. Ngoài ra, cef: 3 không phải là tập hợp con của bất kỳ mục nào được tìm thấy, do đó, nó là một tập phổ biến đóng.
(d) Tìm các phổ biến đóng chứa e nhưng không có f, a và d. Tương tự, TDB|e = {c: 3}. Nhưng ce không phải là một tập đóng vì nó là một tập con của cef và sup(ce) = sup(cef). Tuy nhiên, e: 4 là một tập phổ biến đóng.
(e) Tìm các tập phổ biến đóng chỉ chứa c. Chúng ta biết rằng không có các tập phổ biến đóng chỉ có chứa c nhưng không có f, do đó không có các tập phổ biến đóng chỉ chứa c.
4. Tóm lại, tập hợp các tập phổ biến đóng được tìm thấy là {acdf: 2, a: 3, ae: 2, cf: 4, cef: 3, e: 4}
Đánh giá: Mặc dù CLOSET sử dụng một số kỹ thuật tối ưu hóa để nâng cao hiệu quả
hoạt động khai thác, hiệu quả của nó vẫn chưa cao trong bộ dữ liệu thưa thớt hoặc khi ngưỡng phổ biến thấp.
29
2.3.4. Thuật toán BitTableFI
Thuật toán BitTableFI [10] sử dụng kỹ thuật nén tập dữ liệu dựa trên cấu trúc BitTable. Theo cách nén này, dữ liệu được bố trí dưới dạng dãy các bit, mỗi một tập mục sẽ chiếm |T| bit. Vì vậy, mỗi tập mục sẽ chiếm |T|/8 + 1 byte. Khi tạo ra một tập mục mới XY từ hai tập mục X và Y, Bitlist của XY sẽ được tính dựa trên Bitlist của các tập mục có trong XY bằng cách lấy phần giao giữa các byte có trong các Bitlist. Do lực lượng của hai vectơ bit là bằng nhau nên kết quả sẽ cho ra một vectơ bit (Bitlist) có chiều dài là |T|/8 + 1 byte. Thuật toán khai thác tập phổ biến theo cấu trúc này được các tác giả tiếp cận dựa vào nguyên lý Apriori [3]. Điểm khác biệt chính là cách tính độ phổ biến: thuật toán Apriori tính độ phổ biến bằng cách quét lại CSDL, còn BitTableFI chỉ cần tính phần giao trên các vectơ bit. Độ phổ biến của hạng mụcset kết quả có thể được tính nhanh dựa vào số bit 1 có trong vectơ bit. Thuật toán Index- BitTableFI được nhóm tác giả Wei-Song đề xuất để cải tiến BitTableFI. Các tác giả dựa vào khái niệm subsume để gộp các tập mục. Cách gộp như sau: đầu tiên, sắp xếp các tập mục tăng theo độ phổ biến, xét mỗi tập mục i với các tập mục đứng sau nó (theo thứ tự đã sắp xếp), nếu Bitlist i là con của Bitlist j thì j thuộc về tập subsume của i. Việc tạo ra subsume và khai thác tập phổ biến dựa trên subsume cải tiến đáng kể thời gian khai thác tập phổ biến.
2.3.5. Thuật toán PIETM
Một thuật toán khai thác tập phổ biến dựa trên nguyên lý Bao gồm - Loại trừ và ánh xạ giao tác. Kiến trúc cơ bản của thuật toán PIETM [16] tuân theo chiến lược khai thác của Apriori [3]. Không quét cơ sở dữ liệu để đếm độ phổ biến của các tập mục, PIETM xây dựng một cấu trúc cây, lưu đầy đủ thông tin cho việc khai thác các tập phổ biến. Nguyên tắc bao gồm – Loại trừ được sử dụng để tích hợp cấu trúc cây với chiến lược từ dưới lên. Mặc dù PIETM kết hợp chiến lược khai thác của Apriori và cấu trúc cây FP-Growth [4], PIETM đã loại bỏ điểm yếu của hai thuật toán bằng cách kết hợp các tính năng chính của Apriori, FP-Growth và PIETM như hình
30
Thuật toán PIETM Input:
Output:
1: Tree=Build_Tree(DB, minsup) 2: mapTransaction_Intervals(Tree) 3: for (k=2; Ck!=0; k++) do
4: Generate candidate k-itemsets into Ck by joining Fk-1* Fk-1 using Apriori 5: for each itemset ck Ck do
6: Sup(Union(ck)=Union_Intervals(ck)
7: Gather the sizes of all ck’s sub-intersection terms 8: Compute sup(ck) using (1)
9: if sup(ck)>=minsup then
10: Fk=Fkck
11: end 12: F=FFk 13.end