Thuật toán EFIM

Một phần của tài liệu Ứng dụng thuật toán EFIM để khai phá tập mục hữu ích cao từ cơ sở dữ liệu bán hàng tại siêu thị co opmart quảng ngãi (Trang 42 - 44)

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

2.5.2.Thuật toán EFIM

Thuật toán EFIM - Thuật toán 1

Input: D: Một cơ sở dữ liệu giao tác, minutil: ngưỡng hữu ích tối thiểu do người dùng cho trước

Output: Tập mục hữu ích cao Các bước:

1. Xét tập mục α = 

2. Duyệt CSDL D để tính giá trị hữu íchcục bộ cho tất cả các mục lu(α, i) trong α, sử dụng mảng utility-bin

3. So sánh giá trị hữu ích cục bộ với minutil. Secondary(α) = {i | iI  lu(α, i) ≥ minutil}

4. Gọi ≻ là thứ tự sắp xếp TWU tăng dần trong Secondary(α).

5. Loại bỏ tất cả các mục không phải là tập hữu ích cao trong Secondary(α), sắp xếp thứ tự các giao tác theo ≻ và xóa các giao tác rỗng.

6. Sắp xếp thứ tự các giao tác trong D theo ≻T

7. Duyệt D để tính giá trị hữu ích su(α, i) của mỗi mục theo Secondary(α). 8. Primary(α)={i | i  Secondary(α) ∧ su(α, i) ≥ minutil}.

9. Search(α, D, Primary(α), Secondary(α), minutil). Mô tả các bước thực hiện:

giá trị hữu ích cục bộ lu(α, i) cho tất cả các mục α và dựa vào mảng utility-bin để tính toán (dòng 2). Chú ý: Trong trường hợp α = , thì giá trị hữu ích cục bộ của mỗi mục chính là giá trị TWU. Tính Secondary(α) và so sánh với ngưỡng hữu ích tối thiểu minutil để loại bỏ những mục không đủ điều kiện nhằm tối ưu tính toán (dòng 3) và sắp xếp giá trị TWU theo thứ tự tăng dần (dòng 4).

Duyệt CSDL D để loại bỏ tất cả các mục không phải là tập mục hữu ích cao trong Secondary(α) bằng định lý 1 và sắp xếp các giao tác theo thứ tự TWU, nếu giao tác rỗng thì xóa khỏi CSDL D (dòng 5). Sắp xếp các giao tác theo ≻T dựa vào 4 trường hợp sắp xếp (dòng 6).

Duyệt CSDL D để tính giá trị hữu ích của su(α, i) của mỗi mục trong Secondary(α) dựa vào mảng utility-bin, tính và so sánh Primary(α) với minutil (dòng 7 và 8). Sau đó, thuật toán gọi hàm đệ quy để tìm kiếm theo chiều sâu.

Hàm đệ quy tìm kiếm – Thuật toán 2 Input: - α: tập mục

- α – D: CSDL tham chiếu của tập mục α - Primary(α): các mục chính của α

- Secondary(α): các mục phụ của α

- minutil: ngưỡng hữu ích tối thiểu do người dùng quy định

Output: tập hợp các tập mục hữu ích cao được mở rộng từ α Các bước:

1. Nếu item i Primary(α) thực hiện 2. β=α ∪{i};

3. Quét α – D để tính giá trị hữu ích của u(β) và tạo β − D

4. Nếu u(β) ≥ minutil thì xuất β, tính su(β, z) và lu(β, z) tất cả các mục của z ∈ Secondary(α) bằng cách quét β − D, dùng 2 mảng utility-bin;

5. Primary(β) = {z ∈ Secondary(α) | su(β, z) ≥ minutil}; 6. Secondary(β) = {z ∈ Secondary(α) | lu(β, z) ≥ minutil}; 7. Search(β, β − D, Primary(β), Secondary(β), minutil); 8. Kết thúc

Môt tả thuật toán:

Sử dụng vòng lặp để đưa ra từng mục mở rộng từ tập mục α qua công thức  = α  {i}, i là mục chính của α (mỗi mục đơn mở rộng của α theo định lý 2). Tiếp

theo, duyệt CSDL D để tính giá trị hữu ích của  và tạo ra CSDL tham chiếu của tập mục mở rộng  (chú ý, hợp nhất giao tác được thực hiện khi xây dựng được CSDL tham chiếu của ).

Nếu giá trị hữu ích của  lớn hơn hoặc bằng ngưỡng hữu ích tối thiểu thì  là tập mục hữu ích cao. Dòng 5, duyệt CSDL để tính giá trị hữu ích của su(, z) và giá trị hữu ích cục bộ lu(, z) dùng 2 mảng utility-bin. Xác định các mục chính và phụ của . Sau đó sử dụng thủ tục đệ quy để tìm kiếm theo chiều sâu của  và xuất ra các tập mục hữu ích cao của .

Độ phức tạp của thuật toán: O(|I| + lnw) Trong đó:

+ l là số tập mục trong không gian tìm kiếm + n là số giao tác trong CSDL

+ w là chiều dài trung bình của giao tác

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Ứng dụng thuật toán EFIM để khai phá tập mục hữu ích cao từ cơ sở dữ liệu bán hàng tại siêu thị co opmart quảng ngãi (Trang 42 - 44)