Một số tính chất của luậtkếthợp

Một phần của tài liệu Khai phá dữ liệu luật kết hợp mờ và ứng dụng cho bài toán khai phá dữ liệu cước internet (Trang 26)

Nếu X —> z và Y —> z trong D thì không nhất thiết X u Y —»■ z là đúng.

Xét trường hợp X n Y = và các tác vụ trong D hỗ nếu chỉ nếu chúng hỗ trợ mỗi X hoặc Y, khi đó luật X u Y —> z có độ tin cậy là 0%.

Tương t ự : X —> Y n X —» Z = > X —> Y u Z Tính chất 2 - Không tách luật

Nếu X u Y —> z thì X —> z và Y —>z chưa chắc xảy ra.

Ví dụ: Trường hợp z có mặt trong một tác vụ chỉ khi cả hai X và Y cũng có mặt, tức là supp(X u Y)=supp(Z), nếu độ hỗ trợ của X và Y đủ lớn hơn supp(X u Y) hay supp(X) > supp(X u Y) và supp(Y) > supp(X u Y) thì hai luật riêng biệt sẽ không đủ độ tin cậy.

Tuy nhiên, đảo lại: X - > Y u Z = > X - > Y n X - > Z

Tính chất 3 - Các luật kết hợp không có tính chất bắc cầu

Nếu X —* Y và Y —* z chúng ta không thể suy ra X —> z

Ví dụ: Giả sử T(X) c T(Y) e T(Z) tương ứng là tập các tác vụ chửa X,Y,Z và độ tin cậy cực tiểu là minconf,

conf(X —> Y) = conf(Y —* Z) = minconf

conf(X —> Z) = minconf2 < minconf vì minconf < 1, do đó luật X —*• z không đủ độ tin cậy.

Tính chất 4:

Nếu luật A —> (L-A) không thỏa mãn độ tin cậy cực tiểu thì luật B —> (L-B) cũng không thỏa mãn, với các tập mục L,B>A và B c A.

conf(B —*(L-B)) = <min con/

sup p(B) sup/7(y4)

Cũng như vậy: Nếu có luật (L-C) —*• c thì ta cũng có luật (L-D) —» D, với D C c và D * 0 .

V Ỉ D c C nên (L-D) 2 (L-C), do đó supp(L-D) < supp(L-C)

^ sup m sụpẹ ( t) _ ìm in co n f

sup p(L - D) sup p(L - C)

Tức là: conf(L-D) —■> D > conf(L-C) —> c > minconf

2.4.3 Các loại luật kết hợp. [5] [6] [8]

Có nhiều loại luật kết hợp, các luật kết hợp có thể có các dạng khác nhau dựa trên các đặc điểm sau:

Luật kết hợp nhị phân: là các luật dựa trên các kiểu của các giá trị trong luật. Hay có nghĩa là luật kết hợp quan tâm tới sự có mặt hay không có mặt của các mục

Luật kết hợp định lượng: Là luật miêu tả sự quan hệ giữa các thuộc tính hoặc các mục định lượng. Trong luật loại này, các giá trị định lượng của các mục hoặc các thuộc tính được phân chia thành các khoảng.

Luật kết hợp đơn chiều: là luật dựa trên chiều của dữ liệu chứa trong luật. Cụ thể là các mục hoặc các thuộc tính trong luật kết hợp tham chiếu đến chỉ một chiều.

Luật kết hợp đa chiều: là ỉuật kết hợp dựa trên chiều của dữ liệu chứa trong luật. Nếu luật tham chiếu đến nhiều hơn một chiều thì được gọi là luật kết hợp đa chiều.

Luật kết hợp với các mức trừu tượng khác nhau: Là các luật kết hợp dựa trên mức độ trừu tượng chứa trong luật. Một số phương pháp khai phá luật kết hợp có thể tìm các luật với các mức độ trừu tượng khác nhau.

2.5 Các thuật toán khai phá dữ liệu nhờ luật kết họp

2.5.1 Khai phá luật kết họp nhị phân đơn chiều từ cơ sở dữ liệu tác vụ

Trong phần này sẽ xem xét các phương pháp khai phá dạng đơn giản nhất của luật kết hợp đó là luật kết hợp đơn chiều, đơn mức, hay luật kết hợp nhị phân. Ta bắt đầu với thuật toán Apriori, một thuật toán kinh điển cơ sở cho việc tìm kiếm các tập mục phổ biến. Phần này cũng nêu thủ tục sinh ra các luật két họp từ các tập mục phổ biến, đồng thời cũng nêu một số biến đổi của thuật toán Apriori để tăng hiệu quả của thuật toán.

2.5.1.1 Thuật toán Apriori tìm tập mục phổ biến sử dụng phương pháp sinh các ứng cử [5] các ứng cử [5]

Apriori là thuật toán khai phá các tập mục phổ biến cho các luật kết hợp nhị phân. Trong phần này trình bày thuật toán Apriori do Rakesh Agrawal, Tomasz Imeilinski, Arun Swami đề xuất lần đầu tiên vào năm 1993.

Vấn đề phát hiện tất cả các luật kết hợp có độ hỗ trợ và độ tin cậy vượt qua ngưỡng xác định nào đó (ngưỡng này do người dùng đưa ra và khi ấy nó chính là độ hỗ trợ cực tiểu minsup và độ tin cậy minconí) có thể được phân rã thành hai vấn đề con sau đây:

Tìm tất cả các tập mục phổ biến với minsupp nào đó. Thuật toán Apriori nhằm giải quyết vấn đề này.

Sử dụng các tập mục phổ biến để sinh ra các luật kết hợp với minconf nào đó. Ý tường chính ở đây là nếu s và X là tập mục phổ biến và X c s, khi đó ta có thể xem X —► Y (ở đây Y=S\X) có phải là luật mong muốn hay không bằng cách tính độ hỗ trợ c=conf(X—* Y)=supp(S)/supp(X). Chỉ khi c > minconf thì X —» Y mới trở thành luật mong muốn.

Các thuật toán phát hiện các tập mục phổ biến thực hiện nhiều lần duyệt dữ liệu. Trong lần duyệt thứ nhất, ta tính độ hỗ trợ của các mục riêng biệt và xác định các mục phổ biến trong chúng, tức là thỏa mãn độ hỗ trợ cực tiểu. Trong mỗi lần duyệt

sau, ta bắt đầu với tập hạt giống thu được trong lần duyệt trước đó. Chúng ta sử dụng tập hạt giống này để sinh ra tập mục phổ biến tiềm năng - gọi là tập mục ứng cử và tính độ hỗ trợ thực sự của các tập mục ứng cử này khi duyệt qua dữ liệu. Ở cuối mỗi lần duyệt, ta xác định được tập mục nào trong các tập mục ứng cử là tập mục phổ biến thực sự và chúng trở thành hạt giống cho lần duyệt tiếp theo. Quá trình này thực hiện cho đến khi không có một tập mục phổ biến mới nào nữa được tìm thấy.

Thuật toán Apriori sinh ra các tập ứng cử để tính trong một lần duyệt bằng việc sử dụng chi các tập mục đã được thấy là phổ biển trong lần duyệt trước mà không cần quan tâm đến các tác vụ trong cơ sở dữ liệu. Cơ sở của điều đó là bất kỳ tập con nào của tập mục phổ biến phải ià phổ biến. Vì vậy, các tập ứng cử có k-mục có thể được sinh ra bằng cách kết nổi các tập mục phổ biến có (k-1) mục, và xóa đi các tập ứng cử viên nếu có chứa bất kỳ một tập con nào mà không là phổ biến. Thủ tục này nói chung dẫn đến một số nhỏ hơn nhiều các tập ứng cử viên, hay nói cách khác là khá hiệu quả trong việc tỉa gọn không gian tìm kiếm.

Để dễ theo dõi, ta kí hiệu như sau: Giả sử các mục trong mỗi tác vụ được lưu giữ theo trật tự từ điển (điều này không làm mất đi tính chất tổng quát của bài toán nhưng lại rất quan trọng trong việc không sinh thừa các ứng cử). Gọi số các mục trong một tập mục là kích thước của nó và gọi tập mục có kích thước k là tập k- mục. Các mục trong mỗi tập mục cũng được giữ ở trật tự từ điển. Chúng ta sử dụng các kí hiệu sau:

Bảng 3: Các ký hiệu của thuật toán Apriori

Kí HIỆU GIẢI THÍCH

Lk Tập các tập k-mục phổ biến (với độ hỗ trợ cực

tiểu minsup nào đó). Mỗi phần tử của tập này có 2 trường:

Tập mục

- Độ hỗ trợ tương ứng của nó

c k Tập các tập k-mục ứng cử (các tập mục phổ

biến tiềm năng).

__________ _ ì - Độ hỗ trợ tương ưng với n ó _________

Thuật toán Apriori sử dụng tiếp cận lặp lại, ờ đó tập (k-l)-mục được sử dụng cho việc tìm kiếm k-mục. Ở lần duyệt đầu tiên, người ta tính độ hỗ trợ của các mục riêng lẻ (hay tập chỉ gồm 1 mục) và xác định xem trong chúng mục nào là phổ biến, tức là tìm được 1 mục phổ biến. Đó chính là tập Li,L] được dùng để tìm L2 - L2 là các tập 2 mục phổ biến. Quá trình lại tiếp tục L2 được dùng để tìm L3...Cứ như vậy cho tới khi không tìm được tập phổ biến lớn hơn tập k-mục phổ biến đã tìm thấy.

Để tăng tính hiệu quả trong việc sinh ra tập mục phổ biến, các tính chất của tập mục phổ biến đã nêu ở trên được sừ dụng. Một trong những tính chất quan trọng nhất được gọi là tính chất Apriori để rút gọn không gian tìm kiếm đó là: Tất cả các tập con khác rỗng của tập mục phổ biến đều là tập mục phổ biến. Tức là nếu tập mục I không thỏa mãn ngưỡng hỗ trợ cực tiểu thì I không phải tập mục phổ biến hay P(I) < minsup. Nếu mục A được thêm vào tập mục I thì ta được tập mục (I u A) không thể là phổ biến hom I và do đó (I u A) không thể là phổ biến hơn I và do đó (I u A) cũng không thể là tập mục phổ biến, hay P(I u A ) < minsup. Tính chất này còn có thể phát biểu dưới dạng khác là: Nếu một tập mục không là phổ biến thì mọi tập mục chứa nó cũng không phải là phổ biến.

Để hiểu được rõ hơn tính chất này ta xét thuật toán sử dụng L|c-1 để tìm Lk sau đây. Quá trình này bao gồm 2 bước đó là:

Bước kết nối Bước tỉa

Bước kết nối: Bước này dùng để sinh tập các ứng cử c k

Đầu vào: là tập k-1 mục phổ biến Lk_i Đầu ra: là tập các ứng cử gồm k mục c k Phép toán sử dụng: phép kết nối

Tổng quát: tập các ứng cử k mục c k được sinh ra bởi việc kết nối Lk.j với chính nó. Giả sử li và 12 là các tập mục trong Lk.j. Ta kí hiệu: lj[j] là mục thứ j trong lj.

Bằng quy ước, giả sừ các mục trong tác vụ hoặc tập mục có thứ tự từ điển. Nối Lk_i với LU.1 được thực hiện như sau: các thành phần của Lk-1 được kết nối nếu (k-2) mục đầu tiên là chung, tức là thành phần 1] và 12 của Lk_! được nối nếu:

(1,[1] =12[ 1 ] ) a ( 1 , [ 2 ] =12[ 2 ] ) a . . . A (lj[k -2 ] = l2[ k - 2 ] ) A ( l , [ k - l ] = l 2[ k - l ] ) . Điều kiện (li[k-1 ] <l2[k-l]) đơn giản là để đảm bảo rằng không sinh thừa (không bị lặp). Dạng của tập mục nhận được bởi nối li và 12 là: 1)[1] li[2]... lj[k-l]l2[k-l]

Bước tỉa:

Đầu vào: là tập các ứng cử gồm k mục c k Đầu ra: là tập k mục phổ biến - Lk

Công việc phải làm: Quét cơ sở dữ liệu để tính độ hỗ trợ cho mỗi ứng cử và tỉa bớt những ứng cử không vượt quá minsup.

Tổng quát: tập các ứng cử k mục c k luôn là tập chứa Lk, tức là các thành phần của c k có thể là phổ biến hoặc không nhưng tất cả các tập k-mục phổ biến đều chứa đầy đủ trong c k. Quét cơ sở dữ liệu để tính độ hỗ trợ cho mỗi ứng cừ trong c k sẽ nhận được Lk (tức là tất cả các ứng cừ được tính độ hỗ trợ không nhỏ hom ngưỡng hỗ trợ cực tiểu minsup là tập phổ biến được xác định, đó chính là Lk). Tuy nhiên, c k có thể là rất lớn và do đó dẫn đến tính toán rất lớn. Để rút gọn kích thước của Ck, tính chất Apriori được sừ dụng như sau: Bất kỳ tập (k-1) mục nào không phổ biến không thể là tập con của tập k mục phổ biến. Do đó, nếu bất kỳ tập con (k-1) mục của ứng cử k mục không có mặt trong Lk-1 thì ứng cử đó không thể là phổ biến và do vậy có thể loại bỏ khỏi c k. Kiểm tra tập con (k-1) mục này có thể làm nhanh bởi duy trì một cây băm của tất cả các tập mục phổ biến tìm thấy.

Thuật toán Apriori

Mục đích của thuật toán: Tìm các tập mục phổ biến dựa trên cơ sở sinh các ứng

cử

Ngưỡng độ hỗ trợ cực tiểu của các tác vụ hay minsup

Đầu ra: Tập các tập mục phổ biến

Nội dung của thuật toán:

1 Quét cơ sở dữ liệu để tìm các tập 1 mục phổ biến Li 2 For(k=2; W ; k + + ) {

3 c k = apriorigeníLic.i, minsupp); //Sinh các ứng cừ từ Lk.t 4 For (mỗi tác vụ t trong D) {//Quét D để đếm

5 c t = subset (Ck,t); //lấy tập con của t mà là các ứng cử trong c k 6 For (mỗi ứng cừ c 0 c t)

7 c.count ++; //Tăng đếm cho c một đơn vị

8 }

9 Lk = {c Ể c k sao cho: c.count > minsupp}

10 }

11 Return L = u kLk

Thủ tục apriori_gen:

Mục đích của thủ tục: Tìm c k - tức sinh các ứng cử và tỉa các tập mục không phổ biến

Đầu vào: Tập phổ biến (k-l)-mục Lk_!

Ngưỡng độ hỗ ừợ cực tiểu của các tác vụ hay minsupp Đầu ra: Ck

Nội dung thủ tục:

1 For mỗi mục lt e Lk_i 2 For mỗi mục l2e Lk-1 {

3 If (1,[1] =12[ 1 ] ) a ( 1 , [ 2 ] = l2[ 2 ] ) A . . . A ( l , [ k - 2 ] = l 2[ k - 2 ] ) A ( l , [ k - l ] = l 2[ k - l ] )

4 then c = li o<i 12; //bước kết nối để sinh các ứng cử c 5 If has_infrequent_subset(c, Lk_i) then

6 Xóa c; //bước tỉa

7 Else thêm c vào Q ;

8 }

9 Return c k;

Thủ tục has_infrequent_subset:

Mục đích của thủ tục: Kiểm tra các tập con (k-1) mục của ứng cử k mục có là phổ biến không?

Đầu vào: ứng cả k mục c

Tập phổ biến (k-l)-mục Lk.i

Đầu ra: Khẳng định c có là phổ biến hay không

Nội dung của thủ tục:

Procedure has_infrequent_subset (c: ứng cử k mục; Lk_i) 1 For mỗi tập con (k-1) mục s của c

2 If s Ể Lk-1 then

3 Return True;

2.5.1.2 Nâng cao hiệu quả thuật toán Apriori [7] [8] [9]

Một số phương pháp cải tiến, biến đổi của thuật toán Apriori nhằm nâng cao hiệu quả của thuật toán

Dựa vào kỹ thuật băm:

Bước tỉa của thuật toán Apriori đòi hỏi kiểm tra tất vả các tập con (k-1) mục ứng cử có phải là tập phổ biến hay không, tóc là có mặt trong tập phổ biến đã tìm được ở bước trước là Lk„i không. Để có thể kiểm tra nhanh chóng, người ta lưu các tập phổ biến trong các bảng băm tức lưu Lk.] trong bảng băm.

Ta minh họa kỹ thuật này như sau: Cho tập các ứng cừ c k và một tác vụ T, chúng ta cần tìm tất cả các ứng cử được chứa trong T. Sau đây ta miêu tả một cẩu trúc dữ liệu cho phép thực hiện điều đó một cách hiệu quả.

Các tập mục ứng cử c k được nêu trong một cây băm. Một nút của cây băm hoặc là chứa một danh sách các tập mục (nút lá) hoặc là một bảng băm (nút trong). Trong nút trong, mỗi cụm (bucket) của bảng băm chỉ tới một nút khác. Gốc của cây băm được xác định có độ sâu 1. Một nút trong ở độ sâu d chỉ tới các nút ở độ sâu d+1. Các tập mục được nêu trong các nút lá. Khi ta thêm một tập mục c, ta bắt đầu từ gốc và đi xuống trên cây đến khi gặp một nút lá. Tại một nút trong ở độ sâu d, ta quyết định theo nhánh tiếp theo bằng cách dùng một hàm băm tới mục thứ d của tập mục. Tẩt cả các nút được tạo ra ban đầu là các nút lá. Khi số các tập mục trong nút lá vượt ngưỡng

R út gọn tác vụ (Rút gọn số tác vụ cần quét trong các lần lặp sau): Một tác vụ không chứa bất kỳ tập k mục phổ biến nào thì cũng không thể chứa bất kỳ tập (k+1) mục phổ biến. Do đó, tác vụ đó có thể đánh dấu hoặc loại bỏ khỏi lần xét sau.

Phân hoạch tức là phân chia dữ liệu để tìm tập mục ứng cử: Kỹ thuật phân hoạch có thể sử dụng bởi nó chỉ đòi hỏi quét cơ sờ dữ liệu 2 lần để khai phá tập mục phổ biến. Việc khai phá bằng phân hoạch dữ liệu gồm 2 giai đoạn, ứong giai đoạn

1, thuật toán chia các tác vụ D thành n vùng. Neu ngưỡng hỗ trợ cực tiểu của D là minsupp thì ngưỡng hỗ trợ cực tiểu cần tính cho một vùng là tích của minsupp với

số các tác vụ trong vùng đó. Với mỗi vùng, tập mục phổ biến cho vùng đó được tìm, có thể gọi đó là tập mục phổ biến địa phương (hay cục bộ). Một thủ tục dùng một cấu trúc dữ liệu đặc biệt, vói mỗi tập mục, ghi các định danh TID của các tác vụ chứa các mục trong tập mục. Điều đó cho phép nó có thể tìm tất cả các tập k mục phổ biến (với k = 1,2,...chỉ trong một lần duyệt cơ sở dữ liệu).

Các tập mục phổ biến địa phương có thể hoặc không là tập mục phổ biến của toàn bộ cơ sở dữ liệu D. Nhưng bất kỳ tập mục nào là phổ biến tiềm năng của D cũng phải là tập mục phổ biến của ít nhất một vùng. Do đó, tất cả các tập mục phổ biến địa phương là các tập mục ứng cử cho D. Tập hợp các mục phổ biến địa phương từ tất cả các vùng sẽ được tập mục ứng cử cho D. Trong giai đoạn 2, cơ sở dữ liệu được duyệt lần thứ 2 để tính độ hỗ trợ cho mỗi ứng cử nhằm xác định tập mục phổ biến đích cần tìm. Kích thước của một vùng có thể vừa khít với bộ nhớ chính và ngưỡng để chỉ đọc một lần trong mỗi giai đoạn.

Lấy mẫu (khai phá trên tập con của dữ liệu): ý tưởng cơ bản của cách tiếp cận này là lấy ngẫu nhiên s trên dữ liệu đã cho D và sau đó tìm tập mục phổ biến s thay cho D. Trong cách này, độ phức tạp được cải thiện. Kích thước của mẫu là đảm bảo

Một phần của tài liệu Khai phá dữ liệu luật kết hợp mờ và ứng dụng cho bài toán khai phá dữ liệu cước internet (Trang 26)

Tải bản đầy đủ (PDF)

(93 trang)