Trong y khoa,chúng có thể được sử dụng để xây dựng các hệ thống hỗ trợ chẩn đoán, giúp bác sĩđưa ra quyết định dựa trên các triệu chứng và dữ liệu bệnh nhân.. Thuật toán học quy nạp ILA
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TPHCM KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC HỌC PHẦN: TRÍ TUỆ NHÂN TẠO ( CMP169)
Chủ đề: Nghiên cứu về giải thuật ILA và ILA2
Giảng viên hướng dẫn: THS.Nguyễn Văn Cẩn
Sinh viên thực hiện:
1 Hoàng Anh Đức 2280600715 22DTHA1
2 Lê Đức Đạt 2280600584 22DTHD3
3 Nguyễn Duy Khang 2280601403 22DTHD2
Nhóm:13
Trang 2LỜI CẢM ƠN
Lời nói đầu tiên em xin chân thành cảm ơn Trường đại học Công nghệ TP.HCM nói chung và Khoa Công nghệ Thông tin nói riêng đã tạo điều kiện cho chúng em học tập
và thực hiện thành công bản báo cáo đồ án môn học này
Chúng em xin chân thành cảm ơn thầy đã dành thời gian và tận tâm giúp đỡ nhóm trong quá trình làm báo cáo đồ án Thầy đã trang bị cho nhóm em những kiến thức cần thiết và hướng dẫn cách tiếp cận vấn đề một cách khoa học và có hệ thống.Thời gian làm báo cáo đồ án không phải lúc nào cũng dễ dàng, và nhóm đã gặp phải nhiều khó khăn và thách thức Nhưng nhờ sự hướng dẫn tận tâm của thầy, nhóm đã có thể vượt qua những khó khăn đó và hoàn thành đồ án một cách thành công.Nhóm em xin bày
tỏ lòng biết ơn đối với những góp ý và phản hồi chân thành từ thầy Những ý kiến đó không chỉ giúp nhóm cải thiện báo cáo đồ án mà còn giúp nhóm hiểu rõ hơn về chủ đề
và phát triển khả năng nghiên cứu của mình
Nhóm em không thể quên nhắc đến sự đóng góp của thầy trong việc mở rộng tầm nhìn của em Thầy đã giới thiệu những nguồn tài liệu quan trọng và đưa ra những ý tưởng mới mẻ, giúp nhóm em có cái nhìn toàn diện hơn về đề tài.Cuối cùng, em thay mặt nhóm xin gửi lời cảm ơn sâu sắc và biết ơn thầy đã tạo điều kiện cho chúng em để hoàn thành đồ án một cách tốt nhất Em rất biết ơn vì sự đồng hành và sự tin tưởng của thầy Kính chúc thầy sức khỏe dồi dào và thành công trong sự nghiệp giảng dạy
Trân trọng gửi đến thầy.
Trang 3MỤC LỤC
I PHẦN I – TỔNG QUAN GIẢI THUẬT ILA 4
1.1 Giới thiệu 4
1.2 Thuật toán học quy nạp (ILA) 4
1.2.1 Yêu cầu chung 4
1.2.2 Các Step thực hiện 4
1.2.3 Cài đặt minh họa bằng java 5
1.3 Ưu điểm của ILA 10
1.3.1 Đơn giản và dễ hiểu: 10
1.3.2 Tốc độ xử lý nhanh: 10
1.3.3 Hiệu quả với dữ liệu nhỏ: 10
1.3.4 Dễ dàng kiểm tra và phân tích: 10
1.3.5 Khả năng phát hiện các mẫu đơn giản: 10
1.4 Nhược điểm của Reinforcement Learning 10
1.4.1 Giới hạn với dữ liệu lớn và phức tạp: 10
1.4.2 Dễ bị quá khớp (overfitting): 10
1.4.3 Phụ thuộc vào dữ liệu huấn luyện: 10
1.4.4 Khả năng mở rộng hạn chế: 10
1.4.5 Không linh hoạt với các thay đổi: 10
II PHẦN II – GIẢI THUẬT ILA2 10
2.1 Giới thiệu 10
2.1.1 Giải thuật ILA-2: 10
2.1.2 Nền Tảng Khoa Học 11
2.2 Mô tả thuật toán ILA-2 với một ví dụ đang chạy 11
2.2.1 Tập dữ liệu 11
2.2.2 Tìm Tổ Hợp Thuộc Tính 12
2.2.3 Tạo Quy Tắc Quyết Định 12
2.3 Ưu điểm ILA-2 12
2.4 Nhược điểm của ILA-2 13
2.5 So sánh ILA và ILA-2 13
III ỨNG DỤNG TRONG THỰC TIỄN 14
3.1 Chẩn đoán bệnh 14
3.2 Nhận dạng khuôn mặt 15
Trang 43.3 Tay lái tự động (Lái xe tự động) 16 3.4 Đánh giá rủi ro tín dụng ( Credit Risk Assessment ) 17
Trang 5MỞ ĐẦU
Thuật toán ILA (Iterative Learning Algorithm) là một phương pháp học máy đơn giản nhưng hiệu quả, được sử dụng để xây dựng các mô hình dự đoán dựa trên dữ liệu huấn luyện ILA hoạt động bằng cách lặp đi lặp lại việc tìm kiếm các mẫu và quy luật trong dữ liệu, từ đó xây dựng các luật để phân loại các mẫu mới Các luật này thường
có dạng "Nếu thì ", giúp đơn giản hóa việc ra quyết định và phân loại dữ liệu ILA được đánh giá cao vì tính dễ hiểu và khả năng giải thích rõ ràng các kết quả dự đoán ILA-2 là phiên bản cải tiến của thuật toán ILA, với mục tiêu tối ưu hóa hiệu suất và
độ chính xác của mô hình dự đoán ILA-2 cải thiện quá trình tìm kiếm và xây dựng các luật bằng cách sử dụng các kỹ thuật tối ưu hóa tiên tiến hơn Điều này giúp ILA-2
xử lý dữ liệu nhanh hơn và hiệu quả hơn, đặc biệt là với các tập dữ liệu lớn và phức tạp Ngoài ra, ILA-2 còn bổ sung các cơ chế kiểm tra và điều chỉnh các luật để đảm bảo tính chính xác và độ tin cậy của mô hình
Cả ILA và ILA-2 đều có nhiều ứng dụng trong các lĩnh vực khác nhau Trong y khoa, chúng có thể được sử dụng để xây dựng các hệ thống hỗ trợ chẩn đoán, giúp bác sĩ đưa ra quyết định dựa trên các triệu chứng và dữ liệu bệnh nhân Trong kinh doanh, chúng có thể được áp dụng để phân tích thị trường, dự đoán xu hướng và phát hiện gian lận Nhờ tính linh hoạt và hiệu quả, ILA và ILA-2 là những công cụ hữu ích trong việc khai thác và sử dụng dữ liệu để ra quyết định và dự đoán
I PHẦN I – TỔNG QUAN GIẢI THUẬT ILA
1.1 Giới thiệu
Học quy nạp là một loại học máy nhằm mục đích xác định các mẫu trong dữ liệu và khái quát hóa chúng cho các tình huống mới Thuật toán học quy nạp (ILA) tạo ra một
mô hình dựa trên một tập hợp các ví dụ huấn luyện, sau đó được sử dụng để dự đoán các ví dụ mới Học quy nạp thường được sử dụng trong học có giám sát, trong đó dữ liệu được dán nhãn, nghĩa là câu trả lời đúng sẽ được cung cấp cho mỗi ví dụ Dựa trên các ví dụ được gắn nhãn này, mô hình sau đó sẽ được huấn luyện để ánh xạ đầu vào thành đầu ra
1.2 Thuật toán học quy nạp (ILA)
Thuật toán ILA( Inductive Learning Algorithm) được dung để xác định các luật phân loại cho tập hợp các mẫu học Thuật giải này thực hiện theo cơ chế lặp, để tìm luật riêng đại diện cho tập mẫu của từng lớp 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, đồng thời them luật mới vào tập luận Kết qủa có được là một danh sách có thứ tự các luật chứ không là một cây quyết Các ưu điểm của thuật giải này có thể được trình bày như sau:
1.2.1 Yêu cầu chung
1 Các ví dụ được liệt kê trong một bảng trong đó mỗi hàng tương ứng với một ví dụ
và mỗi cột chứa các giá trị thuộc tính
2 Một tập hợp m ví dụ đào tạo, mỗi ví dụ bao gồm k thuộc tính và một thuộc tính lớp với n quyết định có thể
3 Một tập hợp quy tắc, R, với giá trị ban đầu là rỗng
4 Tất cả các hàng trong bảng ban đầu không được đánh dấu
Trang 61.2.2 Các Step thực hiện
Bước 1: Chia mẫu ban đầu thành n bảng con Mỗi bảng con ứng với một giá trị của thuộc tính quyết định của tập mẫu
Thực hiện lần lượt các bước từ 2 đến 8 cho mỗi bảng con có được
Bước 2: j=1(j là số thuộc tính của tổ hợp T)
Bước 3: Trên mỗi bảng con đang khảo sát, chia danh sách các thuộc tính thành cáctổ hợp khác nhau, mỗi tổ hợp bao gồm j thuộc tính
Bước 4: Với mỗi tổ hợp thuộc tính có được tính số lần giá trị thuộc tính xuất hiện theo cùng tổ hợp thuộc tính trong các dòng còn lại của bảng con đang xét (mà đồng thời không xuất hiện tổ hợp giá trị này trên tất cả các bảng còn lại)
Tổ hợp T thuộctính
giá trịcủa thuộc tính
Gọi tổ hợp đầu tiên(trong bảng con) có số lần xuất hiện nhiều nhất là tổ hợp lớn nhất Bước 5: Nếu tổ hợp lớn nhất có giá trị bằng 0, tang j lên 1 và quay lại bước 3
Bước 6:Loại bỏ các dòng thỏa mãn tổ hợp lớn nhất ra khỏi bảng con đang xử lý
Bước 7: Thêm luật mới vào tập luật R, với vế trái là tập các thuộc tính của tổ hợp lớn nhất( Két hợp các thuộc tính bằng toán tử AND) và vế phải là giá trị thuộc tính quyết định tương ứng
Bước 8: Nếu tất cả các dòng đều đã được loại bỏ, tiếp tục thực hiện bước 2 cho các bảng còn lại Ngược lại( nếu còn dòng chưa bị loại bỏ ) thì quay lại bước 4 Nếu tất cả các dòng con đã được xét thì kết thúc Tập R chính là tập luật cần tìm
1.2.3 Cài đặt minh họa bằng java
1 Cấu trúc dữ liệu
1.1 Record
public class MyListViewItem
{
private ArrayList fields = new ArrayList();
public int Cardinality { get { return fields.Count; } }
}
1.2 Tập các record của Table
public class ListViewItemSet
{
private ArrayList items = new ArrayList();
public int Cardinality { get { return items.Count; } }
Trang 7public void AddListViewItem(MyListViewItem item)
{
items.Add(item);
}
public void RemoveListViewItem(MyListViewItem item)
{
items.Remove(item);
}
public MyListViewItem this[int index]
{
get { return (MyListViewItem)items[index]; }
}
public void CopyOf(ListViewItemSet otherSet)
{
items = new ArrayList(otherSet.items);
}
}
private ListViewItemSet items;
public ListViewItemSet item1 = new ListViewItemSet();
public ListViewItemSet item2 = new ListViewItemSet();
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 = new ListViewItemSet();
2 Cài đặt
2.1 Thuật toán tách Table thành hai Table con theo giá trị của thuộc tính kết quả
private void distributeTable()
{
int last = this.columns.Cardinality - 1;
for (int i = 0; i < this.items.Cardinality; i++)
{
if (this.items[i][last].Equals(this.items[0][last]))
this.item1.AddListViewItem(this.items[i]);
else
this.item2.AddListViewItem(this.items[i]);
}
this.oldItem1.CopyOf(this.item1);
}
Trang 82.2 Thuậ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();
if (count > cols.Cardinality) return result;
for (int i = 0; i < cols.Cardinality; i++)
{
MyListViewItem item = new MyListViewItem();
for (int j = i; j < i + count && j < cols.Cardinality; j++)
item.AddField(cols[j]);
result.AddListViewItem(item);
}
return result;
}
2.3 Thuậ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, ListViewItemSet current)
{
ListViewItemSet result = new ListViewItemSet();
for (int i = 0; i < current.Cardinality; i++)
{
MyListViewItem item = new MyListViewItem();
for (int j = 0; j < tohop.Cardinality; j++)
{
int id = this.colSet.IndexOf(tohop[j]);
item.AddField(current[i][id]);
}
result.AddListViewItem(item);
}
return result;
}
2.4 Thuậ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();
for (int i = 0; i < tapgiatri.Cardinality; i++)
{
int count = 0;
if (!this.In(tohop, tapgiatri[i], other))
{
for (int j = 0; j < current.Cardinality; j++)
Trang 9{
bool match = true;
for (int k = 0; k < tohop.Cardinality; k++)
{
int id = this.colSet.IndexOf(tohop[k]);
if (!current[j][id].Equals(tapgiatri[i][k]))
{
match = false;
break;
}
}
if (match) count++;
}
}
tapgiatri[i].AddField(count.ToString());
temp.AddListViewItem(tapgiatri[i]);
}
result = temp[0];
for (int 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;
}
2.5 Thuật toán ILA
public void Algorithm(ListViewItemSet currentSet, ListViewItemSet otherSet) {
int tohop = 1;
string kq = currentSet[0][this.colSet.Cardinality].Name;
while (true)
{
ListViewItemSet taptohop = this.timtaptohop(this.colSet, tohop);
ListViewItemSet taptohoplonnhat = new ListViewItemSet();
for (int i = 0; i < taptohop.Cardinality; i++)
{
ListViewItemSet tapgiatri = this.timtapgiatri(taptohop[i], currentSet);
MyListViewItem tohoplonnhat = this.timtohoplonnhat(taptohop[i], tapgiatri, currentSet, otherSet);
taptohoplonnhat.AddListViewItem(tohoplonnhat);
}
int max = Convert.ToInt32(taptohoplonnhat[0][tohop].Name);
Trang 10int chisomax = 0;
for (int i = 1; i < taptohoplonnhat.Cardinality; i++)
if (Convert.ToInt32(taptohoplonnhat[i][tohop].Name) > max) {
max = Convert.ToInt32(taptohoplonnhat[i][tohop].Name); chisomax = i;
}
if (max == 0)
{
tohop++;
if (tohop > this.colSet.Cardinality) break;
continue;
}
ListViewItemSet tempSet = new ListViewItemSet();
tempSet.CopyOf(currentSet);
for (int i = 0; i < currentSet.Cardinality; i++)
{
bool match = true;
for (int j = 0; j < taptohop[chisomax].Cardinality; j++)
{
int id = this.colSet.IndexOf(taptohop[chisomax][j]);
if (!currentSet[i][id].Equals(taptohoplonnhat[chisomax][j])) {
match = false;
break;
}
}
if (match) tempSet.RemoveListViewItem(currentSet[i]); }
currentSet.CopyOf(tempSet);
MyListViewItem rule = new MyListViewItem();
int idIndex = this.colSet.IndexOf(taptohop[chisomax][0]);
for (int i = 0; i < this.colSet.Cardinality; i++)
{
if (i == idIndex)
{
rule.AddField(taptohoplonnhat[chisomax][0]);
if (0 < taptohop[chisomax].Cardinality - 1)
idIndex = this.colSet.IndexOf(taptohop[chisomax][1]); }
Trang 11else
rule.AddField(new MyField(""));
}
rule.AddField(kq);
this.rules.AddListViewItem(rule);
}
}
1.3 Ưu điểm của ILA
1.3.1 Đơn giản và dễ hiểu:
Thuật toán ILA khá đơn giản và dễ hiểu, dễ dàng triển khai và giải thích
1.3.2 Tốc độ xử lý nhanh:
Do tính chất đơn giản của thuật toán, ILA thường có tốc độ xử lý nhanh hơn so với các thuật toán học máy phức tạp khác
1.3.3 Hiệu quả với dữ liệu nhỏ:
ILA hoạt động tốt với các bộ dữ liệu nhỏ và trung bình, giúp nhanh chóng tìm
ra các luật quyết định
1.3.4 Dễ dàng kiểm tra và phân tích:
Các luật thu được từ ILA có thể dễ dàng kiểm tra và phân tích bằng cách theo dõi từng bước của thuật toán
1.3.5 Khả năng phát hiện các mẫu đơn giản:
ILA có khả năng phát hiện ra các mẫu đơn giản và trực quan trong dữ liệu, giúp đưa ra các quyết định dễ dàng
1.4 Nhược điểm của Reinforcement Learning
1.4.1 Giới hạn với dữ liệu lớn và phức tạp:
ILA không hoạt động tốt với các bộ dữ liệu lớn và phức tạp, do thuật toán này
có thể gặp khó khăn trong việc xử lý và tổng hợp thông tin từ dữ liệu lớn
1.4.2 Dễ bị quá khớp (overfitting):
ILA có thể dễ dàng bị quá khớp với dữ liệu huấn luyện, dẫn đến việc mô hình không thể tổng quát hóa tốt khi áp dụng vào dữ liệu mới
1.4.3 Phụ thuộc vào dữ liệu huấn luyện:
Hiệu quả của ILA phụ thuộc rất nhiều vào chất lượng và đặc điểm của dữ liệu huấn luyện Nếu dữ liệu không đại diện hoặc bị nhiễu, các luật thu được có thể không chính xác
1.4.4 Khả năng mở rộng hạn chế:
Khi số lượng thuộc tính hoặc số lượng bản ghi tăng lên, độ phức tạp của thuật toán tăng theo cấp số nhân, làm giảm hiệu suất của ILA
1.4.5 Không linh hoạt với các thay đổi:
ILA không linh hoạt khi có các thay đổi trong dữ liệu hoặc khi có thêm dữ liệu mới Mô hình cần được huấn luyện lại từ đầu khi có sự thay đổi
Trang 12II PHẦN II – GIẢI THUẬT ILA2
2.1 Giới thiệu
2.1.1 Giải thuật ILA-2:
Thuật toán Inductive Learning Algorithm (ILA-2) là một giải thuật học máy được thiết kế để khai thác các quy tắc quyết định từ tập dữ liệu, nhằm giúp phân loại và
dự đoán các kết quả trong các bài toán phân tích dữ liệu ILA-2, là một cải tiến của thuật toán ILA (Inductive Learning Algorithm) gốc, tập trung vào việc tối ưu hóa quy trình học từ dữ liệu để rút ra các quy tắc hiệu quả và chính xác hơn Giải thuật này chủ yếu được áp dụng trong các lĩnh vực khai thác dữ liệu, học máy và phân tích dữ liệu lớn
2.1.2 Nền Tảng Khoa Học
ILA-2 thuộc nhóm các thuật toán học máy sử dụng phương pháp học quy tắc, nơi mục tiêu chính là từ một tập hợp các ví dụ được gán nhãn (dữ liệu huấn luyện), giải thuật
sẽ học để hình thành các quy tắc quyết định có thể áp dụng cho các ví dụ chưa được gán nhãn Thuật toán sử dụng các quy tắc quyết định để phân loại các đối tượng vào các lớp khác nhau dựa trên thuộc tính của chúng
2.1.3 Sự Phát Triển
Thuật toán ILA-2 được phát triển từ các phiên bản trước đó của thuật toán ILA với các cải tiến về khả năng xử lý dữ liệu và hiệu quả tổng quát Sự phát triển này bao gồm việc tối ưu hóa các bước học quy tắc, cải thiện khả năng xử lý dữ liệu lớn và nâng cao
độ chính xác của các quy tắc quyết định ILA-2 mang lại hiệu suất tốt hơn trong việc khai thác quy tắc từ tập dữ liệu phức tạp và lớn, và do đó trở thành một công cụ mạnh
mẽ trong học máy và khai thác dữ liệu
2.2 Mô tả thuật toán ILA-2 với một ví dụ đang chạy
Thuật toán Inductive Learning Algorithm-2 (ILA-2) là một phương pháp học máy dùng để khai thác các quy tắc quyết định từ dữ liệu Để làm rõ cách hoạt động của thuật toán này, chúng ta sẽ thực hiện một ví dụ chi tiết về cách ILA-2 làm việc từ đầu đến cuối
2.2.1 Tập dữ liệu
Tuổi Thu Nhập Tình Trạng Hôn
Nhân
Mua Hàng
45 Trung Bình Đã Kết Hôn Không
Mô Tả Các Thuộc Tính
Tuổi: Phân loại thành các nhóm như "Trẻ", "Trung Bình", "Già"