7. forall các tập mục phổ biến lt ∈ Lt do begin
3.4. Thuật toán Apriori-TID
- 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 ∈ Ck−1 do begin
//Xác định các candidate itemset
//được chứa trong giao dịch với định danh t.TID
C1= {c∈Ck|(c-c[k]) ∈ t.set_of_itemset ∧ (c-c[k-1]) ∈ t.set_of_itemset} For all candidates c ∈Ct do
c.count++;
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 C1chỉ 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 C2 là
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 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.