Thuật toán Apriori khai phá luật kết hợp

Một phần của tài liệu Khai phá luật kết hợp mờ và ứng dụng (Trang 27 - 30)

CHƯƠNG I TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

1.6. Thuật toán Apriori khai phá luật kết hợp

Apriori là thuật toán khai các tập mục phổ biến cho các luật kết hợp nhị phân.

Trong phần này trình bày thuật toán Apriori do Rakesh Agrawal, Tomasz Imielinski, Arun Swami đề xuất lần đầu vào năm 1993 [8]. Khai phá luật kết hợp có thể phân rã thành 2 bước:

-Tìm tất cả các tập mục phổ biến với minsup cho trước. Thuật toán Apriori giải quyết vấn đề này.

- Sử dụng các tập mục phổ biến để sinh ra các luật kết hợp với minconf nào đó.

Ý tưởng chính ở đây là nếu S và X là tập mục phổ biến và X S khi đó ta có thể xem XY (ở đây Y = S\X) có phải thuật toán mong muốn hay không bằng cách tính độ tin cậy c = conf(XY) = supp(S) / supp(X). Chỉ khi c minconf thì XY mới trở thành luật mong muốn.

Ký hiệu: Lk tập mục phổ biến k- mục Ck tập mục ứng cử

Thuật toán Apriori thực hiện theo cách lặp lại, ở đó tập (k-1) mục đƣợc sử dụng cho việc tìm tập k - mục. Trong lần duyệt thứ nhất ta tính độ hỗ trợ của tập 1 mục để suy ra tập 1 mục phổ biến. L1 = C1 (tập ứng cử trùng với tập phổ biến). Tiếp

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

theo L1 đƣợc dùng để tìm L2 là các tập 2 mục phổ biến, L2 dùng để tìm L3, … cứ nhƣ vậy cho đến khi không tìm đƣợc mục phổ biến nào lớn hơn k mục phổ biến đã được tìm thấy trước đó. Tìm mỗi Lk đòi hỏi một lần duyệt cơ sở dữ liệu.

Tập mục ứng cử Ck đƣợc sinh ra từ tập mục phổ biến Lk-1 kết hợp với chính nó. Từ tập mục ứng cử Ck tìm ra những mục phổ biến đƣa vào Lk.

Thuật toán Apriori xây dựng các tập ứng cử dựa trên nguyên tắc tất cả các tập con khác rỗng của một tập mục phổ biến phải là phổ biến. Do đó mục ứng cử Ck đƣợc tạo thành từ việc kết hợp các tâp con của tập (k-1) mục phổ biến. Điều đó giúp cho việc giảm một số lƣợng đáng kể các ứng cử viên, rút gọn không gian tìm kiếm.

Quá trình tìm tập mục phổ biến theo thuật toán Apriori gồm 2 bước: Bước kết nối và bước tỉa.

Bước kết nối:

Để tìm Lk tập k mục ứng cử đƣợc sinh ra bởi việc kết nối Lk-1 với chính nó.

Giả sử L1 và L2 là các mục trong Lk-1, ký hiệu Li[j] là mục thứ j trong Li. Bằng quy ƣớc, Apriori giả sử các mục trong tác vụ hoặc tập mục có trật tự từ điển. Nối Lk-1

Lk-1 đƣợcthực hiện nhƣ sau: Các thành phần của Lk-1 là đƣợc kết nối nếu (k-2), mục đầu tiên là chung. Tức là 2 mục L1và L2 của Lk-1 đƣợc kết nối với nhau nếu

L1 [1] = L2[1] L1[2] = L2[2] ... L1 [k-2] = L2 [k-2] L1 [k-1] = L2 [k-1]

 Dãy kết nối L1[1] L1[2] … L1[k-2] L1[k-1] L2[k-1]

Bước tỉa:

Quét cơ sở dữ liệu và tập Ck để lấy ra tập mục phổ biến đƣa vào Lk. Các ứng cử đƣợc tính độ hỗ trợ không nhỏ hơn ngƣỡng hỗ trợ cực tiểu minsup là tập phổ biến đƣợc xác định. Tính chất Apriori đƣợc sử dụng nhƣ sau: Bất kỳ tập (k-1) mục nào không phổ biến không thể là tập con của tập k mục phổ biến. Do đó, nếu bất kỳ tập con (k-1) mục của ứng cử k mục mà không có mặt trong Lk-1 thì ứng cử đó không thể là phổ biến và do vậy loại bỏ nó khỏi Ck, kiểm tra tập con (k-1) này có thể làm nhanh bởi duy trì một cây băm của tất cả các tập mục phổ biến đã tìm thấy.

Thuật toán Apriori: Tìm tập mục phổ biến dựa trên cơ sở sinh các ứng cử.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

Input: Cơ sở dữ liệu D, ngƣỡng độ hỗ trợ cực tiểu minsup.

Output: L, tập mục phổ biến trong D.

Phương pháp

(1) Tìm tập mục phổ biến, nhận đƣợc L1. (2) For (k = 2; Lk-2  ỉ; k++) {

(3) Ck = apriori_gen (Lk-1,minsup);// sinh tập ứng cử từ Lk-1 (4) For (mỗi tác vụ trong D) {// quét D để đếm

(5) Ct = subset (Ck, t);// lấy tập con của t mà là các ứng cử trong Ck (6) For (Mỗi ứng cử c  Ct)

(7) c.count ++;// tăng đếm cho c một đơn vị.

(8) }

(9) Lk = {c  Ck /c.count  minnsup};

(10) }

(11) Return L = k Lk ; Thủ tục sinh các ứng cử Ck

Procedure apriori _gen (Lk-1: Tập phổ biến (k-1) mục; minsup: Độ hỗ trợ cực tiểu).

(1) For mỗi mục I1  Lk-1 (2) For mỗi mục I2  Lk-1 {

(3) If (I1[1] = I2[1]  I1[2] = I2[2] ...I1[k-2] = I2[k-2] I1[k-1] = I2[k-1]) then

(4) c = I1 I2; // bước nối I1 và I2 sinh ra các ứng cử c (5) If has_ infrequent _ subset (c, Lk-1) then

(6) Xóa c; // bước tỉa (7) Else thêm c vào Ck (8) }

(9) Return Ck;

Kết quả của thuật toán Apriori là tập L = L1  L2  …  Lk. Và với c  L đóng vai trò nhƣ X  Y của luật kết hợp X  Y.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

Một phần của tài liệu Khai phá luật kết hợp mờ và ứng dụng (Trang 27 - 30)

Tải bản đầy đủ (PDF)

(77 trang)