Xây dựng cây UP-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 57 - 59)

Cây UP-tree có cấu trúc giống nhƣ cây TWUI-tree ở trên nhƣng bổ sung thêm một số trƣờng.

Mỗi mục của bảng đầu mục gồm 4 trƣờng: tên mục dữ liệu, lợi ích của một đơn vị mục dữ liệu, số lƣợng mục dữ liệu đó trong toàn bộ cơ sở 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 giảm dần theo độ hỗ trợ của chúng(điều này sẽ tăng khả năng giảm số nút của cây UP-tree hơn là sắp theo TWU).

Nút của cây UP-tree gồm các trƣờng nhƣ nút của cây TWUI-tree và thêm mảng lƣu số lƣợng các mục dữ liệu trên đƣờng đi từ nút đó đến nút gốc của cây.

Thuật toán cần duyệt cơ sở dữ liệu hai lần. Lần duyệt thứ nhất, thuật toán tính lợi ích các giao tác, số lần xuất hiện(độ hỗ trợ), tổng số lƣợng, lợi ích theo giao tác TWU của từng mục dữ liệu. Tiếp theo, thuật toán loại bỏ các mục dữ liệu có lợi ích TWU thấp, các mục còn lại sắp xếp giảm dần theo độ hỗ trợ của chúng và xây dựng bảng đầu mục của cây.

Lần duyệt thứ hai, mỗi giao tác chỉ lấy ra các mục dữ liệu lợi ích TWU cao(có mặt trong bảng đầu mục), sắp xếp các mục này theo trật tự giảm dần của độ hỗ trợ và lƣu lên cây.

Luận văn đề xuất phƣơng pháp lƣu số lƣợng các mục dữ liệu trong giao tác vào nút của cây nhƣ sau:

Xét giao tác là T=(A1:s1, A2:s2,…,Aj:sj,…,Ak:sk) với lợi ích tu(T), ở đó cặp Aj:sj biểu diễn tên mục dữ liệu và số lƣợng của mục đó trong giao tác. Giả sử ta đã lƣu (j-1) mục đầu lên cây, bây giờ xét mục Aj tại nút N. Nút N có nhãn Aj, đƣờng đi từ nút N lên nút gốc là Aj, Aj-1, …,A1. Nút N có trƣờng twu và mảng số lƣợng các mục dữ liệu tƣơng ứng với các mục dữ liệu trên đƣờng đi từ nút N lên nút gốc

Nếu N là nút đã có của cây với mảng số lƣợng là [rj, rj-1,…, r1], thay đổi tại nút N nhƣ sau: N.twu:=N.twu+tu(T), cộng tƣơng ứng dãy số sj, sj-1,…, s1 vào mảng [rj, rj-1,…, r1] và nhận đƣợc mảng [rj+sj, rj-1+sj-1,…,r1+s1] (hình 3.10a và 3.10b).

Nếu N là nút mới đƣợc tạo ra, ta thiết đặt tại nút N nhƣ sau: N.twu:=tu(T), mảng số lƣợng các mục là [sj, sj-1,…,s1] (hình 3.11). 1 1 : w , ,..., j j j A t u r rr     Hình 2.10a: Nút N 1 1 1 1 : w ( ) , ,..., j j j j j A t u tu T r s rsr s        

Hình 2.10b: Nút N sau khi điều chỉnh

1 1 : ( ) , ,..., j j j A tu T s ss     Hình 2.11: Nút N mới tạo.

Chú ý: xét nút N trong hình 2.10a, rj là số lƣợng mục dữ liệu Aj, tức là phần tử đầu tiên của mảng số lƣợng tại một nút là số lƣợng của mục dữ liệu mà nút đó biểu diễn. Từ cách xây dựng cây UP-tree nhƣ trên, nếu đƣờng đi từ một nút N(hình 2.10a) lên nút gốc của cây là Aj, Aj-1,…,A1 thì xác định một mẫu X=(Aj:rj,Aj-1:rj-

Từ cách lƣu số lƣợng các mục dữ liệu trong giao tác vào các nút của cây nhƣ trên, luận văn đề xuất thuật toán xây dựng cây UP-tree nhƣ sau:

Thuật toán 2.4.1 (xây dựng cây UP-tree).

Input: Cơ sở dữ liệu giao tác DB, hàm lợi ích, ngƣỡng lợi ích minutil.

Output: Cây UP-tree chứa các giao tác của DB để khai phá lợi ích cao.

Method: Cây UP-tree xây dựng nhƣ sau: 1. Duyệt cơ sở dữ liệu lần thứ nhất:

1.1.Tính lợi ích các giao tác, số lần xuất hiện, tổng số lƣợng, lợi ích TWU của từng mục dữ liệu.

1.2.Chọn ra tập U các mục dữ liệu có lợi ích TWU cao, sắp xếp tập U theo thứ tự giảm dần của độ hỗ trợ đƣợc danh sách Ulist và xây dựng bảng đầu mục của cây.

2. Tạo cây:

2.1.Tạo nút gốc R của cây.

2.2.Duyệt cơ sở dữ liệu lần thứ 2, với mỗi giao tác T trong DB, chọn ra các mục dữ liệu có lợi ích TWU cao, sắp các mục này theo thứ tự của Ulist. Giả sử danh sách đã sắp của T là ([xL]), ở đó x là mục dữ liệu đầu và L là phần còn lại của danh sách, gọi hàm insert_tree([xL],R).

Hàm insert_tree([xL],R) thực hiện giồng nhƣ trong thuật toán COUI- Mine1 nhƣng thêm nhiệm vụ lƣu số lƣợng các mục dữ liệu trong giao tác vào các nút của cây nhƣ đã trình bày ở trên.

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 57 - 59)