Thuật toán Apriori-TID là phần mở rộng theo hướng tiếp cận cơ bản của thuật toán Apriori. Thay vì dựa vào cơ sở dữ liệu thô thuật toán Apriori- TID biểu diễn bên trong mỗi giao dịch bởi các candidate hiện hành.
Như ta đã thấy, thuật toán Apriori đòi hỏi phải quét toàn bộ cơ sở dữ liệu để tính độ hỗ trợ cho các tập hợp ứng cử viên ở mỗi bước. Đây là một sự lãng phí lớn. Dựa trên tư tưởng ước đoán và đánh giá độ hỗ trợ, Agrawal đề nghị cải tiến Apriori theo hướng chỉ phải quét cơ sở dữ liệu lần đầu tiên, sau đó tính độ hỗ trợ cho các tập hợp 1 phần tử. Từ bước thứ hai trở đi, Thuật toán Apriori-TID nhờ lưu trữ song song cả ID của giao dịch và các ứng cử viên, có thể đánh giá, ước lượng độ hỗ trợ mà khỏi phải quét lại toàn bộ cơ sở dữ liệu.
Nội dung thuật toán Apriori-TID Input: Tập các giao dịch D, minsup
Output: Tập Answer gồm các tập mục thường xuyên trên D
Method: L1= {large 1 – itemset}; 1 C = database D; for (k=2; Lk-1 ; k++) do begin ; k C
For all entries t Ck1 do begin
//Xác định các candidate itemset
//được chứa trong giao dịch với định danh t.TID
1 c k (c-c[k]) t.set_of_itemset (c-c[k-1]) t.set_of_itemset ;
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 46 For all candidates c Ct do
c.count++;
if (C1) then Ck Ck t.TID,Ct end
Luật kết hợp= {c Ck | c.count minsup}; end
Answer = k Lk
Sự khác nhau giữa Apriori và AprioriTID là: cơ sở dữ liệu không được sử dụng để đếm các support sau lần đầu tiên quét qua cơ sở dữ liệu. Vì sau lần quét đầu tiên các 1-itemset đã được sinh (các L1), các L1 này được dùng để lọc ra các giao dịch của cơ sở dữ liệu bất kỳ item nào là không phổ biến và những giao dịch trong C1 chỉ chứa những item không phổ biến. Kết quả đó được đưa vào C2 và sử dụng lần quét đó. Vì vậy kích thước của C2là khá nhỏ hơn so với C1 .
Sự giống nhau của hai thuật toán này là đều sử dụng bước cắt tỉa trong hàm Apriori_gen()
3.5.Thuật toán Apriori-Hybrid
Thuật toán Apriori-Hybrid được coi như kết hợp giữa Thuật toán Apriori và thuật toán Apriori-TID.
Trong thuật toán Apriori-Hybrid, được sử dụng khi tổ chức lặp và chuyển sang Apriori-TID khi đã chắc chắn rằng tập Ck đã vào bộ nhớ chính. Thuật toán Apriori-Hybrid được coi là tốt hơn so với Apriori và AprioriTID.
Nhờ có nhận xét tinh tế là thuật toán Apriori chạy khá nhanh ở những bước đầu tiên, còn thuật toán Apriori-TID chạy nhanh ở những bước sau (và đáng buồn là chạy khá chậm ở những bước đầu tiên), Agrawal đề nghị phương án lai ghép: không nhất thiết phải chạy tất cả các bước cùng một thuật
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 47 toán giống nhau. Những bước đầu tiên, ông cho chạy thuật toán Apriori, sau đó khi tập các ứng cử viên khá lớn, sắp chứa đầy trong bộ nhớ tính toán, mới dùng thuật toán Apriori-TID.
Srikant đưa ra thêm một nhận xét: thời gian chuyển từ thuật toán Apriori sang thuật toán Apriori-TID tương đối “đắt” (tốn kém), và thuật toán lai ghép Apriori-Hybrid chỉ tỏ ra hiệu quả khi sự chuyển mạch này diễn ra ở gần cuối quá trình tìm kiếm tập xuất hiện – thường xuyên.