Thuật toán phát hiện tập chỉ báo và luật kết hợp nhị phân

Một phần của tài liệu Vấn đề phát hiện luật kết hợp trong cơ sở dữ liệu và khai phá dữ liệu (Trang 26)

Trong mục này, chúng tôi nêu một thuật toán được phát triển từ ý tưởng của thuật toán Apriori-Tid để phát hiện các tập chỉ báo nhị phân phổ biến và các luật kết hợp nhị phân lừ hệ thông tin nhị phân được đề xuất trong tài liệu [16]. Thuật toán này làm việc với các bít trong bộ nhớ và không làm việc với CSDL trên đĩa, vì thế có thể cải tiến tốc độ quá trình phát hiện luật. Cho một CSDL và hai ngưỡng MINSUP, MINCONF đối với độ hỗ trợ tối thiểu và độ tin cậy tối thiểu của luật kết hợp. Thuật toán Apriori-Tid QÓ hai pha:

Pha 1: phát hiện các tập chỉ báo phổ biến dựa trên ngưỡng MINSƯP cho trước

Pha 2: xây dựng các luật kết hợp dựa trên một ngưỡng MINCONF cho trước.

Cho ma trận thông tin nhị phân SB = (0,D,B,x) một ngưỡng u, p e [0,l]

trong đó u là MINSƯP, và p là MINCONF.

1. Phát hiện tập chỉ báo phổ biến nhị phản

1. Traloi = {};

2. Sinh Lb I từ SB; // thực hiện như trình bày trong mục a dưới đây

Cho X ị d D, độ hỗ trợ của VB(X|) biểu diễn là supB(vB(X|)) được định nghĩa

3. For (k=2; LBk<> {}; k++) do

4. Sinh Lb k từ Lb k.|; // theo cách được trình bày trong mục b dưới đây

5. Traloi = u kLBk; 6. Return Traloi;

Bảng 2.1: Thuật toán phát hiện tập chỉ báo phổ biến nhị phân

a. Sinh LBk.Ị

1 • Lg I ={};

2. For (i=l;i <= m;i++) do

3. If (card(supB(vB({d!})) > u*card(0) then

4. Begin 5. SaveLargeSetOdị Ị, LB|) 6. SaveDescriptorVector(vB( {d |}, VSB ị); 7. end; 8. Traloi = LB 9. Return Traloi;

Trong đó: m = card(D) // m là lực lượng của D

b. Tạo LBtk từ Lbm

Dựa trên thuộc tính v s gLb, T c S = > T gL b, chúng sinh ra LBk từ LBk.!. Kết

quả như sau:

Tạo một ma trận có các dòng và các cột là các thành phần của LBk.|.

1 • LB k = { h

2. For (mỗi X e L Bk.| và X <>Y) do

3. Begin

4. T = XuY;

5. If (card(supB(vB(T)) > u*card(0)) và card(T) = k) then

6. Begin

7. SaveLargeSet(T,LB k); //lưu T vào LBk

8. SaveDescriptorVector(vB(T), VSB k); // lưu VB(T) vào VSB k (adsbygoogle = window.adsbygoogle || []).push({});

9 . end;

10. end;

11. Traloi = LBk; 12. Return Traloi;

Trong đó:

SaveLargeSet(T,LB k) là một hàm để ghi một tập chỉ báo phổ biến nhị phân T vào LBk.

SaveDescriptorVector(vB(T), VSBk) là một hàm để lun một vectơ chỉ báo nhị phân VB(T) vào VSBlí.

Dựa trên (4) và (5), chúng ta có thể tính rất nhanh supB(vB(T)) tại bước thứ k của vòng lặp ở trên từ các phận tử của VSBk.[.

2. Phát hiện các luật phô biến nhị phân

1. Rb p = {}; // khởi tạo tập luật ban đầu là rỗng

2. For (mỗi L e LB ) do begin

3. For (mỗi X,Y e L và X n Y = {}) do

4. Begin

10. end;

11. Traloi=RBP;

// SaveRule(X—»Y, RBp) là hàm để ghi luật kết hợp nhị phân vào RBp. Bảng 2.2: Thuật toán phát hiện luật kết hợp nhị phân

Một phần của tài liệu Vấn đề phát hiện luật kết hợp trong cơ sở dữ liệu và khai phá dữ liệu (Trang 26)