Chi tiết thuật toán FUP

Một phần của tài liệu 28042_1712202001920798LVNguyenHoangNhat (Trang 40 - 43)

7. Bố cục luận văn

2.1.2.Chi tiết thuật toán FUP

Bước 1: Tại mỗi lần lặp, độ hỗ trợ của từng itemset trong tập large k-itemset

trong L sẽ được cập nhật dựa vào db để lọc ra những itemset nào là không phổ biến (losers còn gọi là small itemset hay những tập không còn là tập phổ biến trong

DBdb). Ta chỉ cần quét db để tiến hành cập nhật độ hỗ trợ.

từ db cùng với độ độ hỗ trợ. Độ hỗ trợ của các phần tử trong Ck sẽ được cập nhật dựa vào DB để tìm ra tập các tập phổ biến mới.

Bước 3: Tập Ck sẽ được cắt tỉa dựa vào db trước khi dựa vào DB

Bước 4: Kích thướt của CSDL sau khi được cập nhật trong mỗi lần lặp sẽ được

giảm xuống bằng phép cắt tỉa dựa vào các item trong db. Bước 1:

Bổ đề 1: Một 1-itemset XL1 là không phổ biến ( L1) trong CSDL sau khi được cập nhật DBdb nếu và chỉ nếu X.supportUD < s × (D+d)

CM: Dựa vào định nghĩa độ hỗ trợ tối thiểu và định nghĩa large 1-itemset. Bổ đề 2: Một 1-itemset XL1 có thể trở thành phổ biến (winner hay large itemset L1 ) trong CSDL sau khi được cập nhật DBdb nếu và chỉ nếu X.supportd

≥ s×d

CM: Vì XL1 nên X.support < s×D

Nếu X.support < s×d thì X.supportUD = X.supportD + X.supportd < s×(D+d) nên XL1. Vì vậy để XL1 thì X.supportd ≥ s×d

Mô tả chi tiết bước 1:

- Quét db, ∀X ∈ L1, cập nhật X.supportUD, sau khi quét xong db thì ∀X ∈ L1

kiểm tra X.supportUD < s × (D+d) nếu X thỏa thì X là loser và loại X ra khỏi L1

- Trong khi quét db thì có tập C1 dùng để lưu các itemset X  T với Tdb và X

 L1, sau đó dựa vào bổ đề 2 nếu XC1 và X thỏa X.supportd < s×d thì loại X ra khỏi C1

- Quét DB để cập nhật X.supportUD ∀X ∈ C1, bằng cách kiểm tra độ hỗ trợ các tập phổ biến trong C1 sẽ được tìm thấy. Ta kết hợp các tập phổ biến vừa tìm thấy trong

C1 với tập L1 ta được tập L1

Ví dụ: D = 1000, d = 100, s = 3%, CSDL có 4 items I1, I2, I3, I4

I1, I2L1 với I1.supportD = 32, I2.supportD = 31. Giả sử I1.supportd = 4,

I2.supportd = 1. Sau khi quét db ta có I1.supportUD = 36 > 1100 × 3%, I2.supportUD = 32 < 1100 × 3% vì vậy I2 là loser và bị loại khỏi L1, thêm I1 vào L1

Giả sử I3, I4 ∉ L1 nhưng xuất hiện trong các giao dịch trong db, nên cả I3 và I4

có thể là những ứng viên tìm ẩn I3, I4C1, I3.supportd = 6, I4.supportd = 2, vì

I4.supportd < s×d = 3%×100 nên I4 bị loại khỏi C1, giả sử I3.supportD = 28 nên

I3.supportUD = 34 > 1100 × 3% suy ra I3L1 Bước 2:

Bổ đề 3: Nếu (k-1)-itemset {X1,…, Xk-1} là không phổ biến (loser) tại bước lặp thứ (k-1) (Lk1 nhưng Lk1 ), L một large k-itemset Lk chứa một trong các itemset {X1,…, Xk-1} thì không thể là phổ biến (winner) trong bước lặp thứ k

CM: Dựa vào tính chất tất cả tập con của một tập phổ biến là tập phổ biến. Bổ đề 4: k-itemset {X1,…, Xk}  Lk nhưng  Lk nếu và chỉ nếu {X1,…,Xk}.supportUD < s × (D + d)

CM: Dựa trên định nghĩa độ hỗ trợ tối thiểu và tập phổ biến.

Bổ đề 5: k-itemset {X1,…, Xk}  Lk nhưng có thể  Lk nếu và chỉ nếu {X1,…,Xk}.supportd ≥ s × d

CM: Tương tự bổ đề 2 Mô tả chi tiết bước 2: (adsbygoogle = window.adsbygoogle || []).push({});

- Sau khi tiến hành bước 1 ta có tập L1L1 ,  X L2 nếu Y X và Y

(L1L1) thì loại X ra khỏi tập L2 (theo bổ đề 3), sau đó tiến hành quét db và cập nhật độ hỗ trợ cho các phần tử còn lại trong L2, dựa vào độ hỗ trợ ta sẽ tìm ra được tập phổ biến thuộc L2

- Khởi tạo C2 bằng cách áp dụng hàm appriori-gen [2] trên L1. C2 sẽ không chứa các phần tử đã chứa trong L2. Quét db để tính độ hỗ trợ của các phần tử trong C2, ∀X ∈ C2 nếu X.supportd < s×d thì loại X ra khỏi C2

- Quét DB để cập nhật độ hỗ trợ của các phần tử còn lại trong C2, ∀X ∈ C2 nếu

X.supportUD < s × (D+d) thì loại X là tập phổ biến, ngược lại thì loại X ra khỏi C2.

2 2 2

L LC

Ví dụ: D = 1000, d = 100, s = 3%, CSDL có 4 items I1, I2, I3, I4

L1 = {I1, I2, I3}, L2 = {I1I2, I2I3} và I1I2.supportD = 50, I2I3.supportD = 31, giả sử

1

L = {I1, I2, I4}. Trong lần lặp thứ 2 ta sẽ tìm L2

Ta có: I3 L1 L1 nên ta loại I2I3 ra khỏi L2. Tiến hành quét db, giả sử I1I2.supportd = 3 nên I1I2.supportUD = (3 + 50) > 3% × 1100 nên I1I2 L2

Áp dụng hàm appriori-gen trên L1 ta được tập C2 = {I1I2, I1I4, I2I4} vì I1I2  L2

nên C2 = {I1I4, I2I4}. Quét db ta có: I1I4.supportd = 5, I2I4.supportd = 2. Vì I2I4.supportd

= 2 < 3% ×100 nên loại I2I4 ra khỏi C2. Sau đó ta tiến hành quét DB, giả sử I1I4.supportD = 30 nên I1I4.supportUD = 5+ 30 > 3% × 1100 nên I1I4 được thêm vào L2

Một phần của tài liệu 28042_1712202001920798LVNguyenHoangNhat (Trang 40 - 43)