Thuật toán FP-growth

Một phần của tài liệu TÌM HIỂU MỘT SỐ THUẬT TOÁN PHÁT HIỆN LUẬT KẾT HỢP (Trang 26)

4.1. Ý tưởng thuật toán

Thuật toán mới xuất hiện gần đây có tên là FP-growth được giới thiệu bởi Jiawei Hai Jian Pei và Yiwen Yin năm 2000. Thuật toán tìm các tập phổ biến hiệu qủa hơn thuật toán Apriori bằng việc sử dụng một kỹ thuật khác không cần sinh các ứng cử. Sự hiệu quả của khai phá nhận được với 3 kỹ thuật chính:

- Thứ nhất, nén tập dữ liệu vào cấu trúc cây (Frequent Pattern tree, gọi tắc là FP-tree):

+ Giảm chi phí cho toàn tập dữ liệu dùng trong quá trình khai phá, Infrequent items bị loại bỏ sớm.

+ CSDL lớn được nén chặt tới cấu trúc dữ liệu nhỏ hơn (FP-tree), tránh được chi phí lặp lại duyệt qua CSDL. Đảm bảo kết quả khai phá không bị ảnh hưởng.

- Thứ hai, phương pháp chia-để-trị (divide-and-conquer method): quá trình khai phá được chia thành các công tác nhỏ.

+ Xây dựng FP-tree

+ Khám phá frequent itemsets với FP-tree

- Thứ ba, tránh tạo ra các tập dự tuyển

+ Mỗi lần kiểm tra một phần tập dữ liệu

Phương pháp FP-growth đã chứng tỏ được tính hiệu quả của nó và thể hiện khai phá cho cả các mẫu ngắn và dài, nhanh hơn thuật toán Apriori, luôn chỉ cần duyệt CSDL 2 lần.

4.2. Giải thuật FP-growth4.2.1. Xây dựng cây FP-tree 4.2.1. Xây dựng cây FP-tree

a) Kiểm tra tập dữ liệu, tìm frequent 1-itemsets

b) Sắp thứ tự frequent 1-itemsets theo sự giảm dần của support count (frequency, tần số xuất hiện)

c) Kiểm tra tập dữ liệu, tạo FP-tree

- Tạo root của FP-tree, được gán nhãn “null” {} - Mỗi giao dịch tương ứng một nhánh của FP-tree.

- Mỗi node trên một nhánh tương ứng một item của giao dịch. + Các item của một giao dịch được sắp theo giảm dần. + Mỗi node kết hợp với support count của item tương ứng. - Các giao dịch có chung items tạo thành các nhánh có prefix chung. Thuật toán FP_Tree

Input: cơ sở dữ liệu và ngưỡng độ hỗ trợ minsup

Output: Cây mẫu thường xuyên FP_Tree

- Bước 1: Duyệt qua cơ sở dữ liệu để đếm số lần xuất hiện của các mục trong giao tác và xác định mục thường xuyên và độ hỗ trợ của chúng, sắp xếp các mục thường xuyên giảm dần theo độ hỗ trợ, ta được danh sách các mục được sắp xếp L.

- Bước 2: Xây dựng FP_Tree. Đầu tiên tạo nút gốc, sau đó với mỗi giao tác t chọn và sắp xếp các mục thường xuyên theo thứ tự trong danh sách L, thực hiện thêm vào cây FP_Tree bằng cách gọi hàm insert_tree(p|T), thay đổi trường count cho phù hợp.

4.2.2. Khám phá frequent itemsets với FP-tree

a) Tạo conditional pattern base cho mỗi node của FP- Tree Tích luỹ các prefix paths with frequency của node đó

b) Tạo conditional FP-tree từ mỗi conditional pattern base -Tích lũy frequency cho mỗi item trong mỗi base

- Xây dựng conditional FP-tree cho frequent items của base đó

c) Khám phá conditional FP-tree và phát triển frequent itemsets một cách đệ qui

- Nếu conditional FP-tree có một path đơn thì liệt kê tất cả các itemsets. Ví dụ: Cho cơ sở dữ liệu (Dữ liệu mẫu của AllElectronics) với 9 giao dịch và độ hỗ trợ (minsup = 2/9) được thể hiện trong bảng sau:

TID List of Items T100 I1, I2, I5 T200 I2, I4 T300 I2, I3 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T700 I1, I3

T800 I1, I2, I3, I5 T900 I1, I2, I3

Duyệt qua cơ sở dữ liệu để tìm tập mục thường xuyên và sắp xếp giảm dần theo độ hỗ trợ L = {I2:7, I1:6, I3:6, I4:2, I5:2}

Item ID Support Count

I2 7

I1 6

I3 6

I4 2

 Thuật toán FP_Growth (Pseudo code) Procedue FP_Growth(tree, α)

{ If (cây chứa một đường đơn P) then

For mỗi tổ hợp (kí hiệu β) của các nút trong đường dẫn P Do

Sinh mẫu α ∪ βvới support = độ hỗ trợ nhỏ nhất của các nút trong β Else

For mỗi ai trong header của cây Do

{ Sinh mẫu β =αi ∪ α với support= αi .support

Tìm cơ sở mẫu phụ thuộc của β và khởi tạo cây FP_Tree phụ thuộc Treeβ

If Treeβ ≠ ∅ Then FP_Growth(Treeβ, β) }

4.3. Đặc điểm của FP-growth

- Không tạo tập itemsets dự tuyển: Không kiểm tra xem liệu itemsets dự tuyển có thực là frequent itemsets.

- Sử dụng cấu trúc dữ liệu nén dữ liệu từ tập dữ liệu

- Giảm chi phí kiểm tra tập dữ liệu

- Chi phí chủ yếu là đếm và xây dựng cây FP-tree lúc đầu

Do đó FP-grownth có hiệu quả và co giãn tốt cho việc khám phá các frequent itemsets dài lẫn ngắn.

So sánh giữa giải thuật Apriori và giải thuật FP-Growth:

Co giãn với support threshold

CHƯƠNG 4

KHAI PHÁ LUẬT KẾT HỢP TRONG BÀI TOÁN KHÁM VÀ ĐIỀU TRỊ BỆNH NHÂN NGOẠI TRÚ TẠI PHÒNG KHÁM Y HỌC CỔ TRUYỀN

BỆNH VIỆN BÀ RỊA TỈNH BÀ RỊA – VŨNG TÀU

Một phần của tài liệu TÌM HIỂU MỘT SỐ THUẬT TOÁN PHÁT HIỆN LUẬT KẾT HỢP (Trang 26)

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

(48 trang)
w