4.2.1 Thực hiện phép nối giữa tập mục phổ biển Fk
Thuật toán Apriori đã được trình bầy trong chương 2, với mỗi k, tập ứng viên có độ dài k (Ck) có thể được sinh từ tất cả các tập mục phổ biến có độ dài bằng k-1 (Fk-1). Fk-1 sẽ có k-1 cột: Item1, Item2, …, Itemk-1, các giá trị lần lượt của tập mục phổ biến được sắp xếp theo thứ tự tăng dần.
(1) insert into Ck
(2) select I1.item1, … ,I1.itemk-1, I2.itemk-1
(3) from Fk-1 I1, Fk-1 I2
(4) where I1.item1 = I2.item1 and
(5) …
(6) I1.itemk-2 = I2.itemk-2 and
(7) I1.itemk-1 < I2.itemk-1
Hình 4.2: Thực hiện phép nối giữa tập mục phổ biến Fk Ví dụ, Tập mục phổ biến có độ dài k=3, Ví dụ, Tập mục phổ biến có độ dài k=3,
F3: {{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {1, 3, 5}, {2, 3, 4}}, ta sẽ có được tập các ứng viên có độ dài k = 4 như sau: C4: {1, 2, 3, 4}, and {1, 3, 4, 5}.
4.2.2 Thực hiện bước tỉa loại bỏ ứng viên không có lợi
Tiếp theo, là bước tỉa để loại bỏ các ứng viên không có lợị Các tập con độ dài (k-1) của tập các ứng viên Ck không tồn tại trong các tập mục phổ biến có độ dài bằng k-1 (Fk-1) là được xóa bỏ. Chúng ta sử dụng phương pháp K-way join[15] để thực hiện, dựa vào các giá trị lần lượt của tập mục phổ biến được sắp xếp theo thứ tự tăng dần và tất cả tập con của tập phổ biến phải phổ biến. Các tập con (tập phổ biến) độ dài k-1 sẽ xác nhận cho các tập phổ biến độ dài k. Điều này được thực hiện bằng việc thêm phép kết nối với điều kiện để xác nhận lần lượt cho từng cột (item). Đầu tiên kiểm tra item1, nếu tập ứng viên (I1.item2, I1.item3, …, I1.itemk-1, I2.itemk-1) thuộc Fk-1 như trong phép kết nối với I3 được thể hiện ở hình bên dướị Một phép kết nối với Ir (3 <= r <= k) chúng ta sẽ kiểm tra item r-2 với điều kiện:
(1) I1.item1 = Ir.item1 and
(2) …
(3) I1.itemr-3 = Ir.itemr-3 and
(4) I1.itemr-1 = Ir.itemr-2 and
(5) …
(6) I1.itemk-1 = Ir.itemk-2 and
(7) I2.itemk-1 = Ir.itemk-1
Hình 4.4: Sinh và tỉa tập các ứng viên có độ dài k
Ví dụ, bảng F3 có tập dữ liệu {{1 2 3}, {1 2 4}, {1 3 4}, {1 3 5}, {2 3 4}}. Sau khi thực hiện kết nối F3 với chính nó ta được kết quả trả về là {{1 2 3 4}, {1 3 4 5}. Bước tỉa sẽ xóa tập con {1 3 4 5} không phổ biến. Bởi vì tập {1 3 4 5} được sinh ra từ hai tập con là {1 3 4} và {1 3 5} nhưng tập con {3 4 5} không tồn tại trong tập mục phổ biến F3. Do đó nó bị xóa và tập các ứng viên có độ dài 4 (C4) là {1 2 3 4}.