LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU

Một phần của tài liệu Khai phá luật kết hợp mờ dựa trên đại số gia tử (Trang 38 - 45)

Bài toán giỏ mua hàng trong siêu thị: Giả định chúng ta có rất nhiều mặt hàng, ví dụ như “bánh mì”, “sữa”,…(coi là tính chất hoặc trường). Khách hàng khi đi siêu thị sẽ bỏ vào giỏ mua hàng của họ một số mặt hàng nào đó, và chúng ta muốn tìm hiểu các khách hàng thường mua các mặt hàng nào đồng thời, thậm chí chúng ta không cần biết khách hàng cụ thể là ai. Nhà quản lý dùng những thông tin này để điều chỉnh việc nhập hàng về siêu thị, hay đơn giản là để bố trí sắp xếp các mặt hàng gần nhau, hoặc bán các mặt hàng đó theo một gói hàng, giúp cho khách hàng đỡ mất công tìm kiếm. Bài toán này hoàn toàn có thể áp dụng trong các lĩnh vực khác. Ví dụ:

- Giỏ hàng = văn bản. Mặt hàng = từ. Khi đó, những từ hay đi cùng nhau sẽ giúp ta nhanh chóng tìm ra các lối diễn đạt, hay các khái niệm có mặt trong văn bản.

- Giỏ hàng = văn bản. Mặt hàng = câu. Khi đó, những văn bản có nhiều câu giống nhau giúp phát hiện ra sự đạo văn, hay những “website đúp”

(mirror website).

Khai phá luật kết hợp được môt tả như sự tương quan của các sự kiện- những sự kiện xuất hiện thường xuyên một các đồng thời. Nhiệm vụ chính của khai phá luật kết hợp là phát hiện ra các tập con cùng xuất hiện trong một khối lượng giao dịch lớn của một cơ sở dữ liệu cho trước. Nói cách khác, thuật toán khai phá luật kết hợp cho phép tạo ra các luật mô tả các sự kiện xảy ra đồng thời (một cách thường xuyên) như thế nào. Các thuật toán này trải qua 2 pha: pha đầu là đi tìm các sự kiện xảy ra thường xuyên, pha hai là tìm luật.

Bảng 2.7 dưới đây minh họa áp dụng thuật toán cho ví dụ 2 (σ =40%)

C1 C1 L1

Tập 1 phần tử {Bánh mì}

{Bơ}

{Trứng}

{Sữa}

Quét toàn

bộ CSDL

để tính độ hỗ trợ

Tập hợp Độ hỗ trợ {Bánh mì} 50%

{Bơ} 100%

{Trứng} 50%

{Sữa} 25%

Tập hợp Độ tin cậy {Bánh mì} 50%

{Bơ} 100%

{Trứng} 50%

C2 C2 L2

Tập 2 phần tử {Bánh mì, Bơ}

{Bánh mì, Trứng}

{Bơ, Trứng}

Tập hợp Độ hỗ trợ {Bánh mì, 50%

Bơ}

{Bánh mì, 25%

Trứng}

{Bơ, Trứng} 50%

Tập hợp Độ tin cậy {Bánh mì, 50%

Bơ}

{Bơ, 50%

Trứng}

C3 Quét toàn

bộ CSDL

để tính độ hỗ trợ

C3 L3

Tập 3 phần tử

Tập hợp Độ hỗ trợ

Tập hợp Độ tin cậy

Bảng 2.7 Dùng thuật toán Apriori tính ra các tập hợp xuất hiện σ – thường xuyên

Bản thân Agrawal đưa ra nhận xét: thuật toán Apriori hiệu quả hơn so với AIS và SETM. Trong một ví dụ minh họa, ở bước thứ tư, thuật toán Apriori lược bỏ hết, chỉ còn giữ lại một tập ứng cử viên duy nhất, trong khi cả hai thuật toán kia vẫn đề nghị tới 5 ứng cử viên. Do đó, để đạt được kết quả như Apriori, hai thuật toán kia chắc chắn phải cần đến những tính toán bổ trợ.

Thuật toán Apriori cải tiến cũng giải quyết 2 tình huống “xấu”, đó là khi Ck hoặc Lk-1 to quá, không chứa đủ trong bộ nhớ tính toán. Khi đó, cần tu chỉnh lại hàm apriori_gen() một chút.

* Thuật toán CHARM

Thuật toán CHARM do Mohammed J.Zaki, Ching-Jui Hsiao và các đồng nghiệp thuộc Trường Đại học Rensselaer Polytechnic, Hoa Kỳ đưa ra năm 1999 và liên tục phát triển. Nghiên cứu cho thấy rằng không phải khai thác tất cả các tập thường xuyên trong bước đầu tiên, thay vào đó là khai thác các thiết lập tập thường xuyên đóng, điều này quá trình tính toán nhỏ hơn nhiều so với các thiết lập của tất cả các tập thường xuyên. Nó cũng không cần thiết để khai thác các thiết lập của tất cả các quy tắc có thể và thấy rằng bất kỳ quy tắc giữa các tập là tương đương với một số quy tắc của tập thường xuyên đóng. Vì vậy, nhiều quy tắc dự phòng có thể được loại bỏ.

CHARM là thuật toán tìm tất cả những tập thường xuyên đóng, có một số tính chất sau:

1. Khảo sát đồng thời cả tập mục dữ liệu lẫn tập các giao tác thông qua cây tìm kiếm IT_Tree ( Itemset-Tidset tree ), điều này khác với đa số các phương pháp trước, việc khảo sát chỉ xét trên tập mục dữ liệu.

2. Sử dụng một phương pháp tìm kiếm lại hiệu quả cao, nó bỏ qua nhiều mức trên cây để nhanh chóng xác định tập mục dữ liệu thường xuyên đóng, thay vì phải đếm nhiều tập con có thể.

3. Sử dụng một cách tiếp cận trên cơ sở bảng băm nhanh để loại bỏ những tập mục dữ liệu không là tập đóng trong quá trình tính toán. CHARM cũng đề xướng cách trình bày dữ liệu dọc, được gọi là diffset, làm cho việc tính toán được nhanh chóng. Vì diffset chỉ lưu giữ những định danh giao tác của từng tập ứng viên trong tập tiền tố của nó nên làm giảm thiểu sự chiếm dụng bộ nhớ, có thể đưa toàn bộ dữ liệu vào bộ nhớ trong để xử lý.

1. Cây tìm kiếm và lớp tương đương

Cho cơ sở dữ liệu giao tác T trên tập mục dữ liệu I={ x1,…,xn } với ||I|| = n.

Định nghĩa ánh xạ bộ phận p: Subset(I) x {1,…,n} Subset(I)

∀X = { xi1,xi2,..,xiu } ∈Subset(I), k c {1,…,u},u<=n:p(X,k)={xi1,xi2,…xik } Ký hiệu: p(X,k) = X[1:k], gọi là tiền tố có chiều dài k của X.

Trên Subset(I) ta định nghĩa quan hệ hai ngôi θk như sau:

∀X,Y C Subset(I): Xθk Y ⇔p(X,k)=p(Y,k).

Dễ dàng chỉ ra rằng θk là một quan hệ tương đương trên Subset(I). Lớp tương đương của X được ký hiệu là [X], gọi là lớp tương đương chiều dài k.

Cho một song ánh bất kỳ f: Subset(I)  {1,2,…, || Subset(I)||}. Trên Subset(I) ta định nghĩa một quan hệ: ∀X, Y ∈ Subset(I): X ≤f Y ⇔ f(X) ≤ f(Y), với ≤ là thứ tự tự nhiên trên N. Dễ dàng thấy rằng ≤f là một quan hệ thứ tự toàn phần trên Subset(I).

Cây tìm kiếm IT_Tree là một cấu trúc cây nhiều nhánh, cấu trúc dữ liệu tại mỗi nút là một cặp (X,Tran(X)) với Xc Subset(I). Nút gốc tương ứng với cặp ( Rỗng, T , nút mức k là một bộ ( X, Tran(X)) với X có k thuộc tính. Mỗi nhánh của cây biểu diễn một phần tử trong lớp tương đương [X].

Thuật toán:

Thuật toán CHARM được xây dựng trên hai thủ tục chính là CHARM_Extend và CHARM_Property. Đầu tiên CHARM xác định tập P là lớp tương đương của ỉ trong quan hệ tương đương θk rồi gọi thủ tục CHARM_Extend.

Thủ tục CHARM:

Procedure CHARM ( T, Minsup, CF );

Input: - T cơ sở dữ liệu giao tác trên I={ x1,…xn};

- Minsup: Ngưỡng tối thiểu;

Output: CF: Tập các tập thường xuyên đóng của T;

Method:

P:= {({xi}, tran ({xi})) | xi C I, ||Tran({xi})|| ≥ Minsup};

EndProcesdure;

Thủ tục đệ quy CHARM_Extend làm nhiệm vụ: Tổ hợp các phần tử trong một lớp tương đương, tính độ hỗ trợ của từng cặp rồi gọi thủ tục CHARM_Property để chèn tổ hợp ấy vào cây.

Procedure CHARM_Extend ( P, Minsup, CF);

Input: P={( X, Tran(X)) | X ∈ I, || Tran(X) || ≥ Minsup};

Output: CF: Tập các tập thường xuyên đóng của T;

Method:

For each ( X, Tran(X)) in P do P1 := ∅;

For each ( Y, Tran(Y)) in P with X ≤f Y do If || Tran(X) ∩ Tran(Y)|| ≥ Minsup then

CHARM_Property (P,X,Y,P1 );

If P1 ≠ ∅ then

CHARM_Extend (P1, Minsup, CF );

EndIf;

EndFor;

EndProcedure;

Thủ tục CHARM_Property chèn X,Y vào tập kết quả.

Procedure CHARM_Property (PI, X, Y, PO);

Input: PI = {(X, Tran(X)) | X ⊆ I, || Tran(X) || ≥ Minsup}; X, Y ⊆ I;

Output: PO = {(X,tran(X)) | X ⊆ I, || Tran(X) || ≥ Minsup};

PO := PI;

If Tran(X) = Tran(Y) then

//Xóa tất cả các Y trong PO;

//Thay tất cả các tập X trong PO bởi XY;

Else if Tran(X) ⊂ Tran(Y) then

//Thay tất cả các tập X trong PO bởi XY;

Else if Tran(X) ⊂ Tran(Y) then //Xóa tất cả các Y trong PO;

Thêm XY vào PO;

Else if Tran(X) ≠ Tran(Y) then Thêm XY vào PO;

EndIf;

EndIf;

EndIf;

EndIf; EndProcedure;

2.2. Khai phá luật kết hợp mờ:

Như đã nói trong phần mở đầu, sẽ là rất không đầy đủ nếu chỉ xem xét các cơ sở dữ liệu chỉ bao gồm các phần tử 0 và 1. Chẳng hạn, trong CSDL nhân sự của một cơ quan có các mục như tuổi, thu nhập.. có giá trị trong miền số thực rất rộng. Để khai phá ra các luật kết hợp trong CSDL dạng tổng quát này, một phương pháp thường được sử dụng là chuyển số liệu trong CSDL đã cho về CSDL chỉ chứa các giá trị 0, 1 và áp dụng các thuật toán đã có (như các thuạt toán trình bày ở trên). Thí dụ, trong mục "tuổi", có thể chia ra các miền "trẻ", "trung niên" và "già" với các miền giá trị tương ứng là [0,35], [36,55], [56,80] và nếu một giá trị của CSDL ban đầu rơi vào miền giá trị nào thì ta ghi 1 cho vị trí tương ứng trong CSDL chuyển đổi, ngược lại gán giá trị 0. Phương pháp này đơn giản về mặt thực thi nhưng có thể gây băn khoăn do ranh giới cứng mà người ta đưa ra khi tiến hành chuyển đổi. Chẳng hạn hai người tuổi 35 và 36 tuy rất gần nhau về mặt tuổi tác nhưng lại thuộc hai lớp khác nhau là "trẻ" và "trung niên", dẫn tới việc đưa ra những luật kết hợp có thể thiếu tính chính xác.

Để khắc phục khó khăn như vậy người ta sử dụng cách tiếp cận mờ để khắc phục điều này, theo đó, một giá trị bất kỳ của CSDL ban đầu không chuyển đổi về giá trị 0 hoặc 1 như trên mà sẽ chuyển về một tập giá trị thực

thuộc đoạn [0,1], là độ thuộc của giá trị đã cho vào các tập mờ được xác định trước. Thí dụ, người tuổi 35 trong ví dụ trên, ở CSDL đã chuyển đổi sẽ nhận tập giá trị {(trẻ, 0,8), (trung niên, 0,6), (già, 0,1)}. Phương pháp này, tuy dẫn tới việc xử lý phức tạp hơn nhưng dễ chấp nhận hơn về mặt trực quan và hiện đang được nhiều nhà nghiên cứu quan tâm (xem [6]).

Với luật kết hợp mờ, như đã nói trong phần mở đầu, với mỗi mục có thể chia ra các miền mờ (như "trẻ", "trung niên"..), thực chất là ta chia một mục ban đầu thành các mục con và giá trị của mỗi hàng tại mục đó sẽ nằm trong [0,1]

chứ không chỉ là 0 hoặc 1. Khi đó, độ hỗ trợ của một miền mờ si thuộc mục xi

được định nghĩa là:

FS(Asxii) = 1nnj=1àsxii(dxji),

còn độ hỗ trợ của các miền mờ s1, s2, .., sk của các mục x1, x2,.., xk tương ứng sẽ là

)]

ở đó xi là mục thứ i, si là miền mờ thuộc mục thứ i, n là số hàng trong CSDL,

i i

x

às (dxji)là độ thuộc của giỏ trị tại cột thứ i, hàng j vào tập mờ si. Cụng việc còn lại là áp dụng một thuật toán khai phá luật kết hợp kinh điển cho khai phá CSDL mờ này với các định nghĩa mở rộng của độ hỗ trợ và độ tin cậy. Vì việc áp dụng lý thuyết ĐSGT vào khai phá dữ liệu không làm thay đổi căn bản các bước thuật toán khai phá dữ liệu mờ nên chúng tôi sẽ trình bày cụ thể thuật toán khai phá luật kết hợp mờ ở chương sau.

Chương 3

Một phần của tài liệu Khai phá luật kết hợp mờ dựa trên đại số gia tử (Trang 38 - 45)

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

(75 trang)
w