Phần lớn các nghiên cứu về luật kết hợp là về thuật toán phát hiện các luật kết hợp. Mỗi thuật toán có những đặc trưng khác nhau, sử dụng kỹ thuật khác nhau. Bảng sau đưa ra sự so sánh một số thuật toán.
Bảng so sánh các thuật toán
(m=|I| là số mục trong cơ sở dữ liệu )
Thuật toán Kỹ thuật Ý tưởng
Số lần duyệt CSDL.
Cấu trúc
dữ liệu Ưu điểm Nhược điểm
Apriori Dùng kĩ thuật tỉa. Bất kỳ tập con nào của một tập mục thường xuyên [15]. Sinh các ứng cử viên k_mục bằng kết nối các tập mục con k-1_mục lại với nhau.
Tỉa đi những tập mục ứng cử mà có ít nhất 1 tập mục con là không thường xuyên.
Tính độ hỗ trợ của các tập mục bằng cách duyệt qua cơ sở dữ liệu.
m+1 Dùng bảng băm
Thuật toán này là thuật toán phát hiện các luật kết hợp nhanh, là nền tảng cho hầu hết các thuật toán tìm luật kết hợp sau này. Trong trường hợp số mẫu dài, độ hỗ trợ cực tiểu thấp thì gặp phải 2 chi phí lớn: + Sinh ra một số lượng lớn các tập ứng cử viên.
+ Đòi hỏi nhiều lần duyệt cơ sở dữ liệu. aproiriTid Những tập
mục ứng
Mở rộng từ thuật toán Apriori.
Sinh các ứng cử viên k_mục bằng kết
m+1 Dùng bảng
Sử dụng tập C để lưu trữ các tập k_mục ở
nhất một tập con không thường xuyên. [16] nhau.
Tỉa đi những tập mục ứng cử viên mà có ít nhất 1 tập mục con là không thường xuyên.
Điểm mới là không dùng cơ sở dữ liệu cho việc tính độ hỗ trợ cho tập mục sau lần duyệt đầu tiên.
lần duyệt sau kích thước của cơ sở dữ liệu giảm dần do đó thời gian để tìm những tập mục thường xuyên nhanh hơn. Partition Phân hoạch không gian tìm kiếm ra n phần.
Đầu tiên chia cơ sở dữ liệu ra n phần cho phù hợp với bộ nhớ.
Tìm tập mục thường xuyên trong mỗi phần.
Hợp những tập mục thường xuyên trong mỗi phần đơn đó để tìm tập mục thường xuyên toàn cục. [18]
2 Bảng băm
Số lần duyệt cơ sở dữ liệu giảm và thu hẹp được không gian tìm kiếm nhờ phân hoạch ra thành những phần nhỏ.
Sampling Lấy mẫu ngẫu nhiên trong cơ sở dữ liệu
Ý tưởng cơ bản là lấy ngẫu nhiên một mẫu S trong D và đi tìm các tập mục thường xuyên trong S thay cho D. Dùng kỹ thuật sinh ứng cử viên của
2 Có thể sử dụng cho cơ sở dữ liệu lớn với độ hỗ trợ thấp.
thường xuyên. DHP (direct hashing and pruning) Dùng tập ứng cử viên để tìm tập mục thường xuyên.
Thuật toán này sinh tập ứng cử viên i- mục dựa vào kết nối 2 tập mục thường xuyên trong Li-1 . Thuật toán này sử dụng bảng băm để giảm số tập mục ứng cử viên.
Dựa vào bảng băm để tỉa kích thước của mỗi giao tác cũng như số giao tác trong cơ sở dữ liệu để giảm kích thước cơ sở dữ liệu cho lần lặp sau [7].
2 Sử dụng bảng băm.
Thuật toán chỉ duyệt toàn bộ cơ sở dữ liệu chỉ 2 lần đầu, còn những lần sau thì kích thước cơ sở dữ liệu giảm dần.
Giảm được số lượng ứng cử viên nhờ vào bảng băm.
Dựa vào bảng băm Carma [2] Duyệt qua cơ sở dữ liệu để sinh ra dàn
các tập mục bằng cách sinh ra những tập mục là con của giao tác, với mỗi giao tác đầu tiên là tăng bộ đếm số hỗ trợ của tập mục nếu là con của giao tác đó, sau đó tạo tập mục mới từ những con cháu trực tiếp của nó mà là tập mục thường xuyên và tỉa những phần tử trong dàn mà có độ hỗ trợ nhỏ hơn độ
2 Dùng bảng băm
Có thể thay đổi ngưỡng của độ hỗ trợ và độ tin cậy trong suốt quá trình tính toán mà không ảnh hưởng đến kết quả cuối cùng.
thứ i. Khi xây xong dàn thì tỉa đi những tập mục không thỏa ngưỡng hỗ trợ cho trước. Kết quả ta thu được dàn các tập mục thường xuyên. Close [13] Dùng tập mục đóng để xác định tập mục thường xuyên.
Thuật toán dựa vào tính chất kết nối Galois để xác định các tập mục đóng, từ các tập mục đóng xác định các tập mục đóng thường xuyên, từ tập mục đóng thường xuyên xác định tập mục thường xuyên.
Ý tưởng chính: duyệt từ dưới lên để xác định những phần tử sinh, tập mục thường xuyên nhỏ nhất quyết định là tập đóng thông qua toán tử bao đóng. - Tính toán bao đóng của tất cả những phần tử sinh vừa tìm thấy ở bước 1. Thực hiện tính toán bao đóng của một tập mục bằng cách giao tất cả các giao tác mà tập mục đó xuất hiện như là tập con.
Số lần duyệt qua cơ sở dữ liệu ít hơn so với thuật toán Apriori.
Tìm tập mục thường xuyên nhanh. Do tỉ lệ tập mục đóng ít hơn tập mục thường xuyên. Chỉ thực hiện tốt hơn Apriori ở giá trị hỗ trợ thấp, còn độ hỗ trợ cao thì ngược lại.
Từ những tập mục đóng xác định tập mục thường xuyên. Charm [12] Dùng tập mục đóng, kỹ thuật tỉa những nhánh không là tập đóng thường xuyên hay tập mục thường xuyên.
Thuật toán duyệt trên tất cả các nút của dàn để kiểm tra các nút con của nó có là tập mục thường xuyên hay không. Tất cả những tập mục không thường xuyên, những nhánh không phải là tập đóng đều bị tỉa. Nút con của một nút được tạo nên từ cách ghép các nút khác nhau cùng mức theo thứ tự từ điển.
Thuật toán tránh được việc tính toán để tìm tất cả các tập con có thể của tập đóng trong khi đi tìm các tập mục đóng, hiệu quả hơn chiếc lược tiếp cận từ dưới lên (bottom – up). Hạn chế được số tập mục ứng cử. Giảm đáng kể việc sinh các luật không phù hợp. FP_Growth [5] Không sinh ứng cử viên mà dùng cây mẫu thường
Xây dựng cây mẫu thường xuyên dùng để nén dữ liệu. Đầu tiên tính độ hỗ trợ của mỗi mục trong cơ sở dữ liệu, bỏ đi những mục không thường xuyên. Từ những mục thường xuyên xây dựng cây mẫu thường xuyên. Mỗi nút được gán
2 Dùng cấu trúc FP-tree làm cho kích thước dữ liệu những lần duyệt sau nhỏ dần.
dùng để nén dữ liệu.
trợ của mục i.
Dùng phương pháp khai phá phát triển, xuất phát từ mẫu thường xuyên độ dài 1 (1 mục, trên 1 nút) tìm tập mục phổ biến bằng cách tìm đường đi từ gốc đến nút đó (chỉ xem xét những mẫu phụ thuộc).
cử viên.
Dùng kỹ thuật tìm kiếm phân hoạch không gian tìm kiếm để phân rã nhiệm vụ khai phá thành những nhiệm vụ nhỏ hơn và giới hạn lại các mẫu làm giảm không gian tìm kiếm. Tree
projection [17].
Dùng cấu trúc thứ bậc của cây thứ tự để chiếu những giao tác vào mỗi nút. Mỗi nút thể hiện mẫu thường xuyên, dùng ma trận đếm trên tập những giao tác được giới hạn để tìm những tập mục thường xuyên.
Thuật toán này hiệu quả trên mọi tình trạng của dữ liệu thưa hay dày, tổng hợp.
Kết luận chương 2
Trong chương này trình bày những khái niệm cơ bản về khai phá luật kết hợp, tập mục thường xuyên, tập đóng, mô tả bài toán, mô tả dữ liệu. Một số thuật toán tiêu biểu về khai phá luật kết hợp: thuật toán kinh điển Apriori tìm các tập mục thường xuyên bằng cách sinh các ứng cử, thuật toán FP- GROWTH khai phá tập mục thường xuyên không sinh ứng cử mà khai phá từng đoạn trên cây mẫu FP-Tree, thuật toán Charm khai phá tập mục thường xuyên đóng bằng các duyệt trên cả không gian tập mục và tập định danh để tìm các tập mục thường xuyên đóng, bỏ qua nhiều mức để tìm các tập thường xuyên một cách nhanh chóng và làm giảm số lượng các tập mục thường xuyên một cách đáng kể.
Đánh giá độ phức tạp của thuật toán đã đưa về bài toán tìm các clique lưỡng phân. Độ phức tạp của bài toán clique lưỡng phân là thuộc lớp NP_đầy đủ. Như vậy độ phức tạp của thuật toán tìm tập mục thường xuyên cũng là NP-đầy đủ, song thời gian tìm các tập mục thường xuyên là tuyến tính với kích thước của cơ sở dữ liệu trong trường hợp cơ sở dữ liệu thưa và kích thước tập mục ngắn. Trong chương này cũng tổng kết và so sánh một số thuật toán khai phá luật kết hợp được phát triển trong thời gian gần đây.
CÀI ĐẶT VÀ THỬ NGHIỆM
Chương này trình bày kết quả xây dựng chương trình thử nghiệm khai phá luật kết hợp dựa trên thuật toán Apriori và thuật toán Charm đã trình bày trong chương 2. Chương trình thử nghiệm trên các tệp cơ sở dữ liệu nhị phân CSC.db và Mushroom.db. Dữ liệu được lấy từ www.cs.umb.edu/~laur/ARtool.