Khai phá luật kết hợp là công việc phát hiện ra (tìm ra, khám phá, phát hiện) các luật kết hợp thỏa mãn các ngưỡng độ hỗ trợ () và ngưỡng độ tin cậy () cho trước. Bài toán khai phá luật kết hợp được chia thành hai bài toán nhỏ, hay như người ta thường nói, việc giải bài toán trải qua hai pha:
Pha 1: Tìm tất cả các tập phổ biến (tìm FI) trong CSDL T.
Pha 2: Sử dụng tập FI tìm được ở pha 1 để sinh ra các luật tin cậy (interesting rules). Ý tưởng chung là nếu gọi ABCD và AB là các tập mục phổ biến, thì chúng ta có thể xác định luật AB CD với tỷ lệ độ tin cậy:
conf = sup p( ) sup p( )
ABCD AB
Nếu conf minconf thì luật được giữ lại (và thỏa mãn độ hỗ trợ tối thiểu vì ABCD là phổ biến).
Trong thực tế, hầu hết thời gian của quá trình khai thác luật kết hợp là thực hiện ở pha 1. Nhưng khi có những mẫu rất dài (mẫu chứa nhiều mục) xuất hiện trong dữ liệu, việc sinh ra toàn bộ các tập phổ biến hay các tập đóng là không thực tế.
Có rất nhiều nghiên cứu về các phương pháp sinh tất cả các tập phổ biến và tập phổ biến lớn nhất một cách có hiệu quả. Khi các mẫu phổ biến (frequent patterm) dài có từ 15 đến 20 items) thì tập tập mục phổ biến, thậm chí cả tập đóng trở nên rất lớn và hầu hết các phương pháp truyền thống phải đếm quá nhiều tập mục mới có thể thực hiện được. Các thuật toán dựa trên thuật toán Apriori - đếm tất cả 2k
tập con của mỗi k- itemsets mà chúng quét qua, và do đó không thích hợp với các itemsets dài được. Các phương pháp khác sử dụng “lookaheads” để giảm số lượng tập mục được đếm. Tuy nhiên, hầu hết các thuật toán này đều sử dụng tìm kiếm theo chiều rộng, ví dụ: tìm tất cả các k - itemsets trước khi tính đến các (k+1) - itemsets.
Cách làm này hạn chế hiệu quả của lookaheads, vì các mẫu phổ biến dài hơn mà hữu ích vẫn chưa được tìm ra.
Thuật toán 1 - Thuật toán cơ bản:
Input: I, D, ,
Output: Các luật kết hợp thỏa mãn ngưỡng độ hỗ trợ , ngưỡng độ tin
cậy .
Algorithm:
1) Tìm tất cả các tập hợp các tính chất có độ hỗ trợ không nhỏ hơn ngưỡng .
2) Từ các tập hợp mới tìm ra, tạo ra các luật kết hợp có độ tin cậy không nhỏ hơn .
Ví dụ minh họa: Xét 4 mặt hàng (tính chất) trong một cửa hàng thực phẩm với CSDL các giao dịch thuộc loại nhỏ, chỉ có 4 giao dịch (giỏ mua hàng), cho trong các bảng sau:
Bảng 2.1. Giao dịch mua hàng Giao dịch Mua hàng gì? T1 Bánh mì, Bơ, Trứng T2 Bơ, Trứng, Sữa T3 Bơ T4 Bánh mì, Bơ
Cho trước 2 ngưỡng = 40% và = 60% Ta tính độ hỗ trợ của các tập hợp các tính chất. Bảng 2.2. Tính độ hỗ trợ cho các tập hợp chứa các mặt hàng Tập hợp Tập các bản ghi Tỷ lệ Độ hỗ trợ Vƣợt ngƣỡng độ hỗ trợ 40% Bánh mì {1,4} 2/4 50% Đúng Bơ {1,2,3,4} 4/4 100% Đúng Trứng {1,2} 2/4 50% Đúng Sữa {2} 1/4 25% Sai Bánh mì, Bơ {1,4} 2/4 50% Đúng Bánh mì, Trứng {1} 1/4 25% Sai Bánh mì, Sữa {} 0/4 0% Sai Bơ, Trứng {1,2} 2/4 50% Đúng
Bơ, Sữa {2} 1/4 25% Sai
Trứng, Sữa {2} 1/4 25% Sai
Bánh mì, Bơ, Trứng {1} 1/4 25% Sai Bánh mì, Bơ, Sữa {} 0/4 0% Sai Bánh mì, Trứng, Sữa {} 0/4 0% Sai
Bơ, Trứng, Sữa {2} 1/4 25% Sai
Bảng 2.3. Các luật kết hợp và độ tin cậy của chúng
Luật kết hợp Tỷ lệ Độ tin cậy Vƣợt ngƣỡng độ tin cậy 60%
Bánh mì Bơ 2/4 50% Sai Bơ Bánh mì 2/2 100% Đúng Bơ Trứng 2/2 100% Đúng Trứng Bơ 2/4 50% Sai
Agrawal đã chỉ ra việc duyệt các tập hợp các tính chất để tính ra ngưỡng độ hỗ trợ của chúng và đánh giá có vượt ngưỡng cho trước hay không, tốn rất nhiều thời gian tính toán (độ phức tạp hàm mũ). Còn một khi đã xác định xong các tập hợp thỏa mãn điều kiện trên (gọi là các tập hợp xuất hiện thường xuyên) thì việc khai phá luật kết hợp đỡ tốn thời gian hơn. Agrawal đề nghị một thuật toán như sau.
Thuật toán 2 - Tìm luật kết hợp khi đã biết các tập hợp thƣờng xuyên:
Input: I, D, , , S
Output: Các luật kết hợp thỏa mãn ngưỡng độ hỗ trợ , ngưỡng độ tin cậy .
Algorithm:
1)Lấy ra một tập xuất hiện -thường xuyên S S, và một tập con X S. 2)Xét luật kết hợp có dạng X (S X), đánh giá độ tin cậy của nó xem
có nhỏ hơn hay không.
Thực chất, tập hợp S mà ta xét đóng vai trò của tập hợp giao S = X Y, và do X (S - X) = , nên coi như Y= S - X.
Các thuật toán xoay quanh khai phá luật kết hợp chủ yếu nêu ra các giải pháp để đẩy nhanh việc thực hiện mục 1 của Thuật toán 1. Chương sau ta điểm qua một số thuật toán.