Thuật toán Aprìori-TID

Một phần của tài liệu Phương pháp luật kết hợp trong khai phá dữ liệu (Trang 28 - 30)

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 ứng cử viên 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 đề xuẩt 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. [6]

Nội đung thuật toán Aprìori-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:

Ll= {large 1 -itemset}; C] = database D;

2

Bảng 2.8. Vector biểu diễn nhị phân cho các tập 3 thuộc tắnh

{A,B,D} {A,B,EỊ {B,C,E} {B,D,E}

1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0

Các vector biểu diễn nhị phân cho các tập 4 t H1ỘC tắnh có dạng:

Bảng 2.9. Vector biểu diễn nhị phân cho các tập 4 thuộc tắnh

{A,B,C,D

} {A,B,C,E} {A,C,D,EỊ {B,C,D,E}

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0

for (k=2; Lk-1 & 0; k++) do begin

Ck;

For all entries t e Ck-1 do Begin

//Xác định các candidate itemset //được chứa trong giao dịch với định danh t.TID Ci={ce Ckl(c-c[k])et.set_of_itemsetA(c-c[k-l])e t.set_of_itemset};

For all candidates c e Ct do c.count++;

if (C 1*0) then Or = Ck <t.TTD,Ct > end

Luật kết hợp= {ceCkl c.count >minsup}; end Answer = uk 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 Ll), các LI 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 Cị chi 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 C/.

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().

2.4,3. Thuật toán Aprìori-Hybrid

Thuật toán Apri ori-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 c* đã 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 ton 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.

Một phần của tài liệu Phương pháp luật kết hợp trong khai phá dữ liệu (Trang 28 - 30)