1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thuật toán tìm luật phân lớp ILA

22 6,5K 39

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 514,5 KB

Nội dung

Thuật toán lặp để tìm luật phân lớp cho từng phân hoạch của tập dữ liệu mẫu. Sau khi xác định được luật, ILA loại bỏ các mẫu liên quan khỏi tập mẫu và thêm luật mới này vào tập luật. Kết quả có được là một danh sách có thứ tự các luật.

Trang 1

Mục lục

I.Thuật toán tìm luật phân lớp ILA 2

1.Thuật toán ILA: 2

2 Nhận xét: 3

II Cài đặt thuật toán (minh họa bằng C#) 4

1.Cấu trúc dữ liệu: 5

1.1 Record: 5

1.2 Tập các record của Table: 5

1.3 Tập thuộc tính của Table: 5

1.4 Tập các luật thu được: 5

2.Cài đặt: 5

2.1Thuật toán tách Table thành hai Table con theo giá trị của thuộc tính kết quả: 5

2.2Thuật toán tìm các tổ hợp j phần tử từ tập hợp n thuộc tính của Table: 6

2.3Thuật toán tìm tập giá trị của một tổ hợp thuộc tính: 6

2.4Thuật toán tìm tổ hợp lớn nhất: 7

2.5Thuật toán ILA: 8

III Các Form của chương trình với tập dữ liệu test thử 9

Main Form: 10

Step 1: 12

Step 2: 13

Step 3: 14

Step 4: 15

Step 5: 16

Step 6: 17

Step 7: 18

Step 8: 19

Step 9: 20

IV Nhận xét và kết luận 21

1 Ưu điểm: 21

2 Khuyết điểm: 21

V Hướng phát triển 22

VI Tài liệu tham khảo 22

Trang 2

I.Thuật toán tìm luật phân lớp ILA

1.Thuật toán ILA:

Thuật toán lặp để tìm luật phân lớp cho từng phân hoạch của tập dữ liệu mẫu.Sau khi xác định được luật, ILA loại bỏ các mẫu liên quan khỏi tập mẫu và thêm luật mới này vào tập luật

Kết quả có được là một danh sách có thứ tự các luật

Tổ hợp lớn nhất.

Bước 5:

Nếu (số lần xuất hiện của tập giá trị của Tổ hợp lớn nhất) = 0

Trang 3

Theo bảng này thì Tổ hợp lớn nhất luôn có giá trị bằng 0, mà theo

thuật toán thì nếu tổ hợp lớn nhất có giá trị bằng 0 -> tăng số lượng phần

tử của tổ hợp lên 1, nghĩa là j = 2, như vậy thì lại vượt quá (số thuộc tính của bảng–1)=1 Và nếu ta không tăng j và trở lại Bước 3 mà tiếp tục thực hiện Bước 6 và Bước 7 thì ta sẽ thu được các luật giống y như bảng quyết định ban đầu:

Trang 4

R1: If A then Y

R2: If A then N

 Hai luật này không mâu thuẫn nhưng nó là một kết quả vô nghĩa, không

có giá trị gì cả vì khi người ta có được A thì cũng không biết được kết quả là Y hay N

 Như vậy thì để tránh mất thời gian thực hiện thuật toán một cách vô ích, chúng ta phải “đánh giá” được tập các giá trị đầu vào để quyết định có hay không thực hiện thuật toán Đối với bảng quyết định có ít thuộc tính

và ít số record thì việc này còn khả thi, còn nhiều thì ta không thể “đánh giá” được và như vậy thì ta phải cho thực hiện thuật toán

 Tuy nhiên ta có nhận xét rằng nếu ở tất cả các tổ hợp có số lượng thuộc tính < (số lượng thuộc tính của bảng – 1) mà ta đều thu được tổ hợp lớn nhất có giá trị bằng 0 thì kết luật tập luật = rỗng, không phải thực hiện Bước 6 và Bước 7 để thêm những luật vô nghĩa

II Cài đặt thuật toán (minh họa bằng C#)

Trang 5

1.Cấu trúc dữ liệu:

1.1 Record:

publicclass MyListViewItem

{

private ArrayList fields;

privateint cardinality;

}

1.2 Tập các record của Table:

publicclass ListViewItemSet

{

private ArrayList items;

privateint cardinality;

}

private ListViewItemSet items;

public ListViewItemSet item1;

public ListViewItemSet item2;

1.3 Tập thuộc tính của Table:

private MyListViewItem columns;

private MyListViewItem colSet; //không kể thuộc tính kết quả

1.4 Tập các luật thu được:

public ListViewItemSet rules;

Trang 6

int last = this columns.Cardinality - 1;

for ( int i = 0; i < this items.Cardinality; i++) {

//Add this.item1, this.item2

if ( this items[i][last].Equals( this items[0][last]))

this item1.AddListViewItem( this items[i]);

else

this item2.AddListViewItem( this items[i]);

}//end of for this oldItem1.CopyOf( this item1);

}//end of function

2.2Thuật toán tìm các tổ hợp j phần tử từ tập hợp n thuộc tính của Table:

private ListViewItemSet timtaptohop(MyListViewItem cols, int count) {

ListViewItemSet result = new ListViewItemSet();

ListViewItemSet temp = new ListViewItemSet();

for (j = i; j < (i+count-1); j++)

item.AddField(cols[j]);

temp.AddListViewItem(item);

} }//end of for i while (x < temp.Cardinality) {

for (k = (x + count -1); k < cols.Cardinality; k++) {

MyListViewItem temp1 = new MyListViewItem();

}//end of while return result;

}//end of function

2.3Thuật toán tìm tập giá trị của một tổ hợp thuộc tính:

private ListViewItemSet timtapgiatri(MyListViewItem tohop,

Trang 7

ListViewItemSet current) {

int j;

int id;

ListViewItemSet result = new ListViewItemSet();

for ( int i = 0; i < current.Cardinality; i++) {

MyListViewItem item = new MyListViewItem();

for (j = 0; j < tohop.Cardinality; j++) {

id = this colSet.IndexOf(tohop[j]);

item.AddField(current[i][id]);

} result.AddListViewItem(item);

}//end of for i return result;

}//end of function

2.4Thuật toán tìm tổ hợp lớn nhất:

private MyListViewItem timtohoplonnhat(MyListViewItem tohop,

ListViewItemSet tapgiatri, ListViewItemSet current, ListViewItemSet other) {

MyListViewItem result = new MyListViewItem();

ListViewItemSet temp = new ListViewItemSet();

tapgiatri[i].AddField((0).ToString());

} else {

count = 0;

for (j = 0; j < current.Cardinality; j++) {

for (k = 0; k < tohop.Cardinality; k++) {

id = this colSet.IndexOf(tohop[k]);

if (current[j][id]

.Equals(tapgiatri[i][k]) == false ) break ;

}//end of for k

if (k == tohop.Cardinality)

count++;

Trang 8

}//end of for j tapgiatri[i].AddField(count.ToString());

}//end of else temp.AddListViewItem(tapgiatri[i]);

}//end of for i result = temp[0];

for (i = 1; i < temp.Cardinality; i++)

if (Convert.ToInt32(result[tohop.Cardinality].Name) <

Convert.ToInt32(temp[i][tohop.Cardinality].Name)) result = temp[i];

return result;

}//end of function

2.5Thuật toán ILA:

public void Algorithm(ListViewItemSet currentSet,

ListViewItemSet otherSet) {

ListViewItemSet taptohop = new ListViewItemSet();

ListViewItemSet taptohoplonnhat = new ListViewItemSet();

//tren currentSet,chia danh sach this.colSet thanh cac to hop co

(this.tohop)thuoc tinh

taptohop = this timtaptohop( this colSet, this tohop);

for (i = 0 ; i < taptohop.Cardinality; i++) {

ListViewItemSet tapgiatri = new ListViewItemSet();

tapgiatri = this timtapgiatri(taptohop[i],currentSet); MyListViewItem tohoplonnhat = new MyListViewItem();

tohoplonnhat = this timtohoplonnhat(taptohop[i],

tapgiatri,currentSet,otherSet);

taptohoplonnhat.AddListViewItem(tohoplonnhat);

}//end of for i max = Convert.ToInt32(taptohoplonnhat[0][ this tohop].Name);

Trang 9

taptohop[chisomax] di kem voi taptohoplonnhat[chisomax]

ListViewItemSet tempSet = new ListViewItemSet();

tempSet.CopyOf(currentSet);

for (i = 0; i < currentSet.Cardinality; i++) {

for (j = 0; j < taptohop[chisomax].Cardinality; j++) {

id = this colSet.IndexOf(taptohop[chisomax][j]);

if (currentSet[i][id].Equals

(taptohoplonnhat[chisomax][j]) == false ) break ;

//them luat moi vao this.rules,dua vao taptohop[max] va

rule.AddField(taptohoplonnhat[chisomax][j]);

if (j < (taptohop[chisomax].Cardinality-1)) {

j++;

id = this colSet

.IndexOf(taptohop[chisomax][j]);

} }

Trang 12

Step 1:

Trang 13

Step 2:

Trang 14

Step 3:

Trang 15

Step 4:

Trang 16

Step 5:

Trang 17

Step 6:

Trang 18

Step 7:

Trang 19

Step 8:

Trang 20

R4: Không có bọt biển -> Không có sóng lớn

R5: Biển dao động trung bình và nước rút trung bình -> Không có

sóng lớn

Trang 21

IV Nhận xét và kết luận

1 Ưu điểm:

 Chương trình có giao diện tiện dụng để tương tác với người sử dụng

 Số field của bảng quyết định (Table) được nhập và sửa đổi động khi thực hiện chương trình

 Dựa vào đó, tập record của Table cũng được nhập động khi thực hiện chương trình

 Chương trình hiển thị cho người sử dụng thấy kết quả của tất cả các bước trong thuật toán giúp cho người sử dụng tiện theo dõi quá trình đi đến tập luật kết quả cũng như có thể kiểm tra tính đúng đắn của thuật toán

 Hiển thị các luật thu được dưới dạng bảng là cách hiển thị rõ ràng và ít bị nhầm lẫn! (theo thuật toán, các luật có cùng vế phải sẽ nằm cận nhau)

 Vì ngôn ngữ lập trình sử dụng (C#) có hỗ trợ Unicode nên các thuộc tính cũng như giá trị của các record có thể nhập bằng tiếng việt

ưu hơn để sử dụng

Trang 22

V Hướng phát triển

Tiếp tục cài đặt thuật toán học dựa trên cây định danh để có cơ sở chọn lựa thuật toán tốt, sử dụng để tìm luật phân lớp cho bảng quyết định có số lượng thuộc tính và record lớn

VI Tài liệu tham khảo

[1] Chuyên đề Công nghệ tri thức và ứng dụng – GS TSKH Hoàng Kiếm

[2] Giải một bài toán trên máy tính như thế nào – GS TSKH Hoàng Kiếm

THE

Ngày đăng: 16/08/2014, 20:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w