2.2 Tổng quan về luật kết hợp
2.2.4 Ví dụ minh họa thuật toán Apriori
Xét CSDL giao dịch D được cho trong bảng sau:
Bao gồm 9 giao dịch với độ hỗ trợ tối thiểu là 2, nghĩa là min_sup = 2/9 = 22 %, độ tin cậy tối thiểu là 70%.
TID Danh sách các mục 1 I1 I2 I5 2 I2 I4 3 I2 I3 4 I1 I2 I4 5 I1 I3 6 I2 I3 7 I1 I3 8 I1 I2 I3 I5 9 I1 I2 I3
Hình 2.3: CSDL sử dụng minh hoạ thuật toán Apriori
Trong lần lặp đầu tiên của thuật toán, mỗi mục là một ứng viên của tập ứng viên C1 (có 1 - tập mục). Thuật toán thực hiện quét tất cả các giao dịch của D theo đó đếm số số lần xuất hiện của mỗi mục.
Giả sử độ hỗ trợ cực tiểu là Minsup = 2/9*100% = 22%. Khi đó tập mục phổ biến 1-Itemset (F1), được xác định như sau: F1 bao gồm tất cả các ứng viên thuộc C1 thoả mãn độ hỗ trợ tối thiểụ Trong ví dụ này tất cả các ứng viên trong C1 đều thỏa mãn độ hỗ trợ tối thiểu (đều lớn hơn 2).
Hình 2.4: Duyệt CSDL tìm các tập mục phổ biến 1-Itemset (F1)
Tìm ra các tập mục phổ biến 2-Itemset (F2), thuật toán sử dụng kết nối F1 với F1 để sinh ra tập ứng cử 2-Itemset (C2). C2 bao gồm tổ hợp chập lj[i] của các phần tử có trong F1 do đó số lượng các phần tử của C2 được tính như sau:
|C2| = C2 | 1|F = C2 5= ! 3 ! 2 ! 5 = 10
Tiếp theo, quét các giao dịch trong D và tính độ hỗ trợ của các tập ứng cử trong C2. Tập mục phổ biến 2-Itemset F2 được xác định, bao gồm các tập mục 2-Itemset là ứng viên trong C2 có độ hỗ trợ lớn hơn hoặc bằng độ hỗ trợ tối thiểu Minsup.
Hình 2.5: Duyệt CSDL tìm các tập mục phổ biến 2-Itemset (F2)
Sinh các tập ứng cử 3-Itemset, C3 bằng cách, kết nối F2 với chính nó ta nhận được kết quả C3 là:
Sử dụng tính chất Apriori để tỉa bớt các ứng cử: Tất cả các tập con của tập phổ biến là tập phổ biến. Do đó 4 ứng cử viên của tập C3 không thể là tập phổ biến vì nó chứa các tập không phổ biến, ta thực hiện tỉa (loại) bốn tập ứng cử viên đó khỏi C3. Cụ thể như sau:
+ Các tập {I1, I3, I5}, {I2, I3, I5} không là phổ biến vì tập con {I3, I5} của nó không phổ biến (không có trong F2).
+ Tập {I2, I3, I4} không là phổ biến vì tập con {I3,I4} của nó không phổ biến (không có trong F2).
+ Tập {I2, I4, I5} không là phổ biến vì tập con {I4, I5} của nó không phổ biến (không có trong F2).
Việc tỉa bớt các tập ứng cử này sẽ làm giảm bớt việc phải quét CSDL để tính độ hỗ trợ khi xác định F3. Lưu ý rằng, với ứng cử k-Itemset, chúng ta chỉ cần kiểm tra tập con (k-1)-Itemset có là phổ biến hay không? Vì thuật toán Apriori sử dụng chiến lược tìm kiếm theo chiều rộng.
Như vậy sau khi thực hiện kết nối và tỉa ta thu được kết tập C3 là: C3 = {{I1, I2, I3}, {I1, I2, I5}}
Quét các giao dịch trong CSDL để xác định F3, F3 bao gồm các ứng cử 3- Itemset trong C3 thoả mãn độ hỗ trợ tối thiểụ Ta có F3 là:
F3 = {{I1, I2, I3}, {I1, I2, I5}}
Sinh các tập ứng cử 3-Itemset, C3 bằng cách kết nối F3 với chính nó ta nhận được kết quả C4 là tập mục {I1, I2, I3, I5}. Sau đó thực hiện bước tỉa thì tập {I1, I2, I3, I5} bị tỉa vì nó chưa tập con {I2, I3, I5} không là tập phổ biến (không có trong F3). Như vậy ta có C4 = đến đây thuật toán kết thúc. Vậy tập hợp tất cả các tập mục phổ biến đã được tìm.
Các tập mục phổ biến tìm được từ CSDL giao dịch D với độ hỗ trợ tối thiểu Minsup = 22% (độ hỗ trợ tối thiểu tương đương với số giao dịch = 2).
Loại tập mục phổ biến Các tập mục phổ biến
1-Itemset {I1} {I2} {I3} {I4} {I5}
2-Itemset {I1, I2} {I1, I3} {I1, I5} {I2, I3} {I2, I4} {I2, I5} 3-Itemset {I1, I2, I3} {I1, I2, I5}
Hình 2.7: Kết quả thực hiện thuật toán Aprori cho CSDL D
Chúng ta có thể sinh ra các tập luật kết hợp từ các tập mục phổ biến với độ tin cậy tối thiểu là 70%.
R1: I1 ^ I2 I5
Độ tin cậy = sc{I1,I2,I5}/sc{I1,I2} = 2/4 = 50% R1 sẽ bị loại bỏ.
R2: I1 ^ I5 I2
Độ tin cậy = sc{I1,I2,I5}/sc{I1,I5} = 2/2 = 100% R2 sẽ được chọn.
R3: I2 ^ I5 I1
Độ tin cậy = sc{I1,I2,I5}/sc{I2,I5} = 2/2 = 100% R3 sẽ được chọn.
R4: I1 I2 ^ I5
Độ tin cậy = sc{I1,I2,I5}/sc{I1} = 2/6 = 33% R4 sẽ bị loại bỏ.
R5: I2 I1 ^ I5
Độ tin cậy = sc{I1,I2,I5}/{I2} = 2/7 = 29% R5 sẽ bị loại bỏ.
R6: I5 I1 ^ I2
Độ tin cậy = sc{I1,I2,I5}/ {I5} = 2/2 = 100% R6 sẽ được chọn.