Thuật toán sinh luật kết hợp:

Một phần của tài liệu khai phá luật kết hợp trong cơ sở dữ liệu và ứng dụng (Trang 50 - 53)

Phần này sẽ trình bày thuật toán tìm các luật kết hợp từ các tập mục thƣờng xuyên đã có.

Thuật toán đơn giản:

Chúng ta cải tiến thủ tục xử lý bằng cách sinh ra các tập con của tập mục thƣờng xuyên theo kiểu đệ qui ƣu tiên độ sâu. Ví dụ: với tập mục ABCD, đầu tiên chúng ta xét tập con ABC, sau đó đến AB,...

Tiếp đến, nếu tập con X của tập mục L không sinh ra đƣợc luật thì ta không cần xét đến các tập con cuả nó nữa. Chẳng hạn: nếu luật ABC  D không đủ độ tin cậy thì ta không cần xét luật AB  CD.

Điều này có thể chứng minh đơn giản nhƣ sau:

Nếu luật X (L\X) không thoả mãn độ tin cậy, tức là: conf(X (L\X)) nhỏ hơn minconf, thế thì với bất kỳ tập con Y nào của X ta có:

Vì Y X nên supp(Y)  supp(X), do vậy:

minconf )) \ (L conf(X supp(X) supp(L) supp(Y) supp(L) Y)) \ (L conf(Y     X

Tức là độ tin cậy của luật Y (L\Y) cũng nhỏ hơn minconf. Thuật toán đơn giản này có thể mô tả nhƣ sau:

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

Thuật toán 1:

for all large itemsets lk, k 2 do

call genrules(lk, lk)

Procedure genrules(lk: large k-itemsets, am: large m-

itemsets)

A = {(m – 1)-itemsets am – 1 | am – 1am};

for all am – 1  A do begin

conf = support(lk)/support(am – 1);

if (conf  minconf) then

begin

output the rule am – 1 (lk - am – 1),

with confidence = conf and support=Support(lk)

if (m – 1 > 1) then

call genrules(lk, am – 1);

// để sinh ra các luật với tập con của am – 1 là phần tiền đề.

end end

Thuật toán nhanh hơn:

Ở trên ta đã chỉ ra rằng nếu một luật không thoả mãn với tập cha X thì cũng không thoả mãn với tập con của nó. Ví dụ nhƣ trên đã xét: nếu ABC

D không đủ độ tin cậy thì luật AB  CD cũng không đủ độ tin cậy. Điều đó có thể áp dụng theo hƣớng ngƣợc lại nhƣ sau: nếu xảy ra luật với tập con thì cũng xảy ra luật với tập cha . Ví dụ: nếu luật AB  CD có đủ độ tin cậy thì luật ABC  D cũng đủ độ tin cậy.

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

Thuật toán 2 : (adsbygoogle = window.adsbygoogle || []).push({});

For all large itemsets lk, k  2 do begin

H1 ={ Các phần kết luận của các luật nhận đƣợc từ lk với 1- mục ở kết luận};

call ap-genrules(lk, H1)

end

Procedure ap-genrules(lk: large k-itemsets, Hm: set of m-

item consequents)

if (k > m + 1) then begin

Hm + 1 = apriori_gen(Hm);

For all hm + 1  Hm + 1 do begin

conf = support(lk)/support(lk - h m + 1);

if (conf  minconf) then

output the rule (lk - hm + 1)  hm + 1

//với độ tin cậy là conf và độ hỗ trợ là support(lk);

else

delete hm + 1 from Hm + 1

end

call ap-genrules(lk, Hm + 1);

end

Thuật toán nhanh hơn này sử dụng thủ tục apriori_gen mô tả ở phần thuật toán Apriori ở trên. Ta xem tại sao thuật toán 2 này nhanh hơn thuật toán 1 ở trên:

Ví dụ, ta xét tập mục ABCDE. Giả sử rằng ACDE B và ABCE D

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

Trong thuật toán đơn giản ở trên, gọi đệ qui genrules(ABCDE, ACDE) sẽ kiểm tra các luật với 2-mục ở phần kết luận là: ACD BE, ADE BC, CDE  BA, và ACE  BD.

Luật thứ nhất không xảy ra vì E  BE và ABCD  E không thoả mãn độ tin cậy. Các luật thứ hai và thứ ba cũng không thoả mãn độ tin cậy với lí do tƣơng tự.

Chỉ có một luật với 2-mục ở phần kết luận nhận đƣợc là ACE  BD , ở đó B và D là các kết luận của các luật hợp lệ có 1-mục ở phần kết luận. Thuật toán nhanh hơn mô tả ở trên chỉ kiểm tra một luật này.

Một phần của tài liệu khai phá luật kết hợp trong cơ sở dữ liệu và ứng dụng (Trang 50 - 53)