Mục m: có tần suất xuất hiện là 3, có hai đường dẫn có chứa mục m là (f:4, c:3, a:3, m:2) và (f:4, c:3, a:3, b:1, m:1).
(Chúng ta không cần xét mục p vì tất cả các tập mục thường xuyên có chứa p đã được tìm thấy khi xử lí với mục p.)
Từ hai đường dẫn trên ta có 2 cơ sở mẫu phụ thuộc {( f:2, c:2, a:2), f:1, c:1, a:1, b:1)}. Khởi tạo cây điều kiện trên đó ta được một đường dẫn đơn <f:3, c:3, a:3> sau đó thực hiện khai phá đệ quy trên cây mẫu thường xuyên
FP-Tree tổng quát
cơ sở mẫu phụ thuộc của “cam “: (f:3) FP_Tree phụ thuộc của “cam”
cơ sở mẫu phụ thuộc của “cm “: (f:3) FP_Tree phụ thuộc của “cm”
Cơ sở mẫu phụ thuộc của “am “: (f:3, c:3) FP_Tree phụ thuộc của “am”
Root f:3 c:2 Root f:3 Root f:3 Root c:1 f:4 c:3 a:3 m:2 p:2 b:1 b:1 b:1 m:1 p:1 Cơ sở mẫu phụ thuộc của m (f:2, c:2, a:2) (f:1, c:1, a:1, b:1) Bảng tiêu đề
Mục Head of node link
f c a FP_Tree phụ thuộc của m Root f:3 c:2 a:2
này. Hình 2.9 thể hiện quá trình khai phá các mục thường xuyên. Bắt đầu thực hiện khai phá lần lượt với các nút có nhãn a, c, f thu được các tập mục thường am, cm, fm, tiếp đến thực hiện với mẫu thường xuyên (am:3) là <f:3, c:3 | am>, <f:3 | cm> thu được tập mục cam, fam, và fcm. Thực hiện với <f:3 | cam> được fcam. Như vậy với đường dẫn đơn thì kết quả khai phá có thể là tổ hợp của tất cả các mục trong đường dẫn.
Thuật toán 2.7 FP_growth
Procedure FP_growth(tree, )
{IF (cây chứa một đường đơn P)Then
For mỗi tổ hợp (kí hiệu ) của các nút trong
đường dẫn P Do
Sinh mẫu với Support= độ hỗ trợ nhỏ nhất của các nút trong
ELSE
For mỗi ai trong header của cây Do{ sinh mẫu = ai
support = ai.support
Tìm cơ sở mẫu phụ thuộc của và khởi tạo FP_Tree phụ thuộc Tree
IF Tree Then
FP_growth( Tree, )} }
Câu hỏi là thuật toán FP_growth hiệu quả như thế nào? Chỉ duyệt qua cơ sở dữ liệu 2 lần để xác định các mục thường xuyên và tạo FP_Tree. Nhờ sử dụng cấu trúc FP_Tree mà trong quá trình khai phá các mẫu thường xuyên
không cần phải duyệt lại cơ sở dữ liệu mà chỉ cần xuất phát từ các mục ai
trong bảng tiêu đề, sinh ra những cơ sở mẫu phụ thuộc, những ai đã được xử lý thì sẽ không xem xét trong khi xử lý các aj sau đó. Phân hoạch không gian tìm kiếm để thu nhỏ không gian tìm kiếm, dùng phương pháp chia để trị để phân rã ra thành những nhiệm vụ nhỏ tạo nên hiệu quả. Sắp xếp các mục giảm dần theo tần suất xuất hiện của các mục dẫn đến các mục thường xuyên hơn thì được chia sẻ nhiều hơn. Thuật toán phù hợp cho cả dữ liệu thưa, dày và mẫu dài. Đồng thời thuật toán cũng loại bỏ ngay những mục không phổ biến ngay từ đầu.
Độ phức tạp:
Độ phức tạp về thời gian:
Duyệt qua cơ sở dữ liệu 2 lần.
Thời gian xây dựng cây là O(n), trong đó n là số giao tác của cơ sở dữ liệu. Tức là tuyến tính với số giao tác.
Độ phức tạp về không gian: O(n), trong đó n là số giao tác của cơ sở dữ liệu. Độ cao của cây được giới hạn bởi giao tác có kích thước lớn nhất.
2.7. THUẬT TOÁN CHARM
Khai phá luật kết hợp mà tìm các tập mục thường xuyên bằng cách sinh các tập ứng cử viên đòi hỏi phải thực hiện tính toán nhiều và nhiều tập mục không thường xuyên. Sinh ra quá nhiều luật vượt quá sự kiểm soát của người khai phá hay người dùng, trong đó có nhiều luật không cần thiết. Trong phần này trình bày phương pháp khai phá tập mục thường xuyên mà không cần thiết phải khai phá hết tất cả các tập mục thường xuyên mà chỉ cần khai phá những tập mục thường xuyên đóng (Closed frequent Itemsets). Số lượng tập mục thường xuyên đóng này nhỏ hơn nhiều so với tất cả tập mục thường
xuyên. Hơn nữa, sinh các luật kết hợp từ các tập mục thường xuyên đóng thì làm giảm một lượng đáng kể các luật không cần thiết.
2.7.1. Tập mục thường xuyên đóng
Cho I là tập các mục, T = {1, 2, ..., n} là tập các định danh. Cơ sở dữ liệu nhị phân d IT. Với cơ sở dữ liệu này nếu mục I xuất hiện trong giao tác t chúng ta viết (i, t) d hoặc i d t.
Định nghĩa 2.7 Cho quan hệ nhị phân d IT là cơ sở dữ liệu vào cho khai phá luật kết hợp, với X I, Y T. Có ánh xạ:
t: I T, t(X) ={y T | xX, xdy}. i: T I, i(Y) ={x I | yY, xdy}.
Ta gọi cặp (t, i) là kết nối Galois giữa những tập thứ tự bộ phận P(I) và P(T).
Chúng ta biểu thị cặp (X, t(X)) thành Xt(x) và cặp (i(Y),Y) thành i(Y)Y. Hình 2.10a đưa ra 2 ánh xạ minh họa kết nối Galois trong đó t(x) là tập tất cả các giao tác mà chứa tập mục X, tương tự i(Y) là tập mục được chứa trong tất cả các giao tác của tập Y.
Ví dụ: t(ACW) = 1345 và i(245) = CDW.
Trong đó tập mục là giao của những tập mục riêng. t(X) = xX t(x), i(Y) = yYi(Y).
i(245) = i(2) i(4) i(5) = CDW ACDW ACDTW = CDW. Kết nối Galois thỏa mãn các tính chất sau:
1.X1 X2 t(X1) t(X2).
Ví dụ: ACW ACTW thì t(ACW) = 1345 135 = t(ACTW).
2. Y1 Y2 i(Y1) i(Y2).
Ví dụ: tập định danh: 245 2456 khi đó i(245) = CDW CD = i(2456).
3. X i(t(X)) và Y t(i(Y)).
Ví dụ: AC i(t(AC)) = i(1345) = ACW.
Định nghĩa 2.8 Cho S là tập hợp, hàm c: P(S)P(S) xác định giữa các tập trong S, gọi là toán tử đóng (closure operator) trên S nếu với mọi X, Y
S, c thỏa các tính chất sau:
1. Mở rộng (extension): X C(X).
2. Đơn điệu (monotonicity): nếu X Y thì c(X) c(Y).
3. Không tăng: c(c(X)) = c(X).
Giả sử X I và Y T. cit biểu thị sự hợp thành của hai ánh xạ toi (X) = i(t(X)) và cti = t o i (Y) = t(i(Y)) thì cit: P(I)P(I) và cti: P(T) P(T) đều là toán tử đóng trên tập mục và tập định danh. Người ta gọi i o t và t o i là round trip. Hình 2.10b minh họa round trip này bắt đầu với tập mục X.
Định nghĩa 2.9 Giả sử tập mục X I là tập các mục trong cơ sở dữ liệu, tập X gọi là tập đóng nếu cit(X)=X.
Hình 2.10a Kết nối Galois Hình 2.10b Round – Trip
Ví dụ: giả sử X = AC áp dụng tính chất mở rộng thì tập X là tập con của tập đóng của nó.
Tức là: cit(AC)=i(t(AC))=i(1345)=ACW.
AC cit(AC) = ACW nên AC không phải là tập đóng.
Để kiểm tra tập mục X có phải là tập thường xuyên hay không ta tìm tập thường xuyên đóng nhỏ nhất chứa X. Nếu không tồn tại tập đóng thường xuyên nào chứa X thì X không phải là tập thường xuyên.
Ví dụ: kiểm tra tập mục ATW có thường xuyên không? Chúng ta xem trên dàn tìm được tập mục ACTW là tập đóng nhỏ nhất chứa nó nên ATW là tập mục thường xuyên có cùng độ hỗ trợ như ACTW. Ngược lại, DT không phải là tập mục thường xuyên vì không có tập thường xuyên đóng nào chứa nó cả. Các mục Các giao tác t(X) Y i t Y i(Y) X Các mục Các giao tác t(X) Cit(X)= i(t(X) X t i
Hình 2.11 Dàn và các tập mục thường xuyên.
Bất kỳ một tập X nào đều tồn tại một tập định danh đóng Y mà Y = t(X) và X = i(Y) (ngược lại cho bất kỳ tập định danh đóng nào cũng tồn tại một tập mục đóng).
Ví dụ: tập mục đóng ACW có tập định danh đóng tương ứng 1345.
Một cặp tập mục đóng và tập định danh đóng XxY được gọi là một khái niệm (concept).
Một khái niệm X1Y1 là khái niệm con của X2Y2 là X1Y1 X2Y2 khi và chỉ khi X1 X2, (Y1Y2)
Việc kết nối các khái niệm trong dàn được thực hiện bởi 2 phép tính sau: + Phép tuyển: (X1Y1)(X2Y2)=cit(X1X2)(Y1Y2). + Phép hội: (X1Y1)(X2Y2)= (X1X2) cti (Y1Y2). ACTW (ACTW135) ACW (ACW1345) ATW (ATW135) ACT (ACT135) CDW (CDW245) CTW (CTW135) AC (AC1345) AT (AT135) AW (AW1345) CD (CD2456) CT (CT1356) CW (CW12345) DW (DW245) TW (TW135) A (A1345) C (C123456) D (D 2456) T (T1356) W (W12345)
Ví dụ:
(ACDW45)(CDT56)=cit(ACDWCDT)(4556)= ACDTW5. (ACDW45)(CDT56) = Cit(ACDWCDT)(4556) = CDCti(456)
= CD2456.
Để xác định độ hỗ trợ của tập mục đóng X hoặc khái niệm XY cũng chính là của tập định danh đóng: Y = t(X) tức là Supp(X) =Y =t(x).
Định nghĩa 2.10 Một tập mục đóng hoặc khái niệm được gọi là thường xuyên nếu độ hỗ trợ của nó lớn hơn hoặc bằng minSup.
Hình 2.12 thể hiện tất cả những khái niệm thường xuyên với minSup 50% của cơ sở dữ liệu hình 2.2a
Hình 2.12 Dàn khái niệm thường xuyên.
(CDW245) (CD2456) (CT2356) (C123456) (ACTW135) (ACW1345) (CW12345)
Định lý 2.3 [12] Độ hỗ trợ của tập mục X bất kỳ bằng độ hỗ trợ tập đóng của nó tức là supp(X) = supp(cit(X)).
Chứng minh: độ hỗ trợ của tập mục X là số giao tác mà tập X xuất hiện chính là số phần tử của tập định danh t(X), supp(X) = t(X) vì supp(cit(X)) =
t(cit(X)). Để chứng minh định lý ta phải chứng minh t(X) = t(cit(X)) .
Vì cti là toán tử đóng nên nó thỏa mãn tính mở rộng t(X) cti (t(X)) = t(i(t(X))) = t(cit(X) vậy t(X) t(cit(X)). Mặc kkác cit cũng là toán tử đóng nên X cit(X). Suy ra t(X) t(cit(X)) do tính chất 1 của kết nối galois. Vậy
t(X)=t(cit(X))
Định lý này cho thấy tập mục thường xuyên được xác định bởi các tập mục đóng thường xuyên. Hơn nữa, tập của những tập mục đóng thường xuyên là nhỏ hơn tập các tập mục thường xuyên, ví dụ minh họa trong hình 2.12 cho thấy chỉ có 7 tập mục đóng thường xuyên trong khi đó tới 19 tập mục thường xuyên (thể hiện trong dàn hình 2.11).
2.7.2. Sinh luật
Như chúng ta đã biết, luật kết hợp là biểu thức có dạng X1 p
X2 trong đó X1, X2 I, p là độ tin cậy ) ( ) ( 1 2 1 X t X X t p với t(X1 X2) là độ hỗ trợ của luật. Chúng ta chỉ quan đến những luật có độ hỗ trợ lớn hơn hoặc bằng
minSup và độ tin cậy lớn hơn hay bằng minconf.
Số các luật kết hợp tìm được từ các tập mục thường xuyên có thể là rất lớn. Nếu một tập mục thường xuyên có k mục thì có thể sinh ra 2k
– 2 luật (hàm mũ theo số phần tử của tập thường xuyên), do đó các tập mục thường xuyên càng lớn thì số luật sinh ra càng nhiều.
Để giảm được số luật mà không ảnh hưởng đến kết quả khai phá dữ liệu, chúng ta không cần thiết khai phá các luật từ các tập mục thường xuyên mà chỉ cần khai phá những luật từ các tập mục thường xuyên đóng.
Định lý 2.4 [12] Luật X1p
X2 là tương đương với luật cit(X1)q
cit (X2) , với q = p.
Chứng minh: theo định lý 2.3 độ hỗ trợ của tập mục X bằng độ hỗ trợ của tập mục đóng của nó cit(X) vậy ta có:
p X t X X t X t X t X t X t X c t X c t X c t X c X c t q it it it it it ) ( ) ( ) ( ) ( ) ( ) ( )) ( ( )) ( ( )) ( ( )) ( ) ( ( 1 2 1 1 2 1 1 2 1 1 2 1
Như vậy, có nhiều tập mục thường xuyên ánh xạ tới cùng một tập mục thường xuyên đóng. Giả sử S1 có n tập mục và tập đóng của nó là C1, S1 có m tập mục và tập đóng C2 chúng ta chỉ ra rằng có n.m-1 luật giữa 2 tập mục không đóng sinh trực tiếp từ S1 tới S2 là không cần thiết. Tất cả chúng tương đương với luật C1p
C2 .
Ví dụ: xem hình 2.11 ta thấy các tập mục D và CD ánh xạ tới tập mục đóng CD, tập mục W và CW ánh xạ tới tập mục đóng CW. Các luật D3/4
W, CD 3/4 CW tương đương với luật giữa hai tập đóng CD 3/4 CW. Mặc khác xét đến luật W 3/5 D, W 3/5 CD, CW 3/5 D tương đương với luật CW3/5
CD.
2.7.3. Chi tiết thuật toán Charm
Dựa trên cơ sở lý thuyết tập đóng, Mohammed J. Zaki và Ching-Jui Hsiao đã đưa ra thuật toán Charm, một thuật toán mới và hiệu quả trong việc tìm các tập mục thường xuyên đóng cũng như luật kết hợp.
Không giống như những thuật toán trước chỉ duyệt qua không gian của tập mục, thuật toán CHARM [12] thực hiện duyệt trên cả không gian tập mục và định danh. Hơn nữa, thuật toán CHARM tránh được những tính toán để tìm tất cả các tập con của tập mục đóng khi đi tìm tập mục đóng, hiệu quả hơn hẳn chiến lược tìm từ dưới lên (bottom – up). Tính chất này là quan trọng trong khai phá các cơ sở dữ liệu dày với tập mục thường xuyên dài. Với đặc tính duyệt qua cả hai không gian tập mục và tập định danh cho phép thuật toán CHARM sử dụng phương pháp tìm kiếm mới, bỏ qua nhiều mức để xác định tập mục đóng nhanh, thay vì phải tính toán cho nhiều tập con không đóng. Hơn nữa, thuật toán sử dụng hai chiến lược tỉa: tỉa những tập ứng cử viên nếu tập con của nó không thường xuyên; Tỉa những nhánh dựa trên tính chất không đóng (tỉa những tập không đóng Non-closed). Thuật toán không sử dụng cấu trúc dữ liệu cây băm mà sử dụng hai phép toán: hợp hai tập mục và giao hai tập định danh của chúng.
Hình 2.13 Dàn đầy đủ các tập mục của cơ sở dữ liệu hình 2.2 a.
Ý tưởng của thuật toán CHARM là duyệt trên các nút của dàn để kiểm tra xem các nút con có thường xuyên hay không. Tất cả những tập mục không thường xuyên cũng như những nhánh không đóng sẽ bị tỉa. Mỗi nút con được sinh bằng cách tổ hợp nút cha với các nút anh em cùng mức.
Ví dụ: để tạo ra các nút con của nút A thì ta tổ hợp nút A với các nút cùng mức C, D, T, W, được các nút con AC, AD, AT, AW.
Một nút anh em với nút cha sẽ không cần xét đến nếu bị tỉa do không thường xuyên hay là tập không đóng. Hiện nay có nhiều phương pháp tìm kiếm như: duyệt theo chiều rộng, chiều sâu, tìm kiếm tối ưu, CHARM thực hiện tìm kiếm theo chiều sâu trên các dàn con.
ACDW ACTW ACDTW CT CDT CDW CTW CW DT DW TW CDTW DTW C ACD {} AC AD AT AW ACDT
ACT ACW ADT ADW ATW
CD
D T W
Giả sử cho bất kỳ tập mục X nào ta đều tìm được tập tidset t(X) (tập định danh các giao tác chứa X) và ngược lại cho bất kỳ tập tidset Y nào ta đều tìm được tập mục i(Y) của nó. Thuật toán CHARM tính tất cả các khái niệm thường xuyên từ cơ sở dữ liệu vào. Một khái niệm là cặp XY trong đó X= i(Y) là tập mục đóng và Y = t(X) là tập định danh đóng. Chúng ta có thể bắt đầu duyệt các khái niệm trong không gian các tập mục hoặc không gian tập định danh. Tuy nhiên, số các mục nhỏ hơn nhiều số giao tác và vì quan tâm đến các tập đóng, ta bắt đầu tìm với các mục đơn và các tidset kết hợp của chúng.
Hình 2.14 Các tính chất cơ bản của các tập mục và tập định danh.
Các tính chất cơ bản của tập mục-tập định danh:
Cho f : P(I) N là ánh xạ 1-1 từ các tập mục đến tập các số tự nhiên. Với hai tập mục bất kỳ X1, X2, chúng ta nói X1 X2 nếu và chỉ nếu f(X1)
f(X2). f xác định một trật tự trên các tập mục. Các mục Các giao tác Các mục Các giao tác Các mục Các giao tác Các mục Các giao tác t(X1 t(X2) t(X1) cit(X1)= cit(X2) t(X1)= t(X2) X1 X2 i t t cit(X2)= it(X1X2) X1 X2 i t(x2) t t t(X1) t(X2) t(X2) cit(X1)= it(X1X2) X1 X2 t(x1) i t t t(X1) != t(X2) t(X1) cit(X1)!= cit(X2) X1 t(x2) i t i X2 t
Ví dụ: nếu f xác định trật tự từ điển thì tập mục AC < AD. Một ví dụ khác, nếu f sắp xếp các tập mục theo trật tự tăng dần của độ hỗ trợ thì khi đó AD < AC nếu supp(AD) < supp(AC).
Giả sử rằng ta xét nhánh X1t(X1), chúng ta muốn kết hợp nó với nhánh cùng mức X2t(X2) thì X1 < X2. Những tính toán của thuật toán CHARM dựa trên 4 tính chất sau:
1 Nếu t(X1) = t(X2) thì t(X1X2) = t(X1) t(X2) = t(X1) = t(X2). Do vậy, thay đổi mỗi xuất hiện của X1 với X1 X2 và loại bỏ X2 trong các tập xét sau này, vì toán tử đóng của nó đồng nhất với toán tử đóng của tập X1X2.
2 Nếu t(X1) t(X2) thì t(X1X2) = t(X1) t(X2) = t(X1) t(X2). Chúng ta thay mỗi xuất hiện của X1 với X1X2 vì nếu X1 xuất hiện bất kì