Thuật toán AIS

Một phần của tài liệu phát hiện luật kết hợp ứng dụng trong cơ sở dữ liệu quản lý sinh viên (Trang 42 - 43)

Thuật toán do Agrwal đề nghị năm 1993. Thuật toán này chú trọng khai phá luật kết hợp có dạng XY, với Y là tập hợp chỉ bao gồm 1 tính chất (tập hợp 1 phần tử). Thuật toán tìm cách xây dựng dần dần các tập ứng cử viên cho tập mục thường xuyên. Với cách đánh số thứ tự từ điển cho từng tính chất, việc bổ sung phần tử cho tập ứng cử viên tránh được trùng lặp, do vậy tiết kiệm tối đa thời gian tính toán.

Số lượng các tập ứng cử viên quá nhiều có thể gây ra hiện tượng tràn bộ nhớ. Thuật toán đề nghị một phương án quản lý bộ nhớ hợp lý đề phòng trường hợp này: không cho phép các ứng cử viên chiếm bộ nhớ, mà ghi thẳng

Ý tƣởng thuật toán AIS [6]

Đầu tiên duyệt toàn bộ CSDL để tìm tất cả các tập mục phổ biến L1. Tiếp theo, chừng nào Lk-1! = Ø (k2).

- Tìm tập các ứng viên bằng cách quét toàn bộ CSDL, với mỗi giao dịch ta tìm tổ hợp chập k của các tập mục có trong giao dịch và xác định các mục trong tổ hợp này có là phổ biến hay không? Nếu không thì bỏ qua. Ngược lại, ta bổ sung tổ hợp đó vào tập ứng viên bằng cách: Kiểm tra xem tổ hợp này đã có trong tổ hợp ứng viên hay chưa? Nếu chưa thì bổ sung thêm và tăng độ hỗ trợ lên 1. Ngược lại, tăng độ hỗ trợ của tổ hợp tương ứng trong tập ứng viên thêm 1.

- Duyệt toàn bộ các ứng viên, loại bỏ tất cả các tổ hợp có độ hỗ trợ nhỏ hơn độ hỗ trợ yêu cầu của người sử dụng.

Cuối cùng ta được tất cả các tập mục phổ biến thỏa mãn, có độ hỗ trợ tối thiểu lớn hơn hoặc bằng độ hỗ trợ tối thiểu mà người sử dụng yêu cầu.

Thuật toán sử dụng chiến lược “vét cạn”, xem xét toàn bộ các tập mục phổ biến bằng cách sinh tổ hợp tập các tập mục và kiểm tra độ hỗ trợ.

Thuật toán AIS:

Input: CSDL D, minsup

Output: Các tập mục phổ biến

1. L1 = { các tập mục phổ biến};

2. for (k=2; Luật kết hợpk-1 ; k++ ) do begin 3. Ck = ;

4. forall các giao dịch t  D do begin

5. Lt = Subset(Lk-1,t); // các tập mục phổ biến thuộc Lk-1 chứa trong giao dịch t

6. forall các tập mục phổ biến lt Lt B do begin 7. Ct = tăng thêm một mục có trong giao dịch t; 8. forall các ứng cử viên c  Ct do

9. if (c  Ck) then

add tăng biến đếm của c thêm 1 cho mục tương ứng của Ck else add c và Ck và tăng biến đếm tương ứng thêm 1;

10. End

11. Lk = { c  Ck | c.count  minsup} 12. End

13. Trả lời = k Lk ;

Một phần của tài liệu phát hiện luật kết hợp ứng dụng trong cơ sở dữ liệu quản lý sinh viên (Trang 42 - 43)