Bài 0 · Học trước tiên

Nền tảng: đọc dữ liệu theo chiều dọc

Trước khi học năm thuật toán, ta cần nắm năm ý: bảng giao dịch dạng dọc, danh sách giao dịch của một mặt hàng, độ phổ biến, danh sách khác biệt, và sự phân biệt giữa ba loại tập phổ biến. Tất cả đều rất đơn giản, chỉ là cách nhìn.

1. Bảng dạng ngang và bảng dạng dọc

Bảng dạng ngang là cách ta quen nhìn: mỗi dòng là một giao dịch, liệt kê những mặt hàng được mua trong giao dịch đó. Bảng dạng dọc thì nhìn ngược lại: với mỗi mặt hàng, ta ghi ra nó xuất hiện trong những giao dịch nào. Cái danh sách giao dịch đó gọi là danh sách giao dịch của mặt hàng (tài liệu tiếng Anh gọi là tidset).

Năm thuật toán chúng ta học đều làm việc trên bảng dạng dọc, vì khi đó việc tính độ phổ biến chỉ là đếm xem một danh sách có bao nhiêu giao dịch, còn việc mở rộng một tập chỉ là tìm phần chung của hai danh sách.

Dạng ngang

Giao dịchCác mặt hàng
1A C T W
2C D W
3A C T W
4A C D W
5A C D T W
6C D T

Dạng dọc

Mặt hàngCó mặt ở các giao dịchĐộ phổ biến
A1, 3, 4, 5bốn
C1, 2, 3, 4, 5, 6sáu
D2, 4, 5, 6bốn
T1, 3, 5, 6bốn
W1, 2, 3, 4, 5năm

Ngưỡng phổ biến tối thiểu trong toàn bộ tài liệu là ba. Cả năm mặt hàng đều có mặt ở từ bốn giao dịch trở lên nên đều phổ biến.

2. Độ phổ biến và phần chung của hai danh sách

Độ phổ biến của một tập mặt hàng là số giao dịch có chứa đủ tất cả các mặt hàng trong tập đó. Để tìm danh sách giao dịch của một tập gồm hai mặt hàng, ta lấy phần chung của hai danh sách thành phần, tức là những giao dịch xuất hiện ở cả hai. Đếm phần chung đó được bao nhiêu thì đó chính là độ phổ biến.

Ví dụ: tính độ phổ biến của tập gồm C và W.

Mặt hàng C có mặt ở các giao dịch 1, 2, 3, 4, 5 và 6. Mặt hàng W có mặt ở các giao dịch 1, 2, 3, 4 và 5. Những giao dịch nào có cả C lẫn W? Đó là 1, 2, 3, 4 và 5, vì giao dịch 6 chỉ có C chứ không có W. Như vậy tập CW có mặt ở năm giao dịch, nghĩa là độ phổ biến của nó bằng năm. Vì năm lớn hơn ngưỡng ba nên CW là một tập phổ biến.

3. Eclat — gom nhóm theo phần đầu chung

Eclat là thuật toán gốc mà mọi thuật toán còn lại dựa vào. Ý tưởng của nó là: những tập có chung phần đầu (vài mặt hàng đứng trước giống nhau) được gom vào cùng một nhóm. Trong mỗi nhóm, ta lần lượt ghép từng cặp thành viên với nhau để tạo ra tập dài hơn, rồi lấy phần chung của hai danh sách giao dịch để biết độ phổ biến. Tập nào còn đủ phổ biến thì giữ lại và đào sâu tiếp; tập nào không đủ thì bỏ.

Nói cách khác, Eclat đi theo chiều sâu: cứ mở rộng dần một nhánh cho tới khi không còn mở rộng được nữa, rồi mới quay lại nhánh khác.

4. Danh sách khác biệt — ý tưởng của các bản "d"

Khi danh sách giao dịch dài, lưu trọn cả danh sách rất tốn công. Người ta nghĩ ra cách lưu gọn hơn, gọi là danh sách khác biệt (tiếng Anh là diffset). Thay vì ghi lại toàn bộ giao dịch của một tập, ta chỉ ghi phần chênh lệch giữa tập đó và phần đầu của nó.

Cụ thể, danh sách khác biệt của một tập là những giao dịch có trong phần đầu nhưng lại vắng mặt trong tập. Và có một điều rất tiện: độ phổ biến của tập bằng độ phổ biến của phần đầu trừ đi số giao dịch trong danh sách khác biệt đó. Nghĩa là khi danh sách khác biệt càng ngắn thì tập càng phổ biến.

Khi ghép hai thành viên cùng nhóm để tạo tập dài hơn, ta cũng không cần dò lại danh sách giao dịch. Quy tắc là: lấy danh sách khác biệt của thành viên đứng sau, bỏ đi những giao dịch đã có trong danh sách khác biệt của thành viên đứng trước; phần còn lại chính là danh sách khác biệt của tập mới. Độ phổ biến của tập mới thì bằng độ phổ biến của thành viên đứng trước trừ đi số giao dịch vừa tìm được.

Một mẹo thực hành: khi làm tay, ở mức một (từng mặt hàng riêng lẻ) ta vẫn giữ danh sách giao dịch bình thường; chỉ bắt đầu chuyển sang danh sách khác biệt từ mức hai (khi ghép hai mặt hàng) trở đi. Lúc đó phần đầu là một mặt hàng, nên danh sách khác biệt chính là những giao dịch có ở mặt hàng đầu mà không có ở mặt hàng sau.

Ví dụ ở mức hai: tìm danh sách khác biệt và độ phổ biến của tập AT, với phần đầu là A.

A có mặt ở các giao dịch 1, 3, 4 và 5. T có mặt ở các giao dịch 1, 3, 5 và 6. Danh sách khác biệt của AT là những giao dịch có A nhưng vắng T: trong số 1, 3, 4, 5 thì giao dịch 4 không có T, còn 1, 3, 5 đều có cả hai. Vậy danh sách khác biệt chỉ gồm một giao dịch là 4. Độ phổ biến của A vốn là bốn, trừ đi một giao dịch khác biệt, còn lại ba. Vì ba bằng đúng ngưỡng nên AT vẫn là tập phổ biến.

Ví dụ ở mức ba: ghép AT với AW để được ATW, phần đầu vẫn là A.

Trước hết, danh sách khác biệt của AW gồm những giao dịch có A mà vắng W: A ở các giao dịch 1, 3, 4, 5, mà cả bốn giao dịch này đều có W, nên danh sách khác biệt của AW rỗng, không có giao dịch nào. Danh sách khác biệt của AT thì gồm giao dịch 4 như đã tính. Bây giờ ghép hai thành viên: ta lấy danh sách khác biệt của thành viên sau là AW (đang rỗng) rồi bỏ đi những giao dịch đã có trong danh sách khác biệt của thành viên trước là AT. Vì AW vốn đã rỗng nên kết quả vẫn rỗng. Độ phổ biến của ATW bằng độ phổ biến của AT là ba, trừ đi không, vẫn là ba.

Nhận xét đáng nhớ: khi danh sách khác biệt rỗng, tập con và tập ghép có cùng độ phổ biến, nghĩa là chúng luôn xuất hiện cùng nhau. Đây chính là dấu hiệu cho biết tập con chưa phải là tập "đóng".

5. Ba loại tập phổ biến: tất cả, đóng, tối đại

Cùng một bảng dữ liệu, ta có thể quan tâm tới ba mức độ khác nhau.

Tất cả tập phổ biến

Mọi tập có độ phổ biến đạt ngưỡng. Đây là tập đông nhất, gồm cả những tập trùng lặp thông tin.

Tập đóng — việc của Charm

Là tập phổ biến mà không có tập cha trực tiếp nào cùng độ phổ biến với nó. Lưu các tập đóng là đủ để suy ra độ phổ biến của mọi tập con, nên không mất thông tin.

Tập tối đại — việc của GenMax

Là tập phổ biến mà mọi tập cha của nó đều không còn phổ biến. Đây là cách lưu gọn nhất, nhưng không giữ lại được độ phổ biến của từng tập con.

Quan hệ giữa ba loại: mọi tập tối đại đều là tập đóng, và mọi tập đóng đều là tập phổ biến. Càng đi về phía tối đại thì danh sách càng ngắn nhưng càng ít thông tin. Với bảng dữ liệu của chúng ta, ngưỡng bằng ba, kết quả ba loại như sau:

Có tất cả mười chín tập phổ biến, gồm: năm tập một mặt hàng là A, C, D, T, W; tám tập hai mặt hàng là AC, AT, AW, CD, CT, CW, DW, TW; năm tập ba mặt hàng là ACT, ACW, ATW, CDW, CTW; và một tập bốn mặt hàng là ACTW.

Trong số đó có bảy tập đóng: C với độ phổ biến sáu, CW với độ phổ biến năm, ACW với độ phổ biến bốn, CD với độ phổ biến bốn, CT với độ phổ biến bốn, CDW với độ phổ biến ba, và ACTW với độ phổ biến ba.

Và chỉ có hai tập tối đại: ACTW và CDW, cả hai cùng có độ phổ biến ba.

Một ví dụ để hiểu: mặt hàng A không phải là tập đóng, bởi vì AC, AW và ACW đều cùng có độ phổ biến bốn giống A; tập đại diện đóng cho cả nhóm này là ACW.