Khai phá cây TWUI-tree

Một phần của tài liệu khai phá tập mục thường xuyên lợi ích cao trong cơ sở dữ liệu (Trang 42 - 51)

Xét lần lƣợt các mục dữ liệu từ dƣới lên trong bảng đầu mục của cây TWUI-tree, với mỗi mục dữ liệu này, xây dựng một cấu trúc dữ liệu gọi là cây COUI-tree(Co-Occurrence Utility Items tree). Cây COUI-tree của mục dữ liệu x chứa x và các mục dữ liệu có lợi ích TWU lớn hơn hoắc bằng lợi ích TWU của x, cùng xuất hiện với x trong ít nhất một giao tác của cơ sở dữ liệu. Khai phá cây COUI-tree tìm đƣợc các mẫu(tập mục) có lợi ích TWU cao, khai phá xong, loại bỏ cây này và xây dựng cây COUI-tree cho mục dữ liệu tiếp theo.

Định nghĩa 2.2: (Cây COUI-tree) Cây COUI-tree của mục dữ liệu x là một cấu trúc cây tiền tố (prefix-tree) đƣợc định nghĩa nhƣ sau:

(1)Cây bao gồm một nút gốc có nhãn là x, tập các cây con của nút gốc và bảng đầu mục.

(2)Mỗi nút của cây gồm ba trƣờng: tên mục dữ liệu, giá trị twu của mục dữ liệu và con trỏ(trỏ đến nút tiếp theo cùng nhãn trên cây hoặc là null nếu không có)

(3)Mỗi mục của bảng đầu mục gồm ba trƣờng: tên mục dữ liệu, lợi ích theo giao tác TWU của mục dữ liệu và con trỏ(trỏ đến nút đầu tiên biểu diễn mục dữ liệu này trên cây). Các mục dữ liệu trong bảng đầu mục sắp xếp theo thứ tự tăng dần của trƣờng twu của nó.

Chú ý: Cây COUI-tree có cấu trúc giống cây TWUI-tree, một số khác biệt là: - Mỗi mục của bảng đầu mục của cây COUI-tree có thêm trƣờng TWU lƣu lợi

ích TWU của mục dữ liệu tại cây COUI-tree.

- Các mục dữ liệu trong bảng đầu mục của cây COUI-tree sắp xếp theo thứ tự ngƣợc lại với thứ tự trong bảng đầu mục của cây TWUI-tree.

Quá trình xây dựng cây COUI-tree giống nhƣ xây dựng cây TWUI-tree. Minh họa thuật toán qua khai phá cây TWUI-tree hình 2.3. Khai phá cây TWUI-tree hình 2.3 cần xây dựng 3 cây COUI-tree cho các mục dữ liệu C, D và B. Gọi 3 cây đó lần lƣợt là C-COUI-tree, D-COUI-tree và B-COUI-tree. Không cần xây dựng cây E-COUI-tree cho mục E vì cây này chỉ có một nút gốc là E.

Xét mục dữ liệu đầu tiên C, từ con trỏ trên bảng đầu mục của cây TWUI- tree tìm thấy 3 nút trên cây có nhãn C, dƣờng đi từ các nút này lên nút gốc xác định 3 mẫu là: CBE với twu(CBE)=72, CE với twu(CE) =41 và CDE với twu(CDE)=48.

Lƣu các mẫu này lên cây C-COUI-tree giống nhƣ chèn các giao tác vào cây TWUI- tree với chú ý là cây C-COUI-tree có nút gốc nhãn C và phải điều chỉnh trƣờng twu của bảng đầu mục cho phù hợp. Hình 2.6 biểu diễn cây C-COUI-tree sau khi xây dựng xong.

Thực hiện tƣơng tự với mục dữ liệu D và B, Xây dựng đƣợc các cây D- COUI-tree và B-COUI-tree(hình 2.7 và 2.8) .

Hình 2.5: Cây C-COUI-tree sau khi lƣu mẫu CBE và CE.

Hình 2.7: Cây D-COUI-tree.

Hình 2.8: Cây B-COUI-tree.

Cây C-COUI-tree chứa các mục dữ liệu cùng xuất hiện với C trong ít nhất một giao tác. Cây D-COUI-tree chứa các mục dữ liệu cùng xuất hiện với D nhƣng không chứa C. Cây B-COUI-tree chứa các mục dữ liệu cùng xuất hiện với B nhƣng không chứa C và D. Các cây này không xây dựng đồng thời mà lần lƣợt, tại một thời điểm chỉ xây dựng một cây, sau khi khai phá xong, thuật toán loại bỏ nó và xây dựng cây tiếp theo.

Khai phá cây D-COUI-tree tìm đƣợc các mẫu có chứa mục D. Đầu tiên ta kết nạp mục dữ liệu D vào tập các mẫu ứng viên CP(Candidate Patterns), CP={D:241}. Tiếp đến, tỉa các mục dữ liệu có lợi ích TWU thấp (giá trị cục bộ tại cây D-COUI-tree): xét lần lƣợt các mục dữ liệu trong bảng đầu mục từ dƣới lên, bắt đầu từ mục E, cuối cùng đến mục B, không có mục nào có lợi ích TWU thấp, do đó không có mục nào bị tỉa. Lƣu ý là nếu có mục dữ liệu có lợi ích TWU thấp thì các mẫu chứa nó không thể là tập mục lợi ích cao, vì vậy cần tỉa mục này trên bảng đầu mục và các nút tƣơng ứng trên cây.

Từ con trỏ của mục E trên bảng đầu mục tìm đƣợc 2 nút trên cây có nhãn E. Đƣờng đi từ nút E thứ nhất lên nút gốc xác định mẫu EBD với twu =182. Kết hợp mẫu này và các mẫu con có chứa D của nó vào tập các ứng viên CP, nhận đƣợc CP={D:241, EBD:182, ED:182, BD:182}. Trƣờng twu của các nút nhãn E, B và D trên đƣờng đi này giảm đi 182(bƣớc 1).

Hình 2.9: Các bƣớc khai phá trên cây D-COUI-tree.

Đƣờng đi từ nút E thứ hai lên gốc xác định mẫu ED với twu=59. Kết nạp mẫu này vào tập CP. Trong tập CP đã có mẫu ED:182 nên ta điều chỉnh mẫu này thành ED:241 và nhận đƣợc CP={D:241, EBD:182, ED:241, BD:182}. Trƣờng twu của các nút nhãn E và D trên đƣờng đi này giảm đi 59(bƣớc 2).

Xét tiếp mục B trên bảng đầu mục, từ con trỏ của mục B trên bảng đầu mục tìm đƣợc 1 nút trên cây có nhãn B, nút này có trƣờng twu=0, do vậy không sinh ra mẫu nào nữa(bƣớc 3). Hình 2.9 minh họa các bƣớc khai phá cây D-COUI-Tree.

Khai phá tƣơng tự các cây COUI-tree còn lại. Kết thúc khai phá cây TWUI- tree hình 2.3, tập các ứng viên CP nhận đƣợc gồm 9 tập mục ứng viên:

CP={C:161, EC:161, D:241, EBD:182, ED:241, BD:182, B:274, EB:274, E:354}. Bƣớc tiếp theo, thuật toán duyệt lại cơ sở dữ liệu lần thứ 3 để tính lợi ích thực sự của 9 tập mục ứng viên này, với mỗi tập mục X  CP, nếu u(X)minutil

thì X là tập mục lợi ích cao và X đƣợc kết nạp vào tập các tập mục lợi ích cao HU. Bảng 2.7 biểu diễn kết quả tính lợi ích của các tập mục ứng viên:

Bảng 2.7: Lợi ích các tập mục ứng viên

TT Tập mục

ứng viên Lợi ích TWU Lợi ích

Tập mục lợi ích cao 1 C 161 48 Không 2 EC 161 83 Không 3 D 241 36 Không 4 EBD 182 182 Có 5 ED 241 56 Không 6 BD 182 172 Có 7 B 274 240 Có 8 EB 274 240 Có 9 E 354 50 Không

Kết thúc quá trình khai phá, thuật toán tìm đƣợc tập các tập mục lợi ích cao HU={EBD(182), BD(172), EB(240), B(240)}.

Sau đây là thuật toán khai phá cây TWUI-tree:

Thuật toán 2.3.2(khai phá cây TWUI-tree).

Input: Cây TWUI-tree, ngƣỡng lợi ích minutil.

Output: Tập CP gồm tất cả các tập mục lợi ích TWU cao.

Method:

1. CP:=; //khởi tạo tập chứa các mẫu ứng viên là rỗng.

2. Xét từ dƣới lên của bảng đầu mục của cây TWUI-tree, biến A nhận mục dữ liệu đầu tiên;

3. repeat

4. Tạo nút gốc của cây (A)-COUI-tree có nhãn A và trƣờng twu bằng 0;

5. for each (nút N trên cây TWUI-tree có nhãn A) // tìm theo con trỏ từ bảng đầu mục

6. begin

7. Xác định mẫu [AL]:twu từ đƣờng đi từ nút N lên gốc của cây;

//mẫu [AL] có A là mục dữ liệu đầu, L là phần còn lại

8. Chèn mẫu [AL]:twu vào cây (A)-COUI-tree; 9. end;

10.Gọi hàm MineCOUI-tree(A);//lưu kết quả khai phá vào tập CP.

11.Xóa cây (A)-COUI-tree;

12.Biến A nhận mục dữ liệu tiếp theo trong bảng dầu mục của cây TWUI-tree; 13.Until (A là mục dữ liệu cuối cùng của bảng đầu mục của cây TWUI-tree);

14.CP:=CP{A}; // Đưa vào CP mục cuối của bảng đầu mục của TWUI-tree);

// Khai phá xong cây TWUI-tree, tập CP chứa các tập mục ứng viên.

15.Return CP;

Function: MineCOUI-tree(A); //hàm thực hiện khai phá cây (A)-COUI-tree.

Method:

1. CP:=CP  {A}; //kết nạp mục A là nhãn của nút gốc vào tập CP.

2. Tỉa cây: duyệt bảng đầu mục của (A)-COUI-tree, tỉa các mục DL có twu<minutil;

//tỉa trên bảng đầu mục và các nút tương ứng trên cây.

3. for each (mục dữ liệu B của bảng đầu mục của cây (A)-COUI-tree)//từ dưới lên.

4. Begin

5. for each (nút N trên cây (A)-COUI-tree có nhãn B) //tìm theo con trỏ ở bảng dầu mục

6. begin

7. Xác định mẫu X:twu từ đường đi từ nút N lên nút gốc của cây;

8. Kết nạp X và các mẫu con của X có chứa A vào tập CP;

9. Giảm trường twu của các nút trên đường đi từ nút N lên nút gốc

của cây;

10. end;

11. End;//hoàn thành khai phá cây (A)-COUI-tree.

12.Return CP;

Thuật toán tìm các tập mục lợi ích cao từ tập các ứng viên CP nhƣ sau:

Thuật toán 2.3.3 (tìm tập các tập mục lợi ích cao HU).

Input: Cơ sở dữ liệu DB, tập các ứng viên CP, hàm lợi ích, ngƣỡng lợi ích minutil.

Output: Tập HU chứa tất cả các tập mục lợi ích cao của cơ sở dữ liệu DB.

1. HU:=;//khởi tạo tập chứa các tập mục lợi ích cao là rỗng.

2. for each (T  DB) //Duyệt lần 3 cơ sở dữ liệu DB.

3. for each X  CP //duyệt các tập mục ứng viên của tập mục CP. 4. if X  T then

5. begin

6. Tính lợi ích của tập mục X trong giao tác T, u(X, T);

7. Điều chỉnh lợi ích của tập mục X, u(X):=u(X)+u(X, T);

8. end;

9. for each X  CP //duyệt các tập mục ứng viên của tập mục CP.

10. if u(X) ≥ minutil then HU:=HU {X};// chọn ra các tập mục lợi ích cao

11.ReturnHU;

Một phần của tài liệu khai phá tập mục thường xuyên lợi ích cao trong cơ sở dữ liệu (Trang 42 - 51)