Thủ tục Has_Infrequent_Subset

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Một số phương pháp khai phá dữ liệu sinh luật kết hợp Luận văn ThS Công nghệ thông tin 1.01.10 (Trang 35 - 37)

Input:c - ứng cử k-mục. Tập các tập mục phổ biến Lk-1.

Output:true nếu trong c tồn tại ít nhất 1 subset không phổ biến, false nếu ngược lại.

Thực hiện: Has_Infrequent_Subset(c, Lk-1)

(1) S = {s | s is subset of c & length(s) = k-1}; // S: tập các tập (k-1)-mục là con của c. (2) Foreach (s in S) {

(3) If (s not in Lk-1) (4) Return true; (5) }

(6) Return false;

3.1.3. Nâng cao hiệu quả của thuật toán Apriori

Phần này nêu một số phương pháp cải tiến, biến đổi thuật toán Apriori nhằm nâng cao hiệu quả của thuật toán.

3.1.3.1. Sử dụng kỹ thuật băm

Bước tỉa (dòng (6) của thủ tục Apriori_Gen) đòi hỏi kiểm tra tất cả các tập con (k-1)- mục của tập k-mục ứng cử có phải là tập phổ biến không, tức là có mặt trong Lk-1 không. Để có thể kiểm tra nhanh chóng, ta lưu Lk-1 vào bảng băm (Hash table).

Bước tìm các ứng cử (dòng (5) của thuật toán Apriori) yêu cầu tìm tất cả các ứng cử c

được chứa trong giao dịch t khi biết tập các ứng cử Ck. Một giải pháp hiệu quả được đề xuất đó là sử dụng một cấu trúc dữ liệu đặc biệt là cây băm (Hash tree) để lưu tập các ứng cử Ck.

Cây băm là cây có thứ tự có cấu trúc như sau[101]: + Gốc của cây có độ sâu là 1.

+ Nút trong: Chứa một bảng băm với B cụm (bucket), mỗi cụm có giá trị định danh thuộc đoạn [0, B-1]. Mỗi cụm lại trỏ tới một nút khác. Nút trong ở độ sâu d trỏ tới các nút con ở độ sâu d+1. Trên các cung đi từ nút cha tới nút con được gán nhãn tương ứng với định danh của cụm.

+ Nút lá: là một danh sách chứa các tập k-mục được thuộc Ck. Xây dựng cây băm[101]:

+ Khi thêm một tập mục c, chúng ta bắt đầu đi từ gốc cây cho đến khi gặp nút lá. Tại một nút trong ở độ sâu d, chúng ta quyết định đi theo nhánh nào bằng cách áp dụng hàm băm cho mục thứ d của tập mục c. Ban đầu tất cả các nút được tạo ra là lá. Khi số lượng tập mục trong mỗi lá vượt quá ngưỡng nào đó thì ta chuyển lá thành nút trong.

+ v là một lá của cây băm ở độ sâu d.

+ b0, b1, ..., bd-1 là các nhãn bắt gặp trên cung của đường đi từ gốc T đến v. + Cv Ck là tập con của tập ứng cử lưu trong lá v.

Khi đó Cv = {XCk: h(X[i]) = bi, 0i<d} với X[i] là mục thứ i của tập mục X. Ví dụ: Ta xây dựng cây băm sau với các mục là các số nguyên. Trong đó:

+ Số bucket tại 1 nút trong: B = 3. + Hàm băm: h(w) = w mod 3.

+ Số phần tử tối đa tại nút lá Max = 3.

+ Tập mục ứng cử Ck = C3 = {{1,2,3}, {1,2,4}, {1,2,5}, {1,3,4}, {1,3,5}, {1,4,5}, {2,3,4}, {3,4,5}}.

Hình 3.2: Minh hoạ cây băm (Hash tree).

Tính độ hỗ trợ của các tập mục ứng cử với giao dịch t:

+ Bắt đầu từ nút gốc, chọn mục đầu tiên của t, và thực hiện băm với mục này. Giá trị của hàm băm cho biết nút đến ở bước tiếp theo.

+ Nếu ta đang ở nút lá ta tìm tập mục trong lá đó chứa trong t và thực hiện tăng số đếm độ hỗ trợ của tập đó lên 1 đơn vị.

+ Nếu ta đang ở nút trong của cây và ta đi tới nó bằng việc băm mục thứ i trong t thì nếu i<|t| thì thực hiện băm trên mục thứ i+1 trong t và thực hiện gọi đệ quy với kết quả băm mục thứ i+1. 0 1 2 0 1 2 Root 1 {3,4,5} {2,3,4} {1,3,4} {1,3,5} {1,2,3} {1,2,4} {1,2,5} {1,4,5} 0 2 C0 C1 C2 1 0 2 C10 C11 C12

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Một số phương pháp khai phá dữ liệu sinh luật kết hợp Luận văn ThS Công nghệ thông tin 1.01.10 (Trang 35 - 37)