Cơ sở dữ liệu giao tác thƣờng đƣợc biểu diễn ở dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giao tác.
* Biểu diễn ngang: Cơ sở dữ liệu là một danh sách các giao tác. Mỗi giao tác có một định danh TID và một danh sách các mục dữ liệu trong giao tác đó.
Ví dụ 2.2: Giả sử có một bảng danh sách các mặt hàng trong cửa hàng bán văn phòng phẩm, mỗi mặt hàng đƣợc quy định bằng một số tự nhiên đƣợc đánh số từ 1. Bảng 2.1: Danh mục các tập mục trong CSDL ID Tên tập mục 1 Sách giáo khoa 2 Vở 3 Bút mực 4 Bút bi 5 Tẩy 6 Cặp sách 7 Thƣớc kẻ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Bảng 2.2: Biểu diễn ngang của CSDL giao tác.
TID Các mục dữ liệu giao tác
T1 2, 3, 7 T2 1, 2, 6, 7 T3 3, 4, 5, 6 T4 2, 4, 6 T5 2, 3, 7 T6 1,2, 6
Bảng 2.3: Biểu diễn dọc của CSDL giao tác.
Mục dữ liệu Định danh giao tác
1 T3, T6 2 T1, T2, T4, T5, T6 3 T1, T3, T5 4 T3, T4 5 T3 6 T2, T3.T4.T6 7 T1.T2.T5
*Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu, mỗi mục dữ liệu có một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu này.
*Ma trận giao tác: Cơ sở dữ liệu giao tác DB= T1,T2....,Tm trên tập các mục (item) I= i1,i2....,in đƣợc biểu diễn bởi ma trận nhị phân M= mpq mxn, ở đó: pq 1 khi 0 khi q p q p i T m i T
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Ví dụ 2.3: Xét cơ sở dữ liệu bảng 2.2 biểu diễn ở dạng ma trận giao tác, ở mỗi giao tác mục dữ liệu đó có hay không xuất hiện chỉ nhận 1 trong hai giá trị 0 hoặc 1, đƣợc biểu diễn nhƣ bảng 2.4:
Bảng 2.4: Ma trận giao tác của CSDL bảng 2.2 ID TID 1 2 3 4 5 6 7 T1 0 1 1 0 0 0 1 T2 1 1 0 0 0 1 1 T3 0 0 1 1 1 1 0 T4 0 1 0 1 0 1 0 T5 0 1 1 0 0 0 1 T6 1 1 0 0 0 1 0 2.2.3. Tập mục thƣờng xuyên
Định nghĩa 2.2: Cho tập mục X I. Ta gọi độ hỗ trợ (Support) của X
trong cơ sở dữ liệu giao tác DB, ký hiệu sup(X), là tỷ lệ phần trăm các giao tác chứa X trên tổng số các giao tác trong DB, tức là:
{ | }
sup(X) T DB T X
DB
Ta có: 0 ≤ sup(X) ≤ 1 với mọi tập mục XI.
Định nghĩa 2.3: Cho tập mục X I và ngƣỡng hỗ trợ tối thiểu
(minimum support) minsup 0,1 (đƣợc xác định trƣớc bởi ngƣời sử dụng).
X đƣợc gọi là tập mục thƣờng xuyên (frequent itemset hoặc large itemset) với
độ hỗ trợ tối thiểu minsup nếu sup(X ) minsup, ngƣợc lại X gọi là tập mục không thƣờng xuyên.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Một số tính chất của tập mục thường xuyên :
Cho cơ sở dữ liệu giao tác DB và ngƣỡng độ hỗ trợ tối thiểu minsup. Các tập mục thƣờng xuyên có các tính chất sau :
Tính chất 1: Giả sử X,Y I là hai tập mục với X Y thì sup(X) sup(Y)
Tính chất 2: Giả sử X, Y là hai tập mục, X,Y I, nếu Y là tập mục thƣờng xuyên và XY thì X cũng là tập mục thƣờng xuyên.
Thật vậy, nếu Y là tập mục thƣờng xuyên thì sup(Y) minsup, mọi tập mục X là con của tập mục Y đều là tập mục thƣờng xuyên trong cơ sở dữ liệu DB vì sup(X) sup(Y)
Tính chất 3: Giả sử X, Y là hai tập mục, X Y và X là tập mục không thƣờng xuyên thì Y cũng là tập mục không thƣờng xuyên.
2.2.4. Luật kết hợp
Định nghĩa 2.4: Một luật kết hợp là một biểu thức dạng XY, trong đó X, Y I, thỏa mãn điều kiện XY=. Tập X gọi là tiền đề, tập Y gọi là kết luận của luật.
Luật kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy.
2.2.5. Độ hỗ trợ và độ tin cậy của luật kết hợp
Định nghĩa 2.5: Độ hỗ trợ (Support) của một luật kết hợp( XY ), ký hiệu là Sup(XY), là độ hỗ trợ của tập mục XY, Sup(XY)= sup(XY).
Nhƣ vậy độ hỗ trợ của luật kết hợp ( XY ) chính là xác suất P(XY) của sự xuất hiện đồng thời của X và Y trong một giao tác.
Ta có: 0 Sup(XY) 1
Khi đó, một luật kết hợp trong tập giao tác DB với độ hỗ trợ s, thì s là
số phần trăm của các giao tác trong DB có chứa XY( chứa cả X và Y), độ hỗ trợ của luật có giá trị giữa 0 và 1.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Khi chúng ta nói rằng độ hỗ trợ của một luật là 50%, có nghĩa là có 50% tổng số bản ghi chứa XY. Nhƣ vậy, độ hỗ trợ mang ý nghĩa thống kê.
Trong một số trƣờng hợp, chúng ta chỉ quan tâm đến những luật có độ hỗ trợ cao. Nhƣng cũng có trƣờng hợp, mặc dù độ hỗ trợ của luật thấp, ta vẫn cần quan tâm (ví dụ luật kết hợp liên quan đến nguyên nhân gây ra sự ngừng đập của tim khi phẫu thuật của ngành y học).
Định nghĩa 2.6: Độ tin cậy (Confidence) của một luật X Y, ký hiệu conf (X Y), là tỷ lệ giữa số giao tác chứa X Y và số giao tác chứa X
trong cơ sở dữ liệu DB.
sup( ) conf( ) = sup( ) X Y X Y X
Độ tin cậy của luật kết hợp X Y chính là xác suất có điều kiện P(Y/X). { | } { | } sup( ) P( / ) { | } { | } sup( ) T DB X T Y T T DB X Y T X Y Y X T DB X T T DB X T X và ta có 0 conf(X Y) 1.
Nói rằng độ tin cậy của một luật là 80%, có nghĩa là có tới 80% số bản ghi chứa X chứa luôn cả Y.
Các luật thoả mãn cả hai ngƣỡng độ hỗ trợ tối thiểu (minsup) và độ tin cậy tối thiểu (minconf), tức thỏa mãn:
sup(X Y ) minsup và conf(X Y) minconf đƣợc gọi là luật kết hợp mạnh.
Các giá trị của độ hỗ trợ và độ tin cậy của luật đƣợc viết giữa 0% và 100% thay cho các giá trị 0 tới 1. Điều đó cho ta thấy rằng, độ tin cậy của luật thể hiện sự tƣơng quan (correlation) giữa X và Y.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
2.3. Khai phá luật kết hợp
Bài toán khai phá luật kết hợp có thể phát biểu nhƣ sau:
Cho cơ sở dữ liệu giao tác DB, ngƣỡng độ hỗ trợ tối thiểu minsup và ngƣỡng độ tin cậy tối thiểu minconf.
Yêu cầu: Tìm tất cả các luật kết hợp X→Y trên cơ sở dữ liệu DB sao cho sup(X→Y) ≥ minsup và conf(X→Y) ≥ minconf.
Khai phá luật kết hợp này đƣợc gọi là bài toán cơ bản hay bài toán nhị phân, vì ở đây, giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1 (xuất hiện hay không xuất hiện).
Bài toán khai phá luật kết hợp trong CSDL chia thành hai bài toán con: (1) Tìm tất cả các tập mục thƣờng xuyên: một tập mục là thƣờng xuyên đƣợc xác định qua tính độ hỗ trợ và thoả mãn độ hỗ trợ cực tiểu.
(2) Sinh ra các luật kết hợp từ các tập mục thƣờng xuyên đã tìm đƣợc thỏa mãn độ tin cậy tối thiểu cho trƣớc.
Khi khai phá luật kết hợp trong CSDL DB thì mọi khó khăn nằm ở bài toán thứ nhất là tìm tập mục thƣờng xuyên.
Ví dụ: Cho CSDL DB gồm 5 giao tác biểu diễn trong bảng 2.5. Bảng 2.5: Cơ sở dữ liệu DB TID Các mục dữ liệu T1 A, C, D T2 B, E T3 A, B, C, E T4 B, E T5 B, D, F
Độ hỗ trợ của các mục (hay tập mục chỉ gồm một mục) đƣợc minh hoạ trong bảng 2.6; Ở đây mục A xuất hiện trong hai giao tác T1 và T3 của CSDL DB ( đƣợc mô tả trong bảng 2.5) nên Sup(A)=2/5=40%.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Bảng 2.6: Độ hỗ trợ của các mục Mục Số giao tác Độ hỗ trợ sup(X) A 2 40% B 4 80% C 2 40% D 2 40% E 3 60% F 1 20%
Tƣơng tự, từ bảng 2.5 tính đƣợc độ hỗ trợ của một tập mục trong CSDL DB; ví dụ AB xuất hiện chỉ 1 lần trong giao tác T3, do đó độ hỗ trợ của tập mục này là 20%. Kết quả độ hỗ trợ của các tập mục biểu diễn trong bảng 2.7.
Bảng 2.7: Độ hỗ trợ của các tập mục Tập mục Số giao tác Độ hỗ trợ sup(X) A, C 2 40% A, B 1 20% B, D 1 20% C, D 1 20% A, B, C 1 20% A, B, E 1 20% A, C, D 1 20% B, D, F 1 20% A, B, C, E 1 20%
Tính độ tin cậy của một số luật kết hợp sinh ra từ các tập mục trong bảng 2.7. Ví dụ độ tin cậy 100% cho luật AC có nghĩa là trong mọi giao tác trong đó có A xuất hiện thì C cũng xuất hiện. Độ tin cậy của luật này đƣợc tính bằng cách chia số giao tác mà tập mục AC xuất hiện là 2 cho số giao tác
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
mà mục A xuất hiện trong bảng 2.5. kết quả độ tin cậy của các luật thể hiện qua bảng 2.8.
Bảng 2.8: Độ tin cậy của các luật
Luật kết hợp Độ tin cậy conf (X Y) A C 100% A B 50% B D 25% A, B C 100% A, C B 50% B, E A 33%
2.4. Các cách tiếp cận khai phá tập mục thƣờng xuyên
Bài toán khai phá tập mục thƣờng xuyên có thể chia thành hai bài toán nhỏ: tìm các tập mục ứng viên và tìm các tập mục thƣờng xuyên. Tập mục ứng viên là tập mục mà ta hy vọng nó là tập mục thƣờng xuyên, phải tính độ hỗ trợ của nó để kiểm tra. Tập mục thƣờng xuyên là tập mục có độ hỗ trợ lớn hơn hoặc bằng ngƣỡng hỗ trợ tối thiểu cho trƣớc. Ta có thể phân chúng theo hai tiêu chí sau :
- Phƣơng pháp duyệt qua không gian tìm kiếm. - Phƣơng pháp xác định độ hỗ trợ của tập mục.
Phƣơng pháp duyệt qua không gian tìm kiếm đƣợc phân làm hai cách : duyệt theo chiều rộng (Breadth First Search – BFS) và duyệt theo chiều sâu (Depth First Search – DFS).
Duyệt theo chiều rộng là duyệt qua cơ sở dữ liệu gốc để tính độ hỗ trợ của tất cả các tập mục ứng viên có (k-1) mục trƣớc khi tính độ hỗ trợ của các
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
tập mục ứng viên có k mục. Với cơ sở dữ liệu có n mục dữ liệu, lần lặp thứ k phải kiểm tra độ hỗ trợ của tất cả !
!( )! k n n C k n k tập mục ứng viên có k mục. Duyệt theo chiều sâu là duyệt qua cơ sở dữ liệu đã đƣợc chuyển đổi thành cấu trúc cây, quá trình duyệt gọi đệ quy theo chiều sâu của cây.
Với cơ sở dữ liệu có n mục dữ liệu, không gian tìm kiếm có tất cả 2n tập con, rõ ràng đây là bài toán NP khó, do vậy cần phải có phƣơng pháp duyệt thích hợp, tỉa nhanh các tập ứng viên.
Phƣơng pháp xác định độ hỗ trợ của tập mục X đƣợc chia làm hai cách : cách thứ nhất là đếm số giao tác chứa X trong cơ sở dữ liệu và cách thứ hai là tính phần giao của các tập chứa định danh của các giao tác chứa X.
Đã có rất nhiều thuật toán tìm tập mục thƣờng xuyên đƣợc công bố, ta có thể phân chúng theo theo hình 2.1 nhƣ sau:
Hình 2.1: Phân loại các thuật toán khai phá tập mục thƣờng xuyên.
2.5. Các thuật toán điển hình khai phá tập mục thƣờng xuyên
Phần tiếp sau mô tả chi tiết nội dung hai thuật toán tiêu biểu: Thuật toán Apriori tiêu biểu cho phƣơng pháp sinh ra các tập mục ứng viên và kiểm tra độ hỗ trợ của chúng; Thuật toán FP- Growth, đại diện cho phƣơng pháp
BFS DFS Đếm Giao Giao AIS Apriori Dic
Partition FP-growth Eclat
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
không sinh ra tập mục ứng viên, cơ sở dữ liệu đƣợc nén lên cấu trúc cây, sau đó khai phá bằng cách phát triển dần các mẫu trên cây này.
2.5.1 Thuật toán Apriori
Apriori là thuật toán khai phá tập mục thƣờng xuyên do R. Agrawal và R. Srikant đề xuất vào năm 1993. Thuật toán Apriori còn là nền tảng cho việc phát triển nhiều thuật toán khai phá tập mục thƣờng xuyên khác về sau.
Giả sử các mục dữ liệu trong mỗi giao tác đƣợc lƣu theo trật tự từ điển. Thuật toán sử dụng các ký hiệu sau đây:
Tập k mục Chức năng
Lk
Tập các k-tập mục thƣờng xuyên (với độ hỗ trợ tối thiểu minsup). Mỗi phần tử của tập này có 2 trƣờng:
i) Tập mục (itemsets) ii) Độ hỗ trợ (count)
Ck
Tập các k-tập mục ứng viên (các tập mục thƣờng xuyên tiềm năng). Mỗi phần tử của tập này có 2 trƣờng:
i) Tập mục (itemsets) ii) Độ hỗ trợ (count)
Ý tƣởng chính của thuật toán nhƣ sau: sinh ra các tập mục ứng viên từ các tập mục thƣờng xuyên ở bƣớc trƣớc, sử dụng kỹ thuật “tỉa” để bỏ đi những tập mục ứng viên không thoả mãn ngƣỡng hỗ trợ cho trƣớc. Cơ sở của kỹ thuật này là tính chất Apriori: Bất kỳ tập con nào của tập mục thƣờng xuyên cũng phải là tập mục thƣờng xuyên. Vì vậy các tập mục ứng viên gồm k mục có thể đƣợc sinh ra bằng cách kết nối các tập mục thƣờng xuyên có (k- 1) mục và loại bỏ tập mục ứng viên nếu nó có chứa bất kỳ một tập con nào không phải là thƣờng xuyên
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Thuật toán duyệt cơ sở dữ liệu nhiều lần. Mỗi lần duyệt, thuật toán thực hiện hai bƣớc: bƣớc kết nối và bƣớc tỉa. Trong lần lặp thứ k, thuật toán nối hai (k-1)-tập mục để sinh ra k-tập mục, sử dụng tính chất Apriori để tỉa các tập ứng viên. Bƣớc nối và bƣớc tỉa nhƣ sau:
* Bước kết nối (tìm Ck): Tập các k-tập mục ứng viên Ck đƣợc sinh ra bởi việc kết nối Lk-1 với chính nó. Hai tập mục L1 và L2 của Lk-1 đƣợc nối nếu chúng có (k-2) mục dữ liệu đầu bằng nhau , mục dữ liệu thứ (k-1) của L1 < L2: (L1[1] = L2[1])(L1[2] = L2[2]) …(L1[k-2] = L2[k-2]) (L1[k-1] < L2[k-1])
Dạng của tập mục nhận đƣợc bởi nối L1 và L2 là: L1[1] L2[2] … L1[k-2] L1[k-1] L2[k-1]
*Bước tỉa: Tập Ck chứa tập Lk, tức là tất cả các k-tập mục thƣờng xuyên đều thuộc tập Ck. Tập Ck có thể là rất lớn dẫn đến khối lƣợng tính toán lớn. Thuật toán áp dụng tính chất Apriori để rút gọn tập Ck. Nếu có một (k-1) - tập mục con nào đó của k- tập mục ứng viên mà không có mặt trong Lk-1 thì ứng viên đó không thể là thƣờng xuyên, có thể loại bỏ khỏi Ck. Việc kiểm tra các (k-1) - tập mục con có thể thực hiện nhanh bởi duy trì một cây băm của tất cả các tập mục thƣờng xuyên đã tìm thấy.
Thuật toán Apriori ( tìm các tập mục thƣờng xuyên) Input: Cơ sở dữ liệu DB, ngƣỡng độ hỗ trợ minsup
Output: Tập các tập mục thƣờng xuyên L trong DB Method:
(1)Tìm các 1-tập mục thƣờng xuyên, nhận đƣợc L1 ; (2) For (k=2; Lk-1≠; k++) do begin
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
(4) For (each T DB) do begin
(5) C= subset(Ck,T) ; // Các tập mục ứng viên chứa trong T (6) For (each c C)
(7) c.count++ ; // tăng số đếm c lên một đơn vị (8) end ;
(9) Lk = { c Ck / c.count ≥ minsup} ; (10) End;
(11) L=Lk;
Sinh các tập mục ứng viên của thuật toán Apriori: hàm Apriori_gen()
Function Apriori_gen() Input: Tập các (k-1)- tập mục thƣờng xuyên Lk-1 Output: Tập các k- tập mục ứng viên Ck Method: // Bước kết nối (1)For (each (k-1)-tập mục l1 Lk-1) do (2) For (each (k-1)-tập mục l2 Lk-1) do
(3) if (l1[1] = l2[1]) and (l1[2] = l2[2]) and ….. and (l1[k-2] = l2[k-2]) and (l1[k-1] < l2[k-1]) then (4) Ck { l1[1], l1[2], … l1[k-2],l1[k-1] l2[k-1]}; // kết nạp k-tập mục mới vào Ck
// Bước tỉa
(5)For (each ciCk) do
(6) If exist (s ci) and (sLk-1) then (7) delete ci from Ck;
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Ví dụ 2.4: minh hoạ thuật toán Apriori.
Ta minh họa thực hiện thuật toán Apriori trên cơ sở dữ liệu cho trong