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.