2.3.1.2. Thuật toán Apriori
Apriori là một giải thuật được Rakesh Agrawal, Tomasz Imielinski, Arun Swami đề xuất lần đầu vào năm 1994. Là thuật toán khai thác luật kết hợp đầu tiên, dựa trên nguyên lý tỉa Apriori, hoạt động theo quy tắc quy hoạch động.
Nội dung thuật toán Apriori qua 2 giai đoạn:
Tìm tập phổ biến
Sinh luật mạnh
a. Tìm tập phổ biến
Input: CSDL giao dịch D và minsup
Output: Tất cả các tập mục phổ biến của D (Frequent Itemsets)
Thuật toán được mô tả như sau: 1. k=1;
2. Fk = {i|iI({i})≥N x minsup}; {tìm tất cả các tập phổ biến 1- phần tử} 3. Repeat
4. k = k+1;
5. Ck = apriori_gen(Fk-1); (sinh các tập ứng viên k phần tử) 6. for each transaction tT do
7. Ct = subset(Ck, t); (tập các ứng viên chứa trong t) 8. for each candidate itemset c Ct do
9. (c) = (c)+1 (tăng độ hỗ trợ của tập mục c) 10. end for 11. end for 12. Fk = { c | c Ck (c)≥N x minsup}; (các tập phổ biến k-phần tử) 13. until Fk =; 14. Result = Fk Diễn giải:
Tìm F1 (tập mục phổ biến có độ dài 1) (bước 1, 2)
Sinh các tập mục ứng viên có độ dài k từ Fk-1 (tập mục phổ biến có độ dài k-1) theo nguyên lý Apriori (bước 4, 5)
Duyệt CSDL để tìm độ hỗ trợ của các tập mục ứng viên có độ dài k (từ bước 6 đến bước 11)
Kiểm tra các tập mục ứng viên độ dài k có độ hỗ trợ thỏa mãn minsup. Từ đó ta có Fk (tập mục phổ biến có độ dài k) (bước 12)
Lặp lại thuật toán cho đến khi không có tập mục phổ biến mới nào được sinh ra (bước 13)
Thủ tục apriori-gen(Fk-1) tại bước 5: sinh ra ứng viên mới có độ dài k từ tập mục phổ biến có độ dài k-1 tìm được trước đó theo phương pháp sau: Cho 2 tập mục phổ biến có độ dài k-1 là A={a1,a2,…,ak-1} và B={b1,b2,…,bk-1}. Kết hợp A với B sinh ra ứng viên mới nếu thỏa mãn điều kiện sau:
𝑎𝑖 = 𝑏𝑖(𝑓𝑜𝑟 𝑖 = 1,2, … , 𝑘 − 2)𝑎𝑛𝑑 𝑎𝑘−1 ≠ 𝑏𝑘−1
Nhận xét:
Nếu theo phương pháp tổ hợp thì số lượng tập mục phải xét là 2k nhưng khi sử dụng phương pháp Apriori thì chỉ những tập phổ biến ở mức k mới được dùng để sinh ứng viên ở mức k+1, và đã loại bỏ các tập mục mức k+1 có bất kỳ tập mục con mức k là không phổ biến.
b. Sinh luật mạnh
Input: Tập F gồm tất cả các tập mục phổ biến của D và ngưỡng minconf Output: Tất cả các luật mạnh thỏa mãn minconf
Thực hiện:
Với mỗi tập phổ biến f F, sinh ra các tập con s khác , và sinh luật s =>(f-z) (f-z) ≠. (chỉ chọn f là các tập phổ biến có từ 2 phần tử trở lên)
s =>(f-z) là luật mạnh nếu độ tin cậy của nó ≥ minconf.
2.3.1.3.Ví dụ minh họa thuật toán Apriori
Với D là cơ sở dữ liệu gồm 4 giao dịch (như hình sau), với tập mục = {A,B,C,D,E}; minsup=50% minsup = 2; minconf=80%