CHƯƠNG 1 TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU
2.3 PHÁT TRIỂN THUẬT TỐN TÌM TẬP THƯỜNG XUN TRÊN CSDL
ĐÃ PHÂN LỚP
2.3.1 Phát triển thuật toán xây dựng FP_Tree
− Duyệt qua CSDL giao tác đã được phân lớp T, loại bỏ những mục dữ liệu
không thường xuyên và rút gọn một lần nữa ta được T’ bằng cách: Nếu tồn tại ti, tj ∈ T: ti = ((xi1,wi1), (xi2,wi2), …, (xis,wis)), tj = ((xj1,wj1), (xj2,wj2), …, (xjr,wjr )) thỏa (xi1, xi2, …, xis) ≈ (xj1 xj2, …, xjr) thì thay ti, tj bởi t = ti⊕T tj
− Ứng với mỗi t=[(xi1,wi1), (xi2,wi2),…, (xik,wik)] ∈ T’, Khi chèn X:= (xij,wij) vào vào
nút P thay vì P.ItemCount:= P.ItemCount +1 ta thay P.ItemCount:= P.ItemCount +wij;
2.3.2 Thuật toán Apriori
Với ngưỡng tối thiểu s0, thuật tốn Apriori trên CSDL có trọng số có hai bước để tìm ra tất cả các tập mục dữ liệu thường xuyên:
Bước 1: Khi xây dựng CSDL giao tác có trọng số được sắp rút gọn T, ta lưu
lại độ hỗ trợ của các mục dữ liệu. Duyệt qua T, loại bỏ những mục dữ liệu không thường xuyên và rút gọn một lần nữa ta được T’ như ở phần thuật toán xây dựng
PF_Tree. Ở bước 2 ta duyệt trên T’
Trên T’, để tính supp của tập mục dữ liệu X ta thực hiện: Duyệt qua T’, ứng với mỗi t = [(xi1,wi1), (xi2,wi2), …, (xik,wik)] ∈ T’: Nếu X ⊆ {xi1, xi2,…, xik} thì
Supp(X) := Supp(X)+ Min{wi1, wi2,…, wik}.
1. C'k là tập các tập k mục dữ liệu có được bằng cách hợp từng hai tập k-1 mục
dữ liệu thường xuyên trong Lk-1 có k-2 mục dữ liệu đầu tiên giống nhau, mục thứ k-1
khác nhau.
2. Lập tập ứng viên Ck bằng cách loại bỏ những tập trong C'k có một tập con k- 1 mục dữ liệu nhưng không là tập k-1 mục dữ liệu thường xuyên.
3. Ứng với mỗi tập ứng viên k mục dữ liệu trong Ck, tính độ hỗ trợ của nó để xem tập này có phải là tập thường xuyên hay không, ta được tập Lk.
Lặp bước 2 cho đến khi tập k mục dữ liệu thường xuyên là rỗng.
Với thuật tốn Apriori, chi phí nhiều nhất là duyệt qua CSDL để tính độ hỗ trợ của các tập ứng viên. Với CSDL giao tác có trọng đã phân lớp, số giao tác đã rút gọn rất nhiều lần nên thời gian thực hiện giảm đi rất nhiều lần.