Cho CSDL bao gồm:
Tập các danh mục I={i1, i2, …, in}, tập các giao dịch D = {T:T ⊆ I} và tập mục X ⊆ I. Nói rằng, một giao dịch TD hỗ trợ cho một tập X I nếu nó chứa tất cả các item của X, nghĩa là X T, trong một số trường hợp người ta dùng ký hiệu T(X) để chỉ tập các giao dịch hỗ trợ cho X. Ký hiệu support(X) (hoặc sup(X), s(X)) là tỷ lệ phần trăm của các giao dịch hỗ trợ X trên tổng số các giao dịch trong D, nghĩa là: sup(X) = D T X D T | }| { | 2.1.2. Tập phổ biến Định nghĩa:
Tập X ⊆ I được gọi là tập phổ biến nếu sup(X) ≥ minsup, với minsup là giá trị do người dùng chỉ định.
Các tính chất của tập phổ biến:
Tính chất 1: Độ hỗ trợ của một tập con lớn hơn tập cha.
Cho hai tập mục X, Y nếu XY thì sup(X) ≥ sup(Y) vì tất cả các giao dịch của D hỗ trợ Y thì cũng hỗ trợ X.
Tính chất 2: Mọi tập cha của tập mục không phổ biến đều là tập mục
không phổ biến.
Nếu một mục trong X không có độ hỗ trợ tối thiểu trên D nghĩa là sup(X) < minsup thì một tập cha Y của X sẽ không phải là một tập mục phổ biến vì sup(Y) ≤ sup(X) < minsup.
Tính chất 3: Mọi tập con của tập mục phổ biến đều là tập mục phổ biến.
Nếu mục Y là mục phổ biến trên D, nghĩa là sup(Y) ≥ minsup thì mọi tập con X của Y(X) là tập phổ biến trên D vì sup(X) ≥ sup(Y) > minsup.
Trong đó tính “Tính chất 3” được gọi là tính chất Apriori, tính chất này là cơ sở để rút gọn không gian tìm kiếm các tập mục phổ biến.
2.1.3. Luật kết hợp
Định nghĩa:
Một luật kết hợp có dạng R: X=>Y, trong X, Y là tập các mục, X, Y I và X∩Y=Ø. X được gọi là tiền tố và Y được gọi là hậu tố của luật.
Luật kết hợp được đặc trưng bởi:
Độ hỗ trợ của luật
sup(X ⇒ Y) = sup(X∪Y)
Độ tin cậy của luật
conf(X=>Y) = p(YI|XI)=
) sup( ) sup( ) ( T) X T ( X Y X T X p Y p
Tuy nhiên, không phải bất cứ luật kết hợp nào có mặt trong tập các luật có thể được sinh ra cũng đều có ý nghĩa thực tế. Mà các luật đều phải thỏa mãn một ngưỡng hỗ trợ và tin cậy cụ thể (ngưỡng này do người khai phá luật kết hợp đặt ra). Nếu đồng thời sup(X ⇒ Y) ≥ minsup và conf(X ⇒ Y) ≥ minconf thì X ⇒ Y là luật mạnh hay luật có giá trị.
2.2. Phát biểu bài toán tìm luật kết hợp
Cho một tập các giao dịch D, bài toán phát hiện luật kết hợp là sinh ra tất cả các luật kết hợp mà có độ tin cậy conf lớn hơn độ tin cậy tối thiểu minconf và độ hỗ trợ sup lớn hơn độ hỗ trợ tối thiểu minsup tương ứng do người dùng xác định. Khai phá luật kết hợp được phân thành hai bài toán con:
Bài toán 1: Tìm tất cả các tập mục mà có độ hỗ trợ lớn hơn độ hỗ trợ tối
thiểu do người dùng xác định. Các tập mục thỏa mãn độ hỗ trợ tối thiểu được gọi là các tập mục phổ biến.
Bài toán 2: Dùng các tập mục phổ biến để sinh ra các luật có thể có rồi loại
bớt các luật có độ tin cậy thấp hơn độ tin cậy tối thiểu (mà người dùng cho trước) để còn lại tập luật có ý nghĩa (luật mạnh).
Ví dụ: Xét ví dụ trong giao dịch các mặt hàng được khách hàng mua tại siêu thị. Tập các mặt hàng (tập các mục) I = {Bánh mì, Bơ, Sữa, Trứng} và số giao dịch mua hàng là 4 giao dịch (|T|=4), trong đó T = {1, 2, 3, 4} ký hiệu là các TID.
TID Tập các mục trong giao dịch
1 Bánh mì, Bơ, Trứng 2 Bơ, Sữa, Trứng
3 Bơ
Từ bảng trên ta rút ra:
TT Tập các mục trong giao dịch Độ hỗ trợ tương ứng
1 (không có mặt hàng nào) 0/4 = 0% 2 Bánh mì 2/4 = 50% 3 Bơ 4/4 = 100% 4 Sữa 1/4 = 25% 5 Trứng 2/4 = 50% 6 Bánh mì, Bơ 2/4 = 50% 7 Bánh mì, Sữa 0/4 = 0% 8 Bánh mì, Trứng 0/4 = 0% 9 Bơ, Sữa 1/4 = 25% 10 Bơ, Trứng 2/4 = 50% 11 Sữa, Trứng 1/4 = 25% 12 Bánh mì, Bơ, Sữa 0/4 = 0% 13 Bánh mì, Bơ, Trứng 1/4 = 25% 14 Bánh mì, Sữa, Trứng 1/4 = 25% 15 Bơ, Sữa, Trứng 1/4 = 25% 16 Bánh mì, Bơ, Sữa, Trứng 0/4 = 0%
Với giá trị độ hỗ trợ tối thiểu minsup = 50% thì ta có các tập phổ biến sau:
TT Tập các tập mục phổ biến Độ hỗ trợ tương ứng 1 Bánh mì 50% 2 Bơ 100% 3 Trứng 50% 4 Bánh mì, Bơ 50% 5 Bơ, Trứng 50%
Nếu cho độ tin cậy tối thiểu minconf = 60% thì ta sẽ có các luật sau: TT Luật Độ hỗ trợ Thỏa mãn 1 Bánh mì Bơ 50%/50% = 100% Có 2 Bơ Bánh mì 50%/100% = 50% Không 3 Trứng Bơ 50%/100% = 50% Không 4 Bơ Trứng 50%/50% =100% Có
2.2. Một số hướng tiếp cận trong khai phá luật kết hợp
Lĩnh vực khai phá luật kết hợp cho đến nay đã được nghiên cứu và phát triển theo nhiều hướng khác nhau; nhằm cải tiến tốc độ thuật toán, hoặc tìm kiếm các luật có ý nghĩa hơn … sau đây xin nêu một số hướng chính hiện nay:
Luật kết hợp nhị phân (binary association rule hoặc boolean association rule): là hướng nghiên cứu đầu tiên của luật kết hợp. Hầu hết các nghiên cứu ở thời kỳ đầu về luật kết hợp đều liên quan đến luật kết hợp nhị phân. Trong dạng luật kết hợp này, các mục (thuộc tính) chỉ được quan tâm là có hay không xuất hiện trong giao tác của CSDL chứ không quan tâm về “mức độ” xuất hiện. Ví dụ: Trong hệ thống tính cước điện thoại thì việc gọi 10 cuộc điện thoại và 1 cuộc được xem là giống nhau. Thuật toán tiêu biểu nhất khai phá dạng luật này là thuật toán Apriori và các biến thể của nó. Đây là dạng luật đơn giản và các luật khác cũng có thể chuyển về dạng luật này nhờ một số phương pháp như rời rạc hóa, mờ hóa… Một ví dụ về dạng luật này: “gọi liên tỉnh = ‘yes’ AND gọi di động = ‘yes’ => gọi quốc tế =’yes’ AND gọi dịch vụ 108 = ‘yes’, với độ hỗ trợ 20%và độ tin cậy 80%.
Luật kết hợp có thuộc tính số và thuộc tính hạng mục (quantitative and categorical association rule): Các thuộc tính của các CSDL thực tế có kiểu rất đa dạng (nhị phân – binary, số - quantitative, hạng mục – categorical…). Để phát hiện luật kết hợp với các thuộc tính này, các nhà nghiên cứu đã đề xuất một số phương pháp rời rạc hóa nhằm chuyển dạng luật này về dạng nhị phân để có thể áp dụng các thuật toán đã có. Một ví dụ về dạng luật này “phương thức gọi” = ‘Tự động’ AND giờ gọi IN [’23:00:39..23:00:59’] AND thời gian đàm thoại IN [‘200..300’] => gọi liên tỉnh =’có’, với độ hỗ trợ là 23.53% và độ tin cậy là 80%”.
Luật kết hợp tiếp cận theo hướng tập thô (mining association rules base on rough set): Tìm kiếm luật kết hợp dựa trên lý thuyết tập thô.
Luật kết hợp nhiều (multi – level association rule): với cách tiếp cận theo luật này sẽ tìm kiếm thêm những luật dạng “mua máy tính PC => mua hệ điều hành AND mua phần mềm tiện ích văn phòng,…” thay vì chỉ những luật quá cụ thể như “mua máy tính IBM PC => mua hệ điều hành Microsoft Windows AND mua phần mềm tiện ích văn phòng Microsoft Office,..”. Như vậy dạng luật đầu là dạng luật tổng quát hóa của dạng luật sau và tổng quát theo nhiều mức khác nhau.
Luật kết hợp mờ (fuzzy association rule): với những hạn chế còn gặp phải trong quá trình rời rạc hóa các thuộc tính số (quantitative attributes), các nhà nghiên cứu đã đề xuất luật kết hợp mờ nhằm khắc phục các hạn chế trên và chuyển luật kết hợp về dạng tự nhiên hơn, gần gũi hơn với người sử dụng. Một ví dụ của dạng này là: “thuê bao tư nhân =’yes’ AND thời gian đàm thoại lớn AND cước nội tỉnh = ‘yes’ => cước không hợp lệ =’yes’, với độ hỗ trợ là 4% và độ tin cậy là 85%”. Trong luật trên, điều kiện thời gian đàm thoại lớn ở về trái của luật là một thuộc tính đã được mờ hóa.
Luật kết hợp với bảng giao tác phi nhị phân: nếu như luật kết hợp nhị phân chỉ quan tâm đến việc có hay là không có item trong một giao dịch thì với hướng tiếp cận này, việc cho số lượng vào trong các giao dịch làm biến đổi một số tính chất của tập mục nhị phân ban đầu, tuy vậy bài toán được đưa về gần với thực tiễn hơn. Ví dụ như trong một giao dịch bán hàng thì giao dịch bán 1000 chiếc bút giá trị hơn giao dịch bán 1 chiếc bút.
Luật kết hợp với thuộc tính được đánh trọng số (association rule with weighted items): trong thực tế, các thuộc tính trong CSDL không phải lúc nào cũng có vai trò như nhau. Có một số thuộc tính được chú trọng hơn và có mức độ quan trọng cao hơn các thuộc tính khác. Ví dụ khi khảo sát về doanh thu hàng tháng, thông tin về thời gian đàm thoại, vùng cước là quan trọng nhiều hơn so với thông tin về phương thức gọi… Trong quá trình tìm kiếm luật, chúng ta sẽ gán thời gian gọi, vùng cước các trọng số lớn hơn thuộc tính phương thức gọi. Đây là hướng nghiên cứu rất thú vị và đã được một số nhà nghiên cứu đề xuất cách giải quyết bài toán này. Với luật kết hợp có thuộc tính được đánh trọng số, chúng ta sẽ khai thác được những luật “hiếm” (tức là có độ hỗ trợ thấp nhưng có ý nghĩa đặc biệt hoặc mang rất nhiều ý nghĩa).
Khai thác luật kết hợp song song (parallel mining of association rules): Bên cạnh khai thác luật kết hợp tuần tự, các nhà làm tin học cũng tập trung nghiên cứu các thuật giải song song cho quá trình phát hiện luật kết hợp. Nhu cầu song song hóa và xử lý phân tán là cần thiết bởi kích thước dữ liệu ngày càng lớn đòi hỏi tốc độ xử lý cũng như dung lượng bộ nhớ của hệ thống phải được đảm bảo. Có rất nhiều thuật toán song song khác nhau đã đề xuất để có thể không phụ thuộc vào phần cứng. Bên cạnh những nghiên cứu về những biến thể của luật kết hợp, các nhà nghiên cứu còn chú trọng đề xuất những thuật toán nhằm tăng tốc độ quá trình tìm kiếm tập phổ biến từ CSDL.
Ngoài ra, còn một số phương pháp nghiên cứu khác về khai thác luật kết hợp như: khai thác luật kết hợp trực tuyến, khai thác luật kết hợp được kết nối trực tiếp đến các kho dữ liệu đa chiều (Multidimensional data, data warehouse) thông qua công nghệ OLAP (Online Analysis Processing), MOLAP (Multidimensional OLAP), ROLAP (Relational OLAP), ADO (Active X Data Object) for OLAP…
2.3. Một số thuật toán phát hiện luật kết hợp
Giai đoạn tìm tập phổ biến là một giai đoạn quan trọng và tốn thời gian nhất trong quá trình khai phá luật kết hợp. Do đó có rất nhiều nghiên cứu tập trung vào vấn đề này. Khá nhiều thuật toán tìm luật kết hợp đã được công bố như: Apriori, Apriorotid, Partition, FP-Tree, Eclat ... Dưới đây, tôi trình bày một số giải thuật tiêu biểu trong khai phá luật kết hợp nhị phân:
2.3.1. Thuật toán Apriori
2.3.1.1. Ý tưởng thuật toán Apriori
Với một tập dữ liệu có k tập mục (item) thì việc sinh ra 2k ứng viên là quá lớn. Có cách để làm giảm độ phức tạp tính toán trong việc tạo các tập mục phổ biến đó là làm giảm số lượng các tập mục ứng viên bằng cách sử dụng nguyên lý Apriori.
Nguyên lý Apriori. Một tập mục là phổ biến thì mọi tập con của nó là phổ biến. Ví dụ, như hình sau: nếu tập mục {c,d,e} là phổ biến thì tất cả các tập con của nó là phổ biến
Hình 2.1. Tính chất Apriori của tập mục phổ biến
Như vậy, một tập mục là không phổ biến thì mọi tập cha nó đều không phổ biến nên không cần sinh ra. Ví dụ, như hình sau: nếu tập mục {a,b} không phổ biến thì tất cả các tập cha của nó là không phổ biến
2.3.1.2. Thuật toán Apriori
Apriori là một giải thuật được Rakesh Agrawal, Tomasz Imielinski, Arun Swami đề xuất lần đầu vào năm 1994. Là thuật toán khai thác luật kết hợp đầu tiên, dựa trên nguyên lý tỉa Apriori, hoạt động theo quy tắc quy hoạch động.
Nội dung thuật toán Apriori qua 2 giai đoạn:
Tìm tập phổ biến
Sinh luật mạnh
a. Tìm tập phổ biến
Input: CSDL giao dịch D và minsup
Output: Tất cả các tập mục phổ biến của D (Frequent Itemsets)
Thuật toán được mô tả như sau: 1. k=1;
2. Fk = {i|iI({i})≥N x minsup}; {tìm tất cả các tập phổ biến 1- phần tử} 3. Repeat
4. k = k+1;
5. Ck = apriori_gen(Fk-1); (sinh các tập ứng viên k phần tử) 6. for each transaction tT do
7. Ct = subset(Ck, t); (tập các ứng viên chứa trong t) 8. for each candidate itemset c Ct do
9. (c) = (c)+1 (tăng độ hỗ trợ của tập mục c) 10. end for 11. end for 12. Fk = { c | c Ck (c)≥N x minsup}; (các tập phổ biến k-phần tử) 13. until Fk =; 14. Result = Fk Diễn giải:
Tìm F1 (tập mục phổ biến có độ dài 1) (bước 1, 2)
Sinh các tập mục ứng viên có độ dài k từ Fk-1 (tập mục phổ biến có độ dài k-1) theo nguyên lý Apriori (bước 4, 5)
Duyệt CSDL để tìm độ hỗ trợ của các tập mục ứng viên có độ dài k (từ bước 6 đến bước 11)
Kiểm tra các tập mục ứng viên độ dài k có độ hỗ trợ thỏa mãn minsup. Từ đó ta có Fk (tập mục phổ biến có độ dài k) (bước 12)
Lặp lại thuật toán cho đến khi không có tập mục phổ biến mới nào được sinh ra (bước 13)
Thủ tục apriori-gen(Fk-1) tại bước 5: sinh ra ứng viên mới có độ dài k từ tập mục phổ biến có độ dài k-1 tìm được trước đó theo phương pháp sau: Cho 2 tập mục phổ biến có độ dài k-1 là A={a1,a2,…,ak-1} và B={b1,b2,…,bk-1}. Kết hợp A với B sinh ra ứng viên mới nếu thỏa mãn điều kiện sau:
𝑎𝑖 = 𝑏𝑖(𝑓𝑜𝑟 𝑖 = 1,2, … , 𝑘 − 2)𝑎𝑛𝑑 𝑎𝑘−1 ≠ 𝑏𝑘−1
Nhận xét:
Nếu theo phương pháp tổ hợp thì số lượng tập mục phải xét là 2k nhưng khi sử dụng phương pháp Apriori thì chỉ những tập phổ biến ở mức k mới được dùng để sinh ứng viên ở mức k+1, và đã loại bỏ các tập mục mức k+1 có bất kỳ tập mục con mức k là không phổ biến.
b. Sinh luật mạnh
Input: Tập F gồm tất cả các tập mục phổ biến của D và ngưỡng minconf Output: Tất cả các luật mạnh thỏa mãn minconf
Thực hiện:
Với mỗi tập phổ biến f F, sinh ra các tập con s khác , và sinh luật s =>(f-z) (f-z) ≠. (chỉ chọn f là các tập phổ biến có từ 2 phần tử trở lên)
s =>(f-z) là luật mạnh nếu độ tin cậy của nó ≥ minconf.
2.3.1.3.Ví dụ minh họa thuật toán Apriori
Với D là cơ sở dữ liệu gồm 4 giao dịch (như hình sau), với tập mục = {A,B,C,D,E}; minsup=50% minsup = 2; minconf=80%
Hình 2.3. Ví dụ minh họa thuật toán Apriori
Giải thích
Bước 1: Tìm tập mục phổ biến có độ dài 1: Ta có F1= {A},{B},{C},{E} Loại bỏ {D} vì sup(D)=1 < minsup
Bước 2: Sinh tập ứng viên có độ dài 2: Ta có tập ứng viên là {A,B}, {A,C}, {A,E}, {B,C}, {B,E}, {C,E}
Bước 3: Duyệt CSDL tìm độ hỗ trợ của tập ứng viên có độ dài 2
Bước 4: Tìm tập mục phổ biến có độ dài 2: tập ứng viên độ dài 2 có độ hỗ trợ thỏa mãn minsup
Ta có F2 = {A,C},{B,C},{B,E},{C,E}
Loại bỏ {A,B} và {A,E} do độ hỗ trợ không thỏa mãn minsup
Bước 5: Sinh ứng viên có độ dài 3: ta có tập ứng viên là {B,C,E}
Loại bỏ {A,B,C} do có tập con {A,B} không phổ biến và loại bỏ {A,C,E} do có tập con {A,E} không phổ biến đều tuân theo nguyên lý Apriori
Bước 6 : Duyệt CSDL tìm độ hỗ trợ của tập ứng viên có độ dài 3
Bước 7: Tìm tập mục phổ biến có độ dài 3: tập ứng viên độ dài 3 có độ hỗ trợ thỏa mãn minsup. Ta có F3 = {B,C,E} Không sinh được tập ứng viên có độ dài 4 -> không tìm được F4-> thuật toán dừng.
Các tập mục phổ biến tìm thấy là : {A}, {B}, {C}, {E}, {A,C},