Bước 5: Tạo C5 và L5 từ L4. Ta có C5 = . Như vậy thuật toán dừng lại ở bước 5 vì L5 =
Kết quả: với minSup =50% thì :
Tập hợp các tập phổ biến = L1 L2 L3 L4
= {a, b, c, d, e, ab, ad, ae, bc, bd, be, ce, de, abd, abe, ade, bce, bde, abde}
Hạn chế của thuật toán Apriori:
Để xác định độ phổ biến của các tập ứng viên, thuật toán Apriori phải quét lại toàn bộ giao tác trong CSDL, do đó sẽ tiêu tốn rất nhiều thời gian khi phải quét CSDL nhiều lần để kiểm tra một lượng lớn các ứng viên, đặc biệt khi số danh mục lớn.
Để khắc phục hạn chế phát sinh tập ứng viên quá lớn của thuật toán Apriori, các nhà nghiên cứu đã đề nghị xây dựng cây FP-Tree và thuật toán FP-Growth ra đời nhằm khai thác tập phổ biến mà không phát sinh các tập ứng viên.
2.3.2. Thuật toán FP-Growth
Thuật toán Apriori [3] được coi là thuật toán nền tảng về khai thác tập phổ biến bằng cách sử dụng kỹ thuật tỉa để rút gọn kích thước của các tập ứng viên. Tuy nhiên, thuật toán gặp phải hai chi phí lớn: sinh ra số lượng khổng lồ các tập ứng viên, phải duyệt cơ sở dữ liệu nhiều lần.
Để khắc phục những chi phí lớn của thuật toán Apriori, nhóm tác giả Jiawei Han, Jian Pei và Yiwen Yin đã đề xuất thuật toán FP-Growth [4] vào năm 2000. Thuật toán này sử dụng một cấu trúc cây FP-Tree để lưu trữ thông tin tập phổ biến của dữ liệu gốc ở một dạng nén trong bộ nhớ và dùng phương pháp duyệt cây theo chiều rộng để tìm tập phổ biến. Kỹ thuật xây dựng cây FP-Tree như sau:
Bước 1:
Duyệt CSDL, lấy ra tập các hạng mục phổ biến X và tính độ phổ biến của chúng.
C4 Danh mục Độ phổ biến abde 3 L4 Danh mục Độ phổ biến abde 3
16
Sắp xếp các hạng mục trong tập X theo thứ tự giảm dần của độ phổ biến, ta được tập kết quả là L.
Hình 2.2 Lưu đồ thuật toán xây dựng cây FP-Tree (bước 1)
L bao gồm các hạng mục phổ biến theo thứ tự giảm dần của độ phổ biến
Bước 2:
Tạo nút gốc cho cây T và tên của nút gốc sẽ là Null.
Sau đó duyệt CSDL lần thứ hai. Ứng với mỗi giao tác trong CSDL thực hiện 2 công việc sau:
Chọn các hạng mục phổ biến trong các giao tác và sắp xếp chúng theo thứ tự giảm dần độ phổ biến trong tập L
Gọi hàm Insert_tree([p|P],T) để đưa các hạng mục vào trong cây T
Hình 2.3 Lưu đồ thuật toán xây dựng cây FP-Tree (bước 2)
Duyệt CSDL Lấy ra tập phổ biến L
Tạo nút gốc cho cây Duyệt CSDL
Chọn 01 giao tác trong CSDL
Chọn hạng mục phổ biến trong các giao tác và sắp xếp tập L theo thứ tự giảm dần độ phổ biến
Gọi hàm Insert_tree([p|P], T)
Kiểm tra hết giao tác chưa?
Dừng Hết Còn
17
Ví dụ 2.10:
Xây dựng cây FP-Tree cho CSDL gồm các hạng mục sau:
Mã giao tác Nội dung giao tác
1 f, a, c, d, g, i, m,p
2 a, b, c, f, l, m, o
3 b, f, h, j, o
4 b, c, k, s, p
5 a, f, c, e, l, p, m, n