Các thuật toán theo cấu trúc dàn kết hợp cấu trúc utiity-list [13]

Một phần của tài liệu Đánh giá các thuật toán khai thác tập mục lợi ích cao (Trang 61 - 68)

CƠ SỞ LÝ THUYẾT

CHƯƠNG 3 ĐÁNH GIÁ CÁC THUẬT TOÁN

3.3. Các thuật toán theo cấu trúc dàn kết hợp cấu trúc utiity-list [13]

Các thuật toán này được thực hiện chủ yếu bằng hướng tìm kiếm theo chiều sâu đồng thời mở rộng các item của một itemset. Đây cũng là cấu trúc cây theo lớp tương đương nhưng mỗi lớp được xây dựng tựa tìm kiếm theo chiều sâu. Các hình dưới đây minh họa việc xây dựng cây.

4 Bx123456710

254

Cx2457910 376

Ax39 407

Dx1 527

BCx9 144

BDx{}

254

{}x12345678910

ADx1 349 CDx1

318 Item

Diffset

TWU

BAx9 144

CAx3 308

CADx1 250 BCAx{}

144

BCDx{}

144

BCADx{}

144

BADx{}

144

Hình 3.8: Minh họa cách mở rộng itemset từ các item.

 {a}

{a, b}

{a, b, c} {a, b, d} {a, b, e}

{a, b, c, d} {a, b, d, e}

{a, b, c, d, e}

 {a}

{a, b}

{a, b, c} {a, b, d} {a, b, e}

{a, b, c, d} {a, b, d, e}

{a, c}

...

 {a}

{a, b}

{a, b, c} {a, b, d} {a, b, e}

{a, b, c, d} {a, b, d, e}

{a, c}

{a, d} {a, e}

{b} …

{b, c} …

… … …

{a, b, c, d, e}

Thành phần quan trọng nhất là utility-list chứa các thông tin cần thiết của một itemset. Danh sách đó nhƣ trong bảng 3.3

Bảng 3.3: Một thành phần trong danh sách utility-list Trans. util rutil

T1 38 20

T3 38 30

T2 2 0

Một thành phần trong danh sách utility-list gồm ba cột:

- Cột một là danh sách các giao tác chứa itemset - Cột hai là độ có ích của itemset trong các giao tác đó

- Cột ba là độ có ích còn lại, nghĩa là độ có ích của các item xuất hiện sau itemset trong giao tác đó. Độ có ích còn lại là một khái niệm cải tiến đáng kể trong các thuật toán HUI-Miner và FHM. Nhờ có khái niệm này chúng ta dễ dàng có bổ đề “nếu tổng tất cả độ có ích và độ có ích còn lại trong utility-list của X nhỏ hơn một ngưỡng cho trước thì bất cứ mở rộng X‟ đều không vượt qua ngƣỡng”

Tiếp theo là phép kết giữa hai itemset, phép kết này có độ phức tạp cao

Utility list of {a} Utility list of {d} Utility list of {a, d}

Trans. Util Rutil Trans. Util Rutil Trans. Util Rutil

T0 5 20 T0 6 3 T0 11 3

T2 5 3 join T1 3 5 T2 7 0

T3 10 12 T2 2 0

u({a}) = 20$ u({d}) = 11$ u({a, d}) = 18$

Hình 3.9: Minh họa phép kết

Trong phép kết giữa 2 tập mục, đầu tiên lấy phần giao tác chung xuất hiện trên cột 1, tiếp theo tính độ có ích trong cột 2 (đối với các tập mục không tồn tại tiền

tố thì đơn giản cộng giá trị có ích của hai tập mục, còn các tập mục tồn tại tiền tố thì cộng giá trị 2 tập mục rồi trừ cho phần có ích chung), cuối cùng là tính độ có ích còn lại bằng cách lấy phần nhỏ.

3.3.1. Thuật toán Hui-Miner [13]

Input: P.UL, the utility-list of itemset P, initially empty;

ULs, the set of utility-lists of all P’ 1-extensions;

minutil, the minimum utility threshold.

Output: all the high utility itemsets with P as prefix.

1 foreach utility-list X in Uls do

2 if SUM(X.iutils) ≥ minutil then

3 output the extension associated with X;

4 end

5 if SUM(X.iutils)+SUM(X.rutils) ≥ minutil then

6 exULs = NULL;

7 foreach utility-list Y after X in Uls do 8 exULs= exULs +Construct(P.UL, X, Y );

9 end

10 HUI-Miner(X, exULs, minutil);

11 end

12 end

Hình 3.10: Thuật toán Hui-Miner Thuật toán: Construct

Input: P.UL, the utility-list of itemset P;

Px.UL, the utility-list of itemset Px;

Py.UL, the utility-list of itemset Py.

Output: Pxy.UL, the utility-list of itemset Pxy.

1 Pxy.UL = NULL;

2 foreach element Ex Px.ULdo

3 ifEyPy.Ul and Ex.tid==Ey.tid then 4 if P.UL is not empty then

5 search such element E P.UL that

E.tid ==Ex.tid;

6 Exy =<Ex.tid, Ex.iutil +Ey.iutil -E.iutil,Ey.rutil >;

7 else

8 Exy =<Ex.tid, Ex.iutil +Ey.iutil, Ey.rutil >;

9 end

10 append Exy to Pxy.UL;

11 end

12 end

13 return Pxy.UL;

Hình 3.11: Thủ tục Construct

Để giảm chi phí cho phép kết, thuật toán FHM sử dụng bảng EUCS.

Bảng 3.4: Minh họa bảng EUCS

B C A D

C 144

A 144 308

D 254 318 349

3.3.2. Thuật toán FHM [14]

Input: D: a transaction database, minutil: a user-specified threshold Output: the set of high-utility itemsets

1. Scan D to calculate the TWU of single items;

2. I*  each item I such that twu(i)  minutil;

3. Let be the total order of TWU ascending values on I*;

4. Scan D to built the utility-list of each item i  I* and built the EUCS structure

5. Search (, I*, minutil, EUCS);

Hình 3.12: Thuật toán FHM

Giải thuật trước tiên quét CSDL để tính TWU cho mỗi item. Sau đó, giải thuật nhận ra tập I* của tất cả các item có TWU không nhỏ hơn minutil (các item khác đƣợc bỏ đi vì chúng không phải là thành phần của các tập có lợi ích cao theo tính chất 2.3). Giá trị TWU của các item sau đó đƣợc sử dụng để thiết lập 1 thứ tự toàn phần trên các mục, đây là thứ tự tăng dần của các TWU. Lần quét CSDL thứ hai đƣợc tiến hành. Trong suốt quá trình quét CSDL này, các item trong giao dịch đƣợc sắp xếp lại theo thứ tự toàn phần , danh sách lợi ích của mỗi mục i I* đƣợc xây dựng và cấu trúc đó đƣợc đặt tên là EUCS. Cấu trúc mới này đƣợc định nghĩa nhƣ 1 bộ 3 có dạng (a, b, c)  I* x I* x R. Bộ 3 (a, b, c) chỉ ra rằng twu({a,b}) = c. EUCS có thể đƣợc triển khai nhƣ ma trận 3 chiều đƣợc mô tả trong bảng 3.4 hoặc nhƣ 1 bảng băm với các bộ có dạng (a, b, c) sao cho c 0 đƣợc giữ lại. Sau khi xây dựng EUCS, giải thuật tìm kiếm theo chiều sâu bắt đầu gọi thủ tục đệ quy Search với tập mục rỗng , tập các mục đơn I*, minutil và cấu trúc EUCS.

Input: P: an itemset, ExtensionsOfP: a set of extensions of P, the minutil Threshold, the EUCS structure

Ouput: the set of high-utility itemsets 1. foreach itemset Px ExtensionsOfP do

2. if sum (Px.utilitylist.iutils)  minutil then

3. output Px;

4. end

5. if sum(Px.utilitylist.iutils) + Sum(Px.utilitylist.rutils)  minutil then

6. ExtensionsOfP  

7. foreach itemset Py  ExtensionsOfP such that y x do 8. if (x,y,c)  EUCS such that c  minutil then

9. Pxy Px Py

10. Pxy.utilitylist  construct(P, Px, Py);

11. ExtensionsOfPx ExtensionsOfPx Pxy;

12. end

13. end

14. Search (Px, ExtensionsOfPx, minutil);

15. end

16. end

Hình 3.13: Thủ tục Search Giải thuật thủ tục Search nhận đầu vào là:

(1) Tập mục P,

(2) Mở rộng của P có dạng Pz nghĩa là Pz thu được trước đó bằng việc thêm 1 item z vào P,

(3) Minutil và (4) EUCS.

Thủ tục search thực hiện nhƣ sau: Với mỗi mở rộng Px của P, nếu tổng giá trị iutil của utility-list của Px không nhỏ hơn minutil, thì Px là tập mục lợi ích cao và xuất ra. Nếu tổng của giá trị của Iutil và Rutil trong danh sách lợi ích của Px không nhỏ hơn minutil thì điều đó có nghĩa là mở rộng của Px nên đƣợc khám phá. Điều này đƣợc thực hiện bằng việc gộp Px với tất cả các mở rộng Py của P sao cho y x để tạo nên dạng mở rộng Pxy chứa |Px| +1 mục. Danh sách lợi ích của Pxy đƣợc xây dựng nhƣ giải thuật HUI-Miner bằng việc gọi thủ tục Construct để kết danh sách lợi ích của P, Px và Py. Thủ tục này cũng giống với HUI-Miner [13]. Sau đó, 1 lời gọi đệ quy gọi thủ tục Search để hoàn thành việc tính toán lợi ích của Pxy và khám phá các tập mở rộng của nó. Vì thủ tục Search bắt đầu từ các mục đơn, nó khám phá đệ quy không gian tìm kiếm của các tập mục bằng việc thêm vào các mục đơn và nó chỉ cắt giảm không gian tìm kiếm dựa vào bổ đề 2.1. Nhờ có bảng EUCS nên không gian tìm kiếm giảm đi. Ví dụ: theo bảng 1.1 và 1.2, đối với thuật toán Hui-Miner, không gian tìm kiếm là 10 itemset, trong lúc đó đối với thuật toán FHM, không gian tìm kiếm là 8 itemset..

Một phần của tài liệu Đánh giá các thuật toán khai thác tập mục lợi ích cao (Trang 61 - 68)

Tải bản đầy đủ (PDF)

(83 trang)