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

Một phần của tài liệu Một số phương pháp khai phá dữ liệu sinh luật kết hợp (Trang 35)

3. Chương 3: Một số phương pháp KPDL sinh luật kết hợp

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

Bảng 3.6: Thủ tục tính tích luỹ độ hỗ trợ của các ứng cử là tập con của giao dịch t.

Input: Giao dịch t, Nút hiện thời trên cây băm v, Chỉ mục i (giả sử i đánh số từ 0) hiện thời đang xét trong t và các mục trong t được sắp theo chiều tăng dần.

Output: Tích luỹ độ hỗ trợ cho các ứng cử X trên cây băm T.

Thực hiện: Accumulate(t, v, i)

(1) If (v is LeafNode) // Nếu v là nút lá.

(2) Foreach (X in Cv) // Duyệt mọi ứng cử lưu trong lá v. (3) If (Xt)

(4) Count(X)++;

(5) Else If (i<|t|) // Nếu v là nút trong và vẫn còn mục trong t. (6) For (j=i; j<|t|; j++)

(7) If (u is Child(v, h[t[j]])) // Nếu u là con của v theo cạnh có nhãn h[t[j]]. (8) Accumulate(t, u, j);

(9) Return;

Ví dụ: Xét t = {1,2,4,5}, sau thủ tục Accumulate(t, Root, 0) thì các ứng cử X sau lần lượt được tích luỹ biến đếm:

+ {1,2,4}, {1,2,5} qua các nút Root, C1, C12. + {1,4,5} qua các nút Root, C1, C11.

Một phần của tài liệu Một số phương pháp khai phá dữ liệu sinh luật kết hợp (Trang 35)

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

(83 trang)