Thuật toán

Một phần của tài liệu Khai phá luật dữ liệu trên bảng dữ liệu có thuộc tính thay đổi (Trang 33 - 41)

Trên cơ sở các định lý và các hệ quả được trình bày ở trên, luận văn trình bày thuật toán mới để trích rút các luật quyết định có ý nghĩa khi làm thô, làm mịn các giá trị thuộc tính điều kiện hoặc khi làm thô, làm mịn các giá trị thuộc tính quyết định. Thuật toán được xây dựng theo hướng tiếp cận gia tăng, không đòi hỏi phải thực hiện lại việc phân lớp khi các giá trị thuộc tính thay đổi, chi cần tìm các lớp tương đương bị thay đổi làm cơ sở cho việc cập nhật lại ma trận độ hỗ trợ tại thời điểm trước đó, dựa trên đó tính ma trận độ chính xác, ma trận độ phủ rồi sinh luật. Các bước cơ bản của thuật toán được trình bày theo mô hình 2.1 sau:

Hình 2.1: Các bước cơ bản của thuật toán trích rút luật quyết định khi làm thô/mịn các giá trị thuộc tính

Tính ma trận Sup(t) (C, D) Tính ma trận Sup(t+1) (C, D) khi làm thô (làm mịn) các giá trị thuộc tính Acc(t+1)(C, D) và Cov(t+1)(C, D) Sinh các luật Kết thúc Bắt đầu

Thuật toán 2.1 Tính ma trận độ hỗ trợ tại thời điểm t nào đó

Vào: - Các lớp tương đương điều kiện Ci - Các lớp tương đương quyết định Dj

Ra: Ma trận độ hỗ trợ (Sup) tại thời điểm t.

Phƣơng pháp: // Áp dụng định nghĩa 1.5 for i = 1 to m do for j = 1 to m do begin Sup(Ci, Dj) = Ci Dj ; end Kết thúc.

Thuật toán 2.2 Tính ma trận độ hỗ trợ tại thời điểm t+1 khi làm thô các giá trị thuộc tính điều kiện

Vào: - Ma trận độ hỗ trợ Sup tại thời điểm t - Thuộc tính điều kiện a* được làm thô

- Các giá trị w, y của a* được làm thô thành z.

Ra: Ma trận độ hỗ trợ Sup tại thời điểm t+1 sau khi làm thô thuộc tính a*

Phƣơng pháp:

//Tìm tất cả các cặp lớp tương đương điều kiện Cp, Cq được hợp thành lớp tương đương điều kiện Cs mới CC = ;

//Tập chứa các cặp lớp tương đương được hợp lại thành 1 lớp mới. for p = 1 to m do

for q = p + 1 to m do begin

if(ft(Cp, a*) = w and ft(Cq, a*) = y)

begin

kiemtra = 1; for k = 1 to |C| do

//với |C| là số các thuộc tính điều kiện begin

//Kiểm tra xem với các thuộc tính còn lại, 2 lớp có cùng giá trị không? if(ak a* and ft(Cp, ak) ft(Cq, ak)) then

begin kiemtra = 0; break; end; end; if kiemtra = 1 then begin

//Lưu các thuộc tính Cp, và Cq vào lớp CC luu(Cp, Cq) in CC;

end; end; end; end;

//Tính ma trận Sup tại thời điểm t+1 for(Cp, Cq) in CC

begin

for j = 1 to n do begin

Sup(Cs, Dj) = Sup(Cp, Dj) + Sup(Cq, Dj); end;

//Bổ sung dòng tương ứng với Cs; end;

Kết thúc.

Thuật toán 2.3: Tính ma trận độ hỗ trợ tại thời điểm t+1 khi làm mịn

các giá trị thuộc tính điều kiện.

Vào: - Ma trận Sup tại thời điểm t

- Thuộc tính điều kiện a* được làm mịn

- Tập W các đối tượng mà giá trị z trên thuộc tính a* được làm mịn thành w.

- Tập Y các đối tượng mà giá trị z trên thuộc tính a* được làm mịn thành y.

Ra: Ma trận Sup tại thời điểm t+1 sau khi làm mịn thuộc tính a*.

Phƣơng pháp:

//Tìm lớp điều kiện Cs được tách thành 2 lớp mới Cp, Cq for s = 1 to m do

begin

if ft(Cs, a) = z and Cs W and Cs Y then begin

Cp = ; Cq = ; for each x in Cs do begin

if(ft(x, a*) = w) then //Bổ sung x vào Cp else if(ft(x, a*) = y) then //Bổ sung x vào Cp end;

end; end;

for j = 1 to n do begin

//Tính Sup(Cp, Dj);

Sup(Cq, Dj) = Sup(Cs, Dj) - Sup(Cp, Dj); end;

//Xóa dòng tương ứng với Cs;

//Bổ sung 2 dòng tương ứng với Cp, Cq;

Kết thúc.

Thuật toán 2.4: Tính ma trận độ hỗ trợ tại thời điểm t+1 khi làm thô

các giá trị thuộc tính quyết định.

Vào: - Ma trận Sup tại thời điểm t

- Giá trị thuộc tính w, y của thuộc tính quyết định d được làm thô thành z.

Ra: Ma trận Sup tại thời điểm t+1 sau khi làm thô thuộc tính d.

Phƣơng pháp: //Tìm 2 lớp Dw*, Dy* được kết hợp thành lớp mới Dz. w* = -1; y* = -1; for j = 1 to n do begin if f(Dj, d) = w then w* = j; if f(Dj, d) = y then y* = j; end;

//Tính ma trận Sup tại thời điểm t+1 for i = 1 to m do

begin

Sup(Ci, Dz) = Sup(Ci, Dw*) + Sup(Ci, Dy*); end;

//Xóa 2 cột tương ứng với Dw*, Dy*; //Bổ sung cột tương ứng với Dz;

Kết thúc.

Thuật toán 2.5: Tính ma trận độ hỗ trợ tại thời điểm t+1 khi làm mịn

các giá trị thuộc tính quyết định.

Vào: - Ma trận Sup tại thời điểm t;

- Tập Dw là tập các đối tượng có giá trị trên thuộc tính d là z được làm mịn thành giá trị w;

- Tập Dy là tập các đối tượng có giá trị trên thuộc tính d là z được làm mịn thành giá trị y;

Ra: Ma trận Sup tại thời điểm t+1 sau khi làm mịn d;

Phƣơng pháp: //Tìm lớp Dz* được tách thành 2 lớp Dy, Dw mới z* = -1; for j = 1 to n do begin if f(Dj, d) = z then z* = j; end;

//Tính ma trận Sup tại thời điểm t+1 for i = 1 to m do

begin

//Tính Sup(Ci, Dw);

Sup(Ci, Dy) = Sup(Ci, Dz*) - Sup(Ci, Dw); end;

//Xóa cột Dz*;

//Bổ sung 2 cột Dw; Dy;

* Chú ý: Trong thuật toán 2.5 này, vì tập thuộc tính quyết định D chỉ có một thuộc tính d nên khi làm mịn giá trị z của d thành 2 giá trị mới là w và y, ta có ngay 2 lớp tương đương quyết định mới tương ứng với Dy và Dw.

* Diến giải làm việc của các thuật toán 2.2, 2.3, 2.4, 2.5 nhƣ sau:

Tất cả các thuật toán đó đều được xây dựng trên cơ sở các kết quả của định lý 2.1 và định lý 2.2 cùng các hệ quả 2.1, 2.2, 2.3, và hệ quả 2.4.

Các thuật toán này đều làm việc theo cơ chế: Đầu tiên nó thực hiện việc tìm ra các cặp lớp tương đương mà sẽ được kết hợp với nhau thành một lớp tương đương mới (khi làm thô) hoặc tìm một lớp tương đương bị tách thành hai lớp tương đương mới (khi làm mịn), sau đó cập nhật lại dòng (hay cột) tương ứng trong ma trận đỗ hỗ trợ tại thời điểm trước đó. Sau bước cập nhật này ta sẽ thu được ma trận đỗ hỗ trợ tại thời điểm t + 1.

Thuật toán 2.6: Tính ma trận độ chính xác và ma trận độ phủ tại thời

điểm t + 1

Vào: Ma trận độ hỗ trợ tại thời điểm t + 1.

Ra: Ma trận độ chính xác và ma trận độ phủ tại thời điểm t + 1.

Phƣơng pháp:

//Áp dụng mệnh đề 1.1.

//Vecto tổng dòng gồm n giá trị để tính độ chính xác (Acc) SupN = 0;

//Vecto tổng cột gồm m giá trị để tính độ phủ (Cov) SupM = 0;

//Tính tổng for i = 1 to m do

for j = 1 to n do begin

SupM(i) = SupM(i) + Sup(Ci, Dj); end //Tính Acc, Cov for i = 1 to m do for j = 1 to n do begin Acc(Ci, Dj) = ) ( ) , ( j SupN D C Sup i j ; Cov(Ci, Dj) = ) ( ) , ( i SupM D C Sup i j end; Kết thúc.

Thuật toán 2.7 : Trích rút luật quyết định có ý nghĩa

Vào : - Ma trận độ chính xác tại thời điểm t + 1. - Ma trận độ phủ tại thời điểm t + 1.

- Các ngưỡng , .

Ra : Các luật quyết định có ý nghĩa.

Phƣơng pháp :

//Áp dụng định nghĩa 1.7 for i = 1 to m do

for j = 1 to n do begin

if Acc(Ci, Dj) and Cov(Ci, Dj) then đưa ra Ci Dj;

Kết thúc. * Nhận xét:

Theo thời gian sự thay đổi của các giá trị thuộc tính có thể được kéo dài trong nhiều thời điểm khác nhau, khi đó toàn bộ tiến trình thay đổi có thể được chia thành một vài phần nhỏ, có nghĩa là từ thời điểm t đến thời điểm t+1, từ thời điểm t+1 tiếp theo đến thời điểm t+2, …

Vì ta luôn thực hiện việc lưu lại ma trận độ hỗ trợ, các lớp tương đương điều kiện và các lớp tương đương quyết định, nên tại thời điểm mới (giả sử là t+2), ma trận độ hỗ trợ, các lớp tương đương đã thu được ở thời điểm trước (thời điểm t+1) sẽ được sử dụng lại như là các giá trị tại thời điểm t.

Một phần của tài liệu Khai phá luật dữ liệu trên bảng dữ liệu có thuộc tính thay đổi (Trang 33 - 41)