thuộc tính số lƣợng.
Việc rời rạc hoá các thuộc tính số lượng được thực hiện trước khi khai phá, với các giá trị số được thay thế bởi các miền (range). Các thuộc tính categorical cũng có thể được khái quát hoá thành những khái niệm cao hơn nếu cần.
Dữ liệu bài toán được biến đổi để có thể được lưu trữ ở dạng khối dữ liệu (data cube). Các data cube rất phù hợp cho việc khai phá luật kết hợp đa chiều. Data cube là một mạng các khối lập phương (cuboid), cuboid là một cấu trúc dữ liệu đa chiều. Những cấu trúc dữ liệu này có thể chứa dữ liệu bài toán đã cho, cũng như kết tâp, nhóm thông tin. Ví dụ như hình 2.11 là một mạng các cuboid xác định một data cube cho các chiều age, income và buys. Các ô của cuboid n - chiều được sử dụng để lưu trữ support count cho các tập n – predicate. Cuboid cơ sở kết tập dữ liệu bài toán theo age, income và buys; 2-D cuboid (ví dụ: age, income ) kết tập theo age, income. 0 – D cuboid chứa tổng số giao dịch trong bài toán đã cho.
Hình 2.11: Mạng cuboids tạo thành một data cube 3D
0
(age) (income) (Buys)
(income, buys) (age, buys)
(age, income, buys) (age, income)
0 – D cuboid
1 – D cuboids
2 – D cuboids
30
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.4.3. Khai phá luật kết hợp số lƣợng
Luật kết hợp số lượng là luật kết hợp đa chiều với những thuộc tính số lượng được rời rạc hoá trong quá trình khai phá nhằm thoả mãn một số tiêu chuẩn như cực đại hoá độ tin cậy của các luật khai phá. Trong phần này, chúng tôi chỉ tập trung vào việc làm thế nào để khai phá những luật kết hợp số lượng có hai thuộc tính số lượng bên trái luật và một thuộc tính categorical bên phải luật. Chẳng hạn, Aqu an 1 Aquan2 Acat. Trong đó, Aquan1 và Aquan2 là xét trên các miền thuộc tính categorical. Những luật như vậy được gọi là luật kết hợp số lượng hai chiều.
Ví dụ: age (X, “30…39”) income (X, “42K…48K”) buys (X, “high resolutionTV”
(12)
Để khai phá các luật dạng này chúng ta dùng phương pháp ARCS (Association Rule Clustering System) xuất phát từ ý tưởng của việc xử lý ảnh..
Về cơ bản, phương pháp này là ánh xạ các cặp của hai thuộc tính số lượng lên một lưới 2 chiều đối với những bộ thoả điều kiện thuộc tính categorical đã cho. Sau đó, lưới này được sử dụng để tìm các nhóm điểm và nó tự sinh ra các luật.
Các bƣớc thực hiện phƣơng pháp ARCS [8]:
Bước 1 – Bining: Để giảm kích thước của các lưới, chúng ta chia miền giá trị
của các thuộc tính số lượng ra thành nhiều khoảng (interval), các khoảng này là động. Tức là, chúng có thể được kết hợp lại sau này trong quá trình khai phá. Quá trình phân chia được gọi là binning, các khoảng được gọi là các bin. Ba chiến lược bining chung là:
- Equiwidth binning: Kích thước khoảng cách của mỗi bin là bằng nhau. - Equidepth binning: Số bộ trong mỗi bin là gần bằng nhau.
- Homogeneity - base binning: Kích thước của mỗi bin được xác định sao cho các bộ trong các bin được phân bố đều nhau.
ARCS sử dụng phương pháp Equiwidth binning, với kích thước bin của mỗi thuộc tính số lượng được nhập vào bởi người dùng. Với mỗi lớp của thộc tính categorical, chúng ta tạo một mảng hai chiều để thể hiện sự kết hợp của hai thuộc tính số lượng. Mỗi ô của mảng chứa tần số phân bố của hai thuộc tính số lượng đối
31
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ới mỗi lớp của thuộc tính categorical, chúng ta tạo một mảng hai chiều thể hiện sự kết hợp của hai thuộc tính số lượng đối với mỗi lớp của thuộc tính categorical.
Bước 2 – Tìm những tập frequent predicate: Ngay khi, mảng hai chiều chứa
tần số phân bố được thiết lập, nó được quét để tìm các tập frequent predicate. Sau đó, các luật kết hợp mạnh có thể sinh ra bằng cách sử dụng thuật toán ở trên.
Bước 3 – Nhóm các luật kết hợp: Những luật kết hợp đạt được ở bước 2
được ánh xạ vào lưới hai chiều. Ví dụ như hình 2.12 là một lưới hai chiều do các luật kết hợp số lượng hai chiều với điều kiện buys (X, “high resolution TV”) ở bên phải của luật, các thuộc tính số lượng cho trước age và income. Bốn ô được đánh chéo là tương ứng cho 4 luật.
age(X, 34) income (X, “31K…40K”) buys (X, “high resolution TV”) (13)
age(X, 35) income (X, “31K…40K”) buys (X, “high resolution TV”) (14)
age(X, 34) income (X, “41K…50K”) buys (X, “high resolution TV”) (15)
age(X, 35) income (X, “41K…50K”) buys (X, “high resolution TV”) (16) Bốn luật này có thể được nhóm lại với nhau để có một luật đơn giản hơn là:
age(X, 34…35) income (X, “31K…50K”) buys (X, “high resolution TV”) (17)
Hình 2.12 2.4.4. Khai phá luật kết hợp dựa vào khoảng cách
Trong phần trước, chúng tôi đã đề cập cách khai phá luật kết hợp số lượng với các thuộc tính số lượng được rời rạc hoá động. Tuy nhiên, cách tiếp cận này có thể không đáp ứng được ngữ nghĩa của khoảng cách. Chẳng hạn như bảng 2.3, ta thấy sự phân chia dựa trên khoảng cách dường như là thích hợp nhất, vì nó nhóm những
71K…80K 61K…70K 51K…60K 41K…50K 31K…40K 21K…30K <= 20K 32 33 34 35 36 37 38 age income
32
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
giá trị gần nhau thành một khoảng. Trong khi đó, phương pháp Equidepth thì nhóm những giá trị cách xa nhau thành một nhóm (ví dụ [22, 50]). Phương pháp Equiwidth có thể tách các giá trị gần nhau ra và tạo những khoảng không có dữ liệu.
Price ($) Equiwidth (width $10) Equidepth (depth 2) Distance - Based 7 20 22 50 51 53 [0, 10] [11, 20] [21, 30] [31, 40] [41, 50] [51, 60] [7, 20] [22, 50] [51, 53] [7, 7] [20, 22] [50, 53] Bảng 2.3
Điều này tạo động cơ cho việc khai phá các luật kết hợp dưa vào khoảngcách. Thuật toán khai phá các luật dạng này có hai giai đoạn [8]:
Giai đoạn 1: Hình thành các nhóm (cluster).
Đặt S[X] là một tập có N bộ t1, t2,…, tN được chiếu trên tập thuộc tính X. Đường kính S[X] là khoảng cách từng đôi trung bình (average pairwise distance) giữa các bộ được chiếu trên X. Các độ đo khoảng cách có thể sử dụng là khoảng cách Euclidean và Manhattan.
Cho 2 bộ t1 (x11, x12, …, x1m) và t2 (x21, x22, .., x2m), khoảng cách Euclidean giữa là d(t1, t2) = m i i i x x 1 2 2 1 , khoảng cách Manhattan d(t1, t2) = m i i i x x 1 2 1 .
Đường kính của S[X] càng nhỏ thì các bộ này càng gần nhau hơn khi chiếu trên tập X.
Nhóm Cx là tập các bộ được xác định trên tập X và những bộ này phải thoả ngưỡng mật độ (density threshold), ngưỡng tần số (số tối thiểu các bộ).
Giai đoạn 2: Phối hợp các nhóm để tạo thành các luật kết hợp dựa vào khoảng cách.
Xét luật đơn giản dạng CX CY. Giả sử X là tập thuộc tính {age} và Y là các tập thuộc tính {income}. Chúng ta muốn khẳng định luật CX CY là mạnh, tức là
33
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 chiếu những bộ của CX trên tập thuộc tính Y, thì những giá trị của nó trên Y nằm trong phạm vi CY. Gọi Cx[Y] là chiếu CX trên thuộc tính Y. Do đó, khoảng cách giữa Cx[Y] vàCY[Y] phải là nhỏ. Khoảng cách giữa Cx[Y] vàCY[Y] càng nhỏ thì mức độ kết hợp giữa CX và CY càng mạnh. Mức độ kết hợp có thể xác định bằng những cách dùng những độ thống kê chuẩn như khoảng cách Manhattan trọng tâm (Centriod Manhattan distance), trong đó trọng tâm của một nhóm thể hiện độ trung bình của nhóm.
Tổng quát: Xét luật dạng CX CX2 … CXx CY1 CY2 …. CYy với Xi Yj ( i, j),
luật này được gọi là mạnh nếu nó thoả mãn 3 điều kiện: 1. Các Cxi là được kết hợp mạnh tương ứng với mỗi CYj 2. Các Cxi xuất hiện đồng thời với nhau.
3. Các CYi xuất hiện đồng thời với nhau.
Chú ý: Mức độ kết hợp chính là độ tin cậy và ngưỡng mật độ là sự hỗn hợp ở những luật kết hợp không dựa trên khoảng cách.
34
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
CHƢƠNG 3
MỘT SỐ THUẬT TOÁN KHAI PHÁ LUẬT KẾT HỢP
Theo [4, 5, 8] bài toán khai phá luật kết hợp được tách thành hai bài toán con: tìm các frequent itemset, sử dụng các frequent itemset để sinh luật kết hợp. Trong chương này, chúng tôi sẽ trình bày các thuật toán khám phá frequent itemset như: AIS, SETM, Apriori, AprioriTID và AprioriHybrid. Tiếp đó sẽ trình bày các thuật toán sinh luật kết hợp. Thuật toán DHP và PHP cùng việc so sánh thuật toán trên cũng được đề cập ở đây.
3.1. Khám phá các frequent itemset
Các thuật toán khám phá frequent itemset tạo ra nhiều lần quét dữ liệu [5, 8]. Trong lần quét thứ nhất, chúng tìm support count cho các item và xác định frequent item. Trong mỗi bước quét dữ liệu tiếp theo, chúng sủ dụng tập frequent itemset được tìm thấy để sinh ra tập itemset ứng cử viên và xác định tập các itemset ứng cử viên là frequent itemset. Quá trình này thực hiện cho đến khi không còn thấy frequent itemset nào nữa.
Thuật toán Apriori và AprioriTID về cơ bản là khác với thuật toán SETM trong việc sinh và đếm các itemset ứng cử viên. Trong thuật toán AIS và SETM, các itemset ứng cử viên được sinh ra ngay sau khi dữ liệu được đọc. Cụ thể, sau khi một giao T, AIS và SETM xác định các frequent itemset được tìm thấy ở trước đó hiện diện trong T và sinh ra các itemset ứng cử viên mới bằng cách mở rộng các frequent itemset này với các item khác trong t.
3.1.1. Thuật toán AIS
Với Thuật toán AIS, các itemset ứng cử viên được sinh ra và đếm ngay khi CSDL được quét [5, 15]. Sau khi đọc một giao dịch T, AIS xác định xem các itemset frequent nào ở bước quét trước đó được chứa trong giao dịch này. Các itemset ứng cử viên mới được sinh ra bằng cách mở rộng các frequent itemset này với item khác trong giao dịch. Frequent itemset l được mở rộng chỉ với những item là frequent và theo sau l trong giao dịch T sẽ được thêm vào tập các itemset ứng cử
35
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
viên và được duy trì đối với bước quét hoặc tăng support count của nó lên một nếu nó đã tạo được ra ở các giao dịch trước đó.
Thuật toán AIS
Input: Cơ sở dữ liệu D, min_sup_count.
Output: L tập các frequent itemset trong D 1. L1={frequent 1-itemset};
2. For (k=2; Lk-1; k++) do begin
3. Ck;
4. forall transactions T D do begin
5. Lt = subset (Lk-1, T) // Frequent itemset contained in T 6. forall frequent itemset lTLT do begin
7. CT=1 – extensions of lT contained in T;
8. forall candiadates cCTdo
9. if (c Ck) then
Add 1 to the count of c in the corresponding entry in Ck
else
Add c to Ck with a count of 1;
10. end
11. end
12. Lk = {c Ck c.count min_sup_count}; 13. end
14. Return L= UkLk;
3.1.2. Thuật toán SETM
Động cơ của thuật toán SETM là mong muốn sử dụng SQL để tìm các frequent itemset [5, 15]. Gọi Ck Lk là tập itemset các ứng cử viên (frequent itemset) mà các TID của các giao dịch sinh ra để kết hợp với những itemset. Mỗi thành viên tập này có dạng:<TID, itemset>.
36
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
Giống như thuật toán AIS, thuật toán SETM cũng sinh ra các ứng cử viên ngay lúc giao dịch được đọc từ CSDL. Do vậy nó sinh ra và đếm mỗi itemset ứng cử viên mà thuật toán AIS sinh ra. Tuy nhiên, để dùng phép toán kết nối (Join) chuẩn SQL, thuật toán SETM tách việc sinh ứng cử viên ra khỏi việc đếm. SETM lưu bản sao của itemset ứng cử viên cùng với TID của giao dịch sinh ra nó trong một cấu trúc tuần tự (bước 9). Cuối mỗi bước quét, việc tính support count của các itemset ứng viên được xác định bằng cách sắp xếp (bước 12) và kết tập lại cấu trúc tuần tự này.
SETM ghi nhớ các TID của các giao dịch sinh ra cùng với các itemset ứng cử viên. Để tránh việc thao tác trên tập con, nó dùng thông tin này để xác định các frequent itemset được chứa trong giao dịch được đọc (bước 6). Lk Ck và Lk thu được bằng cách xoá các ứng cử viên không có độ hỗ trợ tối thiểu (bước 13). Giả sử rằng CSDL được sắp xếp theo thứ tự TID, SETM có thể dễ dàng tìm các frequent itemset được chứa trong một giao dịch tiếp theo bằng việc sắp xếp Lk theo TID (bước 15). Thực vậy, nó cần thăm viếng mỗi thành viên của Lk chỉ một lần theo thứ tự TID và việc sinh ứng cử viên ở các bước (5 đến 11) có thể thực hiện bằng việc sử dụng phép toán merge – join quan hệ.
Nhược điểm của phương pháp này chính là kích thước của các tập ứng cử viên
k
C . Đối với mỗi itemset ứng cử viên, tập ứng cử viên có số giao dịch bằng số phần tử mà có sự hiện diện của itemset này. Hơn nữa, khi chúng ta chuẩn bị tìm support count cho các itemset ứng cử viên ở cuối mỗi bước, Ck không còn đúng thứ tự nữa và nó cần được sắp xếp lại theo các itemset (bước 12). Sau khi đếm và tỉa bỏ số nhỏ các itemset ứng cử viên không thoả độ tối thiểu, tập kết quả Lk cần sắp xếp lại theo TID trước khi nó có thể được sử dụng cho việc sinh các ứng cử viên ở bước tiếp theo.
37
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 SETM
Input: Cơ sở dữ liệu D, min_sup_count.
Output: L tập các frequent itemset trong D 1. L1={frequent 1-itemset};
2. L1 ={< TID, frequent 1-itemset>}// nó được sắp xếp theo TID 3. For (k=2; Lk-1; k++) do begin
4. Ck = ;
5 forall transactions T D do begin
6. LT = {l Lk1 l.TID}; // Frequent (k-1)- itemset contained in T
7. forall frequent itemsets lT LT do begin
8. CT = 1– extensions of lT contained in t;//Candidates contained in T
9. Ck + = {< T.TID, c>c CT};
10. end
11. end
12. Sort Ck on itemsets;
13. Delete all itemsets c Ck for which c.count < min_sup_count giving Lk
;
14. Lk = {< l.itemset, count of l in Lk > l Lk }; // combined with step 13. 15. Sort Lk on TID;
16. end
17. Return L= UkLk;
Ví dụ: Tìm các tập frequent itemset bằng thuật toán SETM với
38
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
TID Items 100 1 3 4 200 2 3 5 300 1 2 3 5 400 2 5 Itemset Support {1} 2 {2} 3 {3} 3 {5} 3 Itemset Support {1 3} 2 {2 3} 2 {2 5} 3 {3 5} 2 Cơ sở dữ liệu L1 TID Itemsets 100 {1 3} 100 {1 4} 100 {3 4} 200 {2 3} 200 {2 5} 200 {3 5} 300 {1 2} 300 {1 3} 300 {1 5} 300 {2 3} 300 {2 5} 300 {3 5} 400 {2 5} TID Itemsets 100 {1} 100 {3} 200 {2} 200 {3} 200 {5} 300 {1} 300 {2} 300 {3} 300 {5} 400 {2} 400 {5} C2 L1 L2 Hình 3.1a
39
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
3.1.3. Thuật toán Apriori [4, 5, 8, 15]
Input: Cơ sở dữ liệu D; min_sup_count.
Output: L tập các frequent itemset trong D 1. L1={frequent items};
2. For (k=2; Lk-1; k++) do begin
3. Ck=apriori_gen (Lk-1, min_sup_count); 4. for eachtransactions T D do begin
5. CT = subset (Ck, T) // Các candidate được chứa trong T 6. for each candidate c CT do
7. c.count++; 8. end 9. Lk={c Ckc.count min_sup_count}; 10. end Return L = UkLk; Hình 3.1b C4 TID Itemsets 100 {1 3} 200 {2 3} 200 {2 5} 200 {3 5} 300 {1 3} 300 {2 3} 300 {2 5} 300 {3 5} 400 {2 5} TID Itemsets 100 {1 3 4} 200 {2 3 5} 300 {1 2 5} 300 {1 3 5} 300 {2 3 5} Itemset Support {2 3 5} 2 L3 L4 = L4 = TID Itemset 300 {1 2 3 5} TID Itemset 200 { 2 3 5} 300 { 2 3 5} C3 L2 L3 Hình 3.1b
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
3.1.3.1. Hàm Apriori_gen
Hàm Apriori_gen thực hiện hai công việc: kết nối và cắt tỉa. Công việc kết nối là kết nối Lk-1 với Lk-1 để có tập ứng cử viên tiềm năng . Công việc tỉa dựa vào