CHƯƠNG 3 KHAI THÁC LUẬT KẾT HỢP KHÔNG DƯ THỪA
3.3.1 Thủ tục tìm luật
Định nghĩa kích thước luật: Một luật X → Y có kích thước p * q nếu | X | = p và | Y | = q. Ví dụ, kích thước của {a} → {e,f} là 1 * 2. Hơn nữa, chúng ta nói rằng kích thước của một luật p*q là lớn hơn so với kích thước của luật r*s nếu p> r và q ≥ s, hoặc nếu p ≥ r và q> s. Một luật kết hợp r là hợp lệ nếu sup(r) ≥ minsup và conf (r) ≥ minconf.
Thủ tục tìm luật nhận tham số là một cơ sở dữ liệu giao dịch, một số nguyên k và ngƣỡng minconf. Thủ tục này đầu tiên đặt một biến cục bộ minsup có giá trị bằng 0 để đảm bảo rằng tất cả các luật top-k đƣợc tìm thấy. Sau đó, thủ tục bắt đầu tìm kiếm các luật. Ngay sau khi một luật đƣợc tìm thấy, nó đƣợc thêm vào một danh sách các luật L và được sắp theo chiều tăng dần của độ hỗ trợ. Danh sách này sử dụng để lưu top-k các luật được tìm thấy cho đến khi tất cả các luật có độ hỗ trợ tương tự được tìm thấy. Khi k luật hợp lệ đƣợc tìm thấy trong L, biến cục bộ minsup đƣợc nâng lên bằng với độ hỗ trợ của luật với độ hỗ trợ thấp nhất trong L. Việc nâng giá trị minsup đƣợc sử dụng để hạn chế không gian tìm luật. Sau đó, mỗi khi một luật hợp lệ đƣợc tìm thấy, các luật đƣợc đƣa vào L, các luật trong L không thỏa minsup nữa đƣợc xóa khỏi L, và minsup đƣợc nâng lên độ hỗ trợ của các luật với độ hỗ trợ là thấp nhất trong L. Các thuật toán tiếp tục tìm kiếm luật cho đến khi không có luật nào đƣợc tìm thấy. Điều này có nghĩa rằng nó đã tìm thấy các top-k luật và các k luật này có độ hỗ trợ cao nhất trong L.
Để tìm kiếm các luật, thủ tục tìm kiếm đầu tiên quét cơ sở dữ liệu để xác định các mục đơn xuất hiện trong ít giao dịch nhất. Nó sử dụng các mục này để tạo ra các luật kích
thước 1*1 (có chứa một mục duy nhất trong các tiền đề và một mục duy nhất trong các kết quả). Sau đó, mỗi luật đƣợc đệ quy phát triển bằng cách thêm các mục vào tiền đề hoặc kết quả của nó. Để xác định các mục cần đƣợc bổ sung vào một luật, thủ tục tìm kiếm quét các giao dịch có chứa các luật để tìm các mục đơn mà có thể mở rộng bên trái hoặc bên phải của luật. Hai quá trình mở rộng cho các luật đƣợc đặt tên là mở rộng trái và mở rộng phải. Các quá trình này đƣợc áp dụng đệ quy để mở rộng không gian tìm kiếm của luật kết hợp. Mở rộng trái và phải đƣợc định nghĩa hình thức nhƣ sau: Một mở rộng trái là quá trình thêm một mục về phía bên trái của một luật X → Y để có đƣợc một luật lớn hơn X ∪ {i} → Y. Một mở rộng phải là quá trình thêm một mục về phía bên phải của một luật X → Y để có đƣợc một luật lớn hơn X → Y ∪ {i}.
Thủ tục tìm kiếm mô tả ở trên là đầy đủ và chính xác cho top-k khai thác luật kết hợp . Nó rất hiệu quả bởi vì các biến cục bộ minsup tăng lên trong khi tìm kiếm. Điều này cho phép cắt tỉa phần lớn của không gian tìm kiếm thay vì tạo ra tất cả các luật kết hợp.
Cắt tỉa này là có thể bởi vì độ hỗ trợ là đơn điệu liên quan đến mở rộng trái và phải.
Giải thích thủ tục tìm kiếm để tìm top-k luật không dƣ thừa:
Bây giờ chúng tôi giải thích chúng tôi đã điều chỉnh các thủ tục tìm kiếm trên nhƣ thế nào để thiết kế một thuật toán khai thác top-k luật không dƣ thừa hiệu quả. Những sửa đổi đƣợc dựa trên quan sát sau.
Tính chất 1: Trong việc tìm kiếm, nếu chỉ các luật không dƣ thừa đƣợc thêm vào L, sau đó L sẽ chứa top-k luật không dƣ thừa thì thủ tục tìm kiếm kết thúc. Lý do, Thủ tục tìm kiếm là chính xác và đầy đủ cho khai thác top-k luật kết hợp nếu chỉ các luật không dƣ thừa đƣợc thêm vào L thay vì cả hai nhóm luật dƣ thừa và không dƣ thừa. Kết quả sau đó sẽ là top-k luật kết hợp không dƣ thừa thay vì là top-k luật kết hợp.
Dựa trên quan sát này, chúng tôi đã sửa thủ tục tìm kiếm để đảm bảo rằng chỉ các luật không dƣ thừa đƣợc thêm vào L. Điều này có nghĩa là chúng ta phải đảm bảo rằng
mọi luật tìm thấy đều đƣợc thêm vào L nếu: sup (ra) ≥ minsup và ra là không dƣ thừa khi so sánh với các luật khác. Để xác định xem ra là không dƣ thừa đối với các luật khác, có hai trường hợp để xem xét.
Trường hợp thứ nhất: luật ra là dư thừa đối với một luật rb đã có trước luật ra. Theo định nghĩa của sự dƣ thừa (3.1.1), ra là dƣ thừa đối với rb khi sup (rb) = sup (ra), sup (ra) ≥ minsup, sup (rb) ≥ minsup, và rb L. Vì vậy, trường hợp đầu tiên có thể được phát hiện bằng cách thực hiện theo phương pháp sau:
Chiến lƣợc 1: Đối với mỗi luật ra đƣợc tạo ra mà sup (ra) ≥ minsup, nếu tồn tại rb L | sup(rb) = sup (ra) và ra là dƣ thừa đối với rb thì ra không đƣợc thêm vào L. Ngƣợc lại, ra đƣợc thêm vào L.
Trường hợp thứ hai: luật ra là dư thừa đối với một luật rb mà rb chưa được tạo ra.
Có hai cách mà chúng ta có thể cố gắng để phát hiện trường ra hợp này. Cách thứ nhất là hoãn việc bổ sung thêm luật ra vào L cho đến khi luật rb đƣợc tạo ra. Tuy nhiên, cách này sẽ không khả thi vì ta không biết đến khi nào sẽ có một luật rb sẽ làm cho ra dƣ thừa và vì vậy rb có thể xuất hiện muộn hơn nhiều sau khi có ra. Cách thứ hai là quét các giao dịch để xác định xem các sản ph m có thể đƣợc thêm vào ra để tạo một luật dƣ thừa đối với rb. Tuy nhiên, phương pháp này cũng không hiệu quả vì độ tin cậy là không đơn điệu đối với vế trái / phải của luật. Điều này có nghĩa là rb có thể chứa một số mặt hàng nhiều hơn ra. Vì vậy, nó sẽ rất tốn kém để kiểm tra mọi khả năng bổ sung thêm các mặt hàng vào ra để phát hiện trường hợp thứ hai.
Vì trường hợp thứ hai không hiệu quả, giải pháp của TNR là đề xuất một phương pháp tiếp cận gần đúng, phương pháp này đã được chứng minh là hiệu quả, có thể tạo ra kết quả chính xác nếu một số điều kiện nhất định được đáp ứng. Ý tưởng của phương pháp này là nhƣ sau: Mỗi luật ra đáp ứng yêu cầu của Chiến lƣợc 1 thì đƣợc thêm vào L mà không kiểm tra trường hợp thứ hai. Sau đó, cuối c ng, nếu một luật rb được tạo ra mà luật
ra vẫn còn trong L và luật ra đó là dƣ thừa đối với luật rb thì luật ra đƣợc lấy ra khỏi L. Ý tưởng này được chính thức hóa như chiến lược sau:
Chiến lƣợc 2 : Đối với mỗi luật rb đƣợc tạo ra mà sup(rb) ≥ minsup, nếu tồn tại ra L | sup(rb) = sup(ra) và ra là dƣ thừa so với rb thì ra đƣợc lấy ra khỏi L.
Khi sử dụng chiến lƣợc 2, thuật toán trở nên gần đúng. Lý do là mỗi luật ra đƣợc tìm thấy bởi chiến lƣợc 2 đã chiếm một vị trí trong tập L. Bởi sự hiện diện của nó trong L, luật ra có thể làm tăng biến minsup cục bộ. Nếu điều đó xảy ra, thuật toán có thể bỏ qua một số luật có độ hỗ trợ thấp hơn luật ra nhƣng không là luật dƣ thừa.
Khi thuật toán là gần đúng, chúng ta sẽ muốn cải tiến nó để có thể làm tăng khả năng cho ra kết quả là chính xác. Để đạt đƣợc điều này, chúng tôi đề xuất thêm một tham số mà chúng tôi đặt tên Δ, khi tăng một khoảng Δ số luật k sẽ khắc phục đƣợc việc nâng cao biến cục bộ minsup. Ví dụ, nếu người d ng đặt k = 1000 và Δ = 100, nó bây giờ sẽ đƣợc yêu cầu phải có k + Δ = 1100 luật trong tập L để nâng cao biến minsup cục bộ thay vì chỉ k = 1000. Điều này có nghĩa là có đến 100 luật dƣ thừa có thể c ng một lúc có trong L và kết quả vẫn sẽ là chính xác. Điều này đƣợc khẳng định bởi các tính chất sau:
Tính chất 2: Nếu số lƣợng các luật dƣ thừa trong L là không bao giờ nhiều hơn Δ luật, thì kết quả của thuật toán là chính xác và k luật trong L có độ hỗ trợ cao nhất sẽ là top-k luật không dƣ thừa. Lý do, nhƣ đã giải thích phía trên, sự nguy hiểm là có quá nhiều luật dƣ thừa trong L và nhƣ vậy sẽ buộc phải để nâng cao minsup và bớt đi một phần không gian tìm kiếm có chứa top-k luật không dƣ thừa. Nếu không có hơn Δ luật dƣ thừa c ng một lúc trong L và k + Δ là mức có thể nâng cao minsup, do vậy các luật dƣ thừa không thể làm nâng cao minsup hơn nữa.
Đề xuất trên đây là điều kiện để Chiến lƣợc 2 đảm bảo tạo ra một kết quả chính xác. Dựa trên đề xuất này, một câu hỏi quan trọng là "Nó có thể tích hợp một phép kiểm tra cho tính chính xác của thuật toán?". Câu trả lời là sẽ rất tốn kém để xác minh rằng không có nhiều hơn Δ luật dƣ thừa có mặt c ng một lúc trong L. Lý do là các luật chỉ
đƣợc biết đến là dƣ thừa khi chúng bị xóa bởi Chiến lƣợc 2. Do đó, việc kiểm tra tính chất 2 sẽ rất tốn kém.
Tính chất 3: Nếu số lƣợng luật dƣ thừa đƣợc loại bỏ bằng Chiến lƣợc 2 khi thực hiện thuật toán là nhỏ hơn hoặc bằng Δ, thì kết quả cuối c ng là chính xác. Khi đó các k luật đầu tiên của L sẽ là các luật không dƣ thừa. Lý do. Ta có thể dễ dàng thấy rằng, nếu tính chất 3 đúng thì tính chất 2 cũng đúng.
Tính chất 3 có thể thực hiện dễ dàng trong thuật toán. Để thực hiện chức năng này, chúng tôi đã thêm một biến đếm, biến này đƣợc tăng thêm 1 sau mỗi lần loại bỏ 1 luật từ tập L của Chiến lƣợc 2. Sau đó, khi thuật toán kết thúc, biến đếm đƣợc so sánh với Δ. Nếu giá trị biến đếm thấp hơn hoặc bằng Δ, người d ng được thông báo rằng kết quả là chính xác. Ngược lại, người d ng được thông báo rằng kết quả có thể không chính xác. Trong trường hợp này, người d ng có thể chọn để chạy lại các thuật toán với một giá trị Δ cao hơn. Trong phần thực nghiệm (chương 4), chúng tôi sẽ giải quyết các câu hỏi làm thế nào để chọn Δ.
Lưu ý rằng trong thuật toán của chúng tôi, chúng tôi đã sử dụng một số tối ưu đã được sử dụng trong TopKRules và tương thích với TNR. Tối ưu đầu tiên là cố gắng tìm ra các luật có triển vọng nhất khi không gian khai thác các luật kết hợp. Điều này là bởi vì các luật có độ hỗ trợ cao dễ tìm thấy hơn. Thuật toán có thể làm tăng biến cục bộ minsup nhanh hơn để nhằm giảm không gian tìm kiếm. Để thực hiện điều này, một biến cục bộ R được thêm vào để lưu trữ tất cả các luật để có thể mở rộng cơ hội tìm kiếm các luật có giá trị hơn. Tập R này sau đó đƣợc sử dụng để xác định các luật có giá trị với độ hỗ trợ cao để tăng biến minsup nhanh hơn nhằm giảm một phần lớn không gian tìm kiếm. Tối ƣu hóa thứ hai là sử dụng vectơ bit nhƣ một cấu trúc dữ liệu để biểu diễn tập hợp các giao dịch có chứa từng luật (tidsets). Tối ƣu hóa thứ ba là thực hiện cấu trúc dữ liệu cây nhị phân tìm kiếm cân bằng hỗ trợ chèn, xóa và tìm kiếm các phần tử nhỏ nhất, lớn nhất hiệu quả.