Thuật toán SETM

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 43 - 45)

Thuật toán do Houtsma đề nghị năm 1995. Thuật toán này cũng sử dụng kỹ thuật bổ sung dần dần từng phần tử (từ tập hợp 1 phần tử) nhằm tìm kiếm các tập hợp ứng cử viên. Một cải tiến đáng kể là Thuật toán đề nghị lưu lại cả ID của giao dịch cùng với tập hợp ứng cử viên. Agrawal đã chỉ ra, Thuật toán này không những không có phương án quản lý bộ nhớ mà nó còn giả định

nhét toàn bộ tập hợp ứng cử viên của bước trước vào bộ nhớ để bước sau tiện bề sử dụng. Sarawagi đã chỉ ra Thuật toán này không hiệu quả.

Tƣ tƣởng thuật toán:

Thuật toán SETM được đề xuất do mong muốn sử dụng SQL để tìm các tập mục phổ biến. Đầu tiên, duyệt toàn bộ CSDL để tìm tất cả các tập mục của phổ biến L1 và tất cả các tập mục phổ biến cùng với TID của nó L1’ được xếp theo TID [9].

Tiếp theo chừng nào Lk-1! =  (k2)

- Tìm tập các ứng viên bằng cách duyệ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 mục có trong giao dịch và xác định các mục cùng với TIP trong tổ hợp này có thuộc L’k-1 ? Nếu không phải thì bỏ qua. Ngược lại, ta bổ sung tập đó vào tập ứng viên đồng thời lưu một bản sao của tập mục ứng cử viên cùng với TID của nó.

- Sắp xếp lại các ứng viên theo tập mục.

- Xóa tất cả các ứng viên có độ hỗ trợ nhỏ hơn độ hỗ trợ mà người sử dụng yêu cầu. Kết quả lưu vào Lk’.

- Xếp lại Lk’ theo TID.

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 SETM:

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. L1’={các tập mục phổ biến cùng các TID của nó được sắp xếp theo TID};

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

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

6. Lt = (l L’k-1 | l.TID = t.TID); // các tập có (k - l) mục phổ biến trong giao dịch t

7. forall các tập mục phổ biến lt Lt do begin

8. Ct = tăng lt thêm một mục có trong giao dịch t; //Các ứng cử viên có trong t

9. C’k +={<t.TID, c>| c  Ct}; 10.end

11.end

12.Sort C’k theo các tập mục;

13.delete các mục c  C’k có c.count<minsup đưa vào L’k ;

14. Lk ={<l.itemset, countof l in L’k > | l Lk'}; //kết hợp với bước 13 15.Sort L’k theo TID;

16.end

17.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 43 - 45)