Thuật toán

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

Trên cơ sở các định lý và các hệ quả đƣợc trình bày ở trên, luận văn đi tìm hiểu thuật toán để rút trích 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 phân lớp khi các giá trị thuộc tính thay đổi, chỉ 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 trong hình sau:

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

Thuật toán 2.1: Tính ma trận độ hỗ trợ tại một 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 n do begin Sup(Ci, Dj) = |Ci Dj|; Bắt đầu 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 Tính các ma trận Acc(t+1)(C, D) và Cov(t+1)(C, D) Sinh các luật Kết thúc

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 hợp lại thành một 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) or(ft(Cp, a*) = y and ft(Cq, a*) = w) then

begin

kiemtra =1;

for k = 1 to |C| do //|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, a*) ft(Cq, a*)) then begin

kiemtra = 0; break; end;

end; if kiemtra = 1 then begin lƣu (Cp, Cq) vào CC; 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;

Xóa 2 dòng tƣơng ứng với Cp và Cq; 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à có 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 có giá trị z trên thuộc tính a* đƣợc làm mịn thành y

Phƣơng pháp:

//Tìm lớp điều kiện Cs đƣợc tách thành hai lớp 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 Cq; end;

end; end;

// Tính Sup tại thời điểm t+1 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 hai 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;

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 hai 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 hai 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;

// Tìm lớp * z D đƣợc tách thành hai 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 hai cột Dw, Dy;

Kết thúc.

Chú ý: Trong thuật toán 2.5 này vì tập thuộc 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 hai giá trị mới là w và y, ta có ngay hai lớp tƣơng đƣơng quyết định mới tƣơng ứng là Dy và Dw.

Diễn giải làm việc của các thuật toán từ 2.2 đến 2.5

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

Các thuật toán này đều đƣợc làm việc theo cơ chế: Đầu tiên nó thực hiện việc tìm 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 mới tƣơng đƣơng (khi làm thô) hoặc tìm một lớp tƣơng đƣơng bị tách thành lớp tƣơng đƣơng mới (làm mịn), sau đó cập nhật lại các dòng (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 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

SupN = 0; //Vecto tổng dòng gồm n giá trị để tính Acc SupM = 0;//Vecto tổng cột gồm m giá trị để tính Cov //Tinhtong

for i = 1 to n do

for j = 1 to n do begin

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

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

- 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 end

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ể 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 đế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 quyết định trên bảng dữ liệu có các giá trị thuộc tính thay đổi (Trang 34)

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

(74 trang)