bài tập lớn môn hệ chuyên gia đã từng được 9 điểm, bản world đúng quy chuẩn, code bằng ngôn ngữ c kỹ và sạch, chay bằng visual studio, desgin đẹp, chúng tôi muốn chia sẽ cho các bạn tham khảo thêm, jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI ﻣKHOA CÔNG NGHỆ THÔNG TIN ﻣ BÀI TẬP LỚN MÔN: HỆ CHUYÊN GIA ĐỀ TÀI: XÂY DỰNG HỆ CHUYÊN GIA CHUẨN ĐOÁN BỆNH LAO PHỔI BẰNG PHƯƠNG PHÁP ID3 Giáo viên hướng dẫn: Th.s Trần Hùng Cường Hà Nội – 2020 MỤC LỤC LỜI NĨI ĐẦU Tính cấp thiết đề tài Thế giới ngày phát triển mạnh mẽ với hoạt động vơ đa dạng phức tạp địi hỏi khả giải vấn đề mức độ trí tuệ nhân tạo ngày cao Lĩnh vực trí tuệ nhân tạo nói chung hệ chuyên gia nói riêng góp phần tạo hệ thống có khả trí tuệ người, có tri thức tiên tiến hệ chuyên gia để giải vấn đề phức tạp sống Hệ chuyên gia thu hút mãnh mẽ ưu điểm sau - Các chương trình hệ chuyên gia ngày tỏ hữu hiệu tiện lợi đáp ứng nhu cầu thực tế - Các chương trình hệ chuyên gia ngày tỏ có tính khả thi cao - Hệ chun gia khơng có tính đơn lẻ phù hợp với nhiều cá nhân - Ở Việt Nam y học phát tr iển theo hướng đại, có khác nhiều chuyên gia giải đấu ngành với trình độ quốc tế Tuy nhiên cịn nhiều bất cập trình độ đội ngũ y sĩ, bác sĩ bệnh viên trung tâm tuyến tinh, huyện xã - Làm để sử dụng rộng rãi tri thức y học chuyên gia tất bệnh viện - Nâng cao trình độ chun mơn đội ngũ thầy thuốc tuyến tinh huyện vùng sâu vùng xa Có nhiều cách giải vấn đề Cách giải xây dựng chương trình hỗ trợ thầy thuốc việc chuẩn đoán phân loại bệnh phổi 2 Mục đích nghiên cứu Tìm hiểu phương pháp biểu diễn tri thức kĩ thuật suy diễn thường dùng hệ chuyên gia Cuối xây dựng chương trình hệ chun gia phân loại chuẩn đốn bệnh lâm sàng CHƯƠNG 1: TỔNG QUAN HỆ CHUYÊN GIA 1 Khái niệm hệ chuyên gia Theo E Feigenbaum: Hệ chuyên gia (Expert System) chương trình máy tính thơng minh sử dụng tri thức (knowledge) thủ tục suy luận (inference procedures) để giải tốn tương đối khó khăn địi hỏi chuyên gia giải Hệ chuyên gia hệ thống tin học mơ (emulates) lực đoán (decision) hành động (making abilily) chuyên gia (con người) Hệ chuyên gia lĩnh vực ứng dụng trí tuệ nhân tạo (Artificial Intelligence) Các thành phần hệ chuyên gia 1.2.1 Bộ giao diện người máy Thực giao tiếp HCG người sử dụng Bộ nhận thông tin từ người sử dụng đưa câu trả lời, lời khuyên, giải thích lĩnh vực 1.2.2 Mơ tơ suy diễn Hệ chun gia mơ hình hóa cách lập luận người với mô dun động suy diễn Hệ chuyên gia chứa động suy diễn để tiến hành suy diễn nhằm tạo tri thức dựa kiện, tri thức vùng nhớ làm việc tri thức sở tri thức.Hai kiểu suy diễn động suy diễn suy diễn tiến suy diễn lùi 1.2.3 Cơ sở tri thức Lưu trữ, biểu diễn tri thức mà hệ đảm nhận làm sở cho ác hoạt động hệ CSTT bao gồm kiện (facts) luật (rules) 1.2.4 Bộ giải thích Trả lời hai câu hỏi (why) cách (how), câu hỏi WHY nhằm mục đích cung cấp lý lẽ để thuyết phục người sử dụng theo đường suy diễn hệ chuyên gia Câu hỏi HOW nhằm cung cấp giải thích đường mà hệ chuyên gia sử dụng mang lại kết 1.2.5 Bộ tiếp nhận tri thức Làm nhiệm vụ thu nhận tri thức từ hệ chuyên gia người (human expert), từ kỹ sư xử lý tri thức người sử dụng thông qua yêu cầu lưu trữ vào CSTT 1.2.6 Bộ nhớ làm việc Chứa kiện liên quan phát trình đưa kết luận Bộ nhớ làm việc tương đương với nhớ ngắn hạn (Short- Term Memory) mô hình giải vấn đề người Hình 1: Các hành phần hệ chuyên gia 1.3 Lĩnh vực ứng dụng Điều khiển Các hệ thống điều khiển quản lý theo cách phù hợp hành vi hệ thống Chẳng hạn điều khiển trình sản xuất hay điều trị bệnh nhân Một hệ chuyên gia điều khiển lấy liệu thao tác hệ thống diễn giải liệu để hiểu trạng thái hệ thống hay dự đoán tương lai Thiết kế Hệ thống có nhiệm vụ xây dựng đối tượng theo nàng buộc Chẳng hạn thiết kế hệ thống máy tính với đủ yêu cầu cấu hình nhớ tốc độ Các hệ thống thường thực bước công việc, bước tuân theo ràng buộc riêng Chuẩn đoán Các hệ thống chuẩn đoán chức hệ thống hay phát lỗi dựa quan sát thông tin Hầu hết hệ thống chn đốn có chi thức điều kiện , nguyên nhân phát sinh lỗi Chẳng hạn hệ thống chuẩn đoán bệnh dựa triệu trứng người bệnh Giảng dạy hệ thống giảng dạy giúp giáo viên , sinh viên vài mơn học Ví dụ: 1979 Clancey đưa GUION để dạy sinh viên điều trị bệnh nhân nhiễm khuẩn Diễn giải Các hệ thống diễn giải cho phép hiều tình bất ngờ từ thơng tin có sẵn Điển hình thơng tin rút từ liệu máy có thiết bị hay kết thí nghiệm Giám sát Các hệ thống giám sát so sánh thông tin quan sát hành vi hệ | thống với trạng thái hệ thống coi gay cấn Ví dụ hệ | thống giám sát diễn giải tín hiệu thu từ đầu dị sóng so sánh thơng tin với trạng thái biết Khi phát điều kiện gay cấn hệ thống kích hoạt loạt nhiệm vụ : Lập kế hoạch | Các hệ thống lập kế hoạch tạo hành động đạt đích theo ràng buộc Chẳng hạn lập kế hoạch nhiệm vụ cho người máy để thực chức Dự đốn Người ta dùng hệ thống dự báo thời tiết để biết kết mà tình gây Các hệ thống dự báo kiện tương lai theo thông tin có theo mơ hình tốn Chuẩn trị Các hệ thống chuẩn trị khuyến cáo giải pháp chức sai Ví dụ Hệ thống BLUBOX Mulsant Servan - Schreiber đưa 1984 chuẩn trị bệnh nhân bị suy nhược Lựa chọn Các hệ thống lựa chọn dùng để xác định số lựa chọn tốt số khả Trong hệ chuyên gia người thường dùng kĩ thuật suy diễn khơng xác hàm đánh giá khớp • Mơ Các hệ chun gia mơ mơ hình hóa q trình hay hệ thống để nghiên cứu tác nghiệp tương tác hệ thống 1.4 Hướng nghiên cứu Sử dụng thuật toán học truyền thống ID3 để nghiên cứu xây dựng hệ chuyên gia chuẩn đoán bệnh lao phổi Bằng cách sử dụng tìm kiếm tài liệu cơng trình nghiên cứu báo đăng hội thảo tạp chí lớn CHƯƠNG 2: THUẬT TOÁN ID3 2.1 Định nghĩa ID3 (J R Quinlan 1993) sử dụng phương pháp tham lam tìm kiếm từ xuống thông qua không gian nhánh khơng có backtracking ID3 sử dụng Entropy Information Gain để xây dựng định 2.2 Thuật toán Cho X tập vector đặc trưng (không gian đặc trưng) X = {x1, x2, …, xn} C tập giá trị phân lớp C: X → C thực gán nhãn cho phần tử X D = {(x1, c(x1)), (x2, c(x2)), …, (xn, c(xn))} ⊆X × C Nhiệm vụ: Dựa D, xây dựng định T xấp xỉ c ID3(D, Atributes, Target) { • Tạo nút t cho Nếu tất mẫu D thuộc lớp dương trả có • nút gốc t dán nhãn “+” Nếu tất mẫu D thuộc lớp âm trả có nút • • • • gốc t dán nhãn “-” Đặt t nhãn phổ biến thuộc tính mục tiêu D Nếu Atributes rỗng trả có nút gốc trỏ t Trường hợp khác: * Đặt A thuộc tính phân lớp tốt D * Thuộc tính định t A Với giá trị a A* thực hiện: - Bổ sung nhánh t ứng với A* = “a” - Đặt D_a tập cảu D chauws mẫu mà A* = “a” - Nếu D_a rỗng nhánh bổ sung nút với nhãn phổ biến D - Ngược lại, nhánh bổ sung ID3(D_a, Atributes –{A*}, Target) • Trả t } • 10 12 Stt 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 Ho Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra máu Ra đờm Ra đờm Ra đờm Ra đờm Ra đờm Sốt Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Cao Cao Cao Cao Cao Cao Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Nhẹ Cao Cao Nhẹ Nhẹ Nhẹ Nhẹ Cao Cao Cao Cao Cao Cao Cao Cao Cao Nhẹ Nhẹ Nhẹ Mồ hôi Đau Sụt Sưng Mắc trộm tức cân hạch lao đêm Có Có Có Có Khơng Khơng Có Có Có Có Có Có Khơng Khơng Khơng Khơng Khơng Khơng Có Khơng Khơng Khơng Có Có Có Có Có Có Khơng Khơng Khơng Khơng Khơng Khơng Khơng Khơng Khơng Có Có Khơng Ít Nhiều Nhiều Ít Ít ít Nhiều Ít ít Ít Ít Nhiều Nhiều Ít Ít Nhiều Nhiều Nhiều Nhiều Nhiều Nhiều Nhiều Nhiều ít Ít Ít Nhiều Ít Nhiều Nhiều Nhiều Nhiều Ít Ít Ít Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ Nhỏ To Nhỏ To Nhỏ To Nhỏ To Nhỏ yes yes yes yes no no yes yes yes yes yes yes no no yes Yes no no yes yes no no yes yes yes yes yes no no no yes no no yes yes Yes yes yes yes no ngực Có Có Khơng Khơng Có Có Có Có Có Có Khơng Khơng Có Có Có Có Khơng Khơng Khơng Có Khơng Khơng Khơng Khơng Có Có Khơng Khơng Có Có Có Khơng Khơng Khơng Khơng Khơng Khơng Có Có 13Có Bảng 2: Bảng liệu chi tiết 3.3 Phương pháp giải Bây ta tính độ lợi thơng tin cho thuộc tính sau chọn thuộc tính có độ lợi thơng tin lớn làm gốc định Entropy(S) = × - × = 0.9998 Xét thuộc tính “Sưng hạch”: Entropy (Snhỏ) = × - × = 0.9992 Entropy (Sto) = × - × = 0.9968 Gain(S, Sưng hạch) = Entropy(S) - × Entropy(Snhỏ) - Entropy(Sto) = 0.9998 – 0.9992× - 0.9968× = 0.0075 14 × Tương tự với thuộc tính điều kiện cịn lại: Gain(S, Sụt cân) = 0.062 Gain(S, Đau tức ngực) = 0.27 Gain(S, Mồ hôi trộm) = 0.1122 Gain(S, Sốt) = 0.027 Gain(S,ho) = 0.07867 Trong thuộc tính điều kiện ta thấy “Mồ trộm” có độ lợi thơng tin lớn nên thuộc tính chọn làm gốc Trong nhánh “Mồ trộm” = “Có”: Gain(SCó, Ho) = 0.2952 Gain(SCó, Sốt) = 0.016 Gain(SCó, Đau tức ngực) = 0.123 Gain(SCó, Sụt cân) = 0.0029 Gain(SCó, Sưng hạch) = 0.0029 Chọn thuộc tính tốt “Ho” Trong nhánh “Mồ trộm” = “Có” “Ho” = “RaMáu”: Gain(SCó,RaMáu, Sốt) = 0.049 Gain(SCó,RaMáu , Đau tức ngực) = 0.049 Gain(SCó,RaMáu, Sụt cân) = 0.0579 Gain(SCó,RaMáu , Sưng hạch) = 0.058 15 Trong nhánh “Mồ trộm” = “Có”, “Ho” = “Ra máu” “Sụt cân” = “ít”: Gain(SCó,Ra máu,ít, Sốt) = 0.143 Gain(SCó,Ra máu,ít, Đau ngực) = 0.143 Gain(SCó,Ra máu,ít, Sưng hạch) = 0.1022 Trong nhánh “Mồ hôi trộm” = “Có”, ““Ho” = “Ra máu” “Sụt cân” = “ít” “Sốt” = “Nhẹ”: Gain(SCó,Ra máu,ít,Nhẹ, Đau ngực) = 0.3113 Gain(SCó,Ra máu,ít,Nhẹ, Sưng hạch) = 0.3113 16 Ta có định: Mồ hôi trộm 17 3.4 Kết Không Có 3.4.1 Các tập luật đưa từ bảng chi tiết no = “Ra máu” ” And Sụt If Mồ trộm đêm Ho = “Có” And Ho Cân Ra = “Nhiều” Then Mắc lao = “yes” máu If Mồ trộm đêm = “Có” Ra đởmAnd Ho = “Ra máu” ” And Sụt Cân = “ít” And Sốt = ”Cao” Then Mắc lao = “yes” no cân đêm = “Có” If Mồ hôiSụttrộm And Ho = “Ra máu” ” And Sụt Cân = “Nhiều” And Sốt = ”Nhẹ” And Đau ngực = ”yes” Then Mắc lao = “yes” Nhiều If Mồ trộm Ítvề đêm = “Có” And Ho = “Ra máu” ” And Sụt yes = “Nhiều” And Sốt = ”Nhẹ” And Đau ngực = ”Không” And Cân Sốt Sưng hạch = ”Nhỏ” Then Mắc lao = “yes” If Mồ trộm đêm = “Có” And Ho = “Ra máu” ” And Sụt Cao Nhẹ Cân = “Nhiều” And Sốt = ”Nhẹ” And Đau ngực = ”Không” And yes Ngực Mắc j=== lao = “no” Sưng hạch = ”To”Đau Then If Mồ hôi trộm đêm = “Không” Then Mắc lao = “no” If Mồ hôi trộm đêm = “Có” And Ho = “Ra Đờm” Then Mắc Có Khơng lao = “no” Sưng hạch yes To Nhỏ no yes 18 3.4.2 Giao diện Hình Giao diện bắt đầu chạy chương trình Hình Giao diện bấm nút “đọc liệu” chương trình 19 Hình Giao diện bấm nút “chạy thuật tốn” chương trình 3.4.3 Chương trình Hàm tính Entropy: Cơng thức: Entropy (S) = - p+ log2 p+ - p- log2 pCode: private double GetEntropy(int Positives , int Negatives) { if (Positives == 0) return 0; if (Negatives == 0) return 0; double Entropy; int total = Negatives + Positives; double RatePositves = (double)Positives / total; double RateNegatives = (double)Negatives / total; Entropy = -RatePositves * Math.Log(RatePositves, 2) RateNegatives * Math.Log(RateNegatives, 2); return Entropy; } 20 Hàm tính Gain: Cơng thức: Gain(S, A) = Entropy(S) - Entropy (Sv) Code: private double Gain(List Examples, Attribute A, string bestat) { double result; int CountPositives = 0; int[] CountPositivesA = new int[A.Value.Count]; int[] CountNegativeA = new int[A.Value.Count]; int Col = Attributes.IndexOf(A); for (int i = 0; i < A.Value.Count; i++) { CountPositivesA[i] = 0; CountNegativeA[i] = 0; } for (int i = 0; i < Examples.Count; i++) { int j = A.Value.IndexOf(Examples[i][Col].ToString()); if (Examples[i][Examples[0].Count - 1]=="yes") { CountPositives++; CountPositivesA[j]++; } else { CountNegativeA[j]++; } } result = GetEntropy(CountPositives, Examples.Count CountPositives); for (int i = 0; i < A.Value.Count; i++) { double RateValue = (double)(CountPositivesA[i] + CountNegativeA[i]) / Examples.Count; 21 result = result - RateValue * GetEntropy(CountPositivesA[i], CountNegativeA[i]); } Solution = Solution + "\n * Gain(" + bestat + "," + A.Name + ") = " + result.ToString(); return result; } Hàm chọn đặc tính tốt nhất: Phương pháp: Dựa vào giá trị gain đặc tính, đặc tính có Gain lớn Chọn đặc tính – đặc tính tốt Code: private Attribute GetBestAttribute(List Examples, List Attributes, string bestat) { double MaxGain = Gain(Examples, Attributes[0], bestat); int Max = 0; for (int i = 1; i < Attributes.Count; i++) { double GainCurrent = Gain(Examples, Attributes[i], bestat); if (MaxGain < GainCurrent) { MaxGain = GainCurrent; Max = i; } } return Attributes[Max]; } Hàm thực giải thuật ID3: Giải thuật: ID3_algorithm(Training_Set, Class_Labels, Attributes) Tạo nút Root định If tất ví dụ Training_Set thuộc lớp c 22 Return Cây định có nút Root gắn với (có nhãn) lớp c If Tập thuộc tính Attributes rỗng Return Cây định có nút Root gắn với nhãn lớp ≡ Majority_Class_Label(Training Set) A ← Thuộc tính tập Attributes có khả phân loại “tốt nhất” Training_Set Thuộc tính kiểm tra cho nút Root ← A For each Giá trị v thuộc tính A Bổ sung nhánh nút Root, tương ứng với trường hợp: “Giá trị A v” Xác định Training_Setv = {ví dụ x | x ⊆ Training_Set, xA=v} If (Training_Setv rỗng) Then Tạo nút với nhãn lớp ≡ Majority_Class_Label(Training_Set) Gắn nút vào nhánh vừa tạo Else Gắn vào nhánh vừa tạo sinh ID3_algorithm(Training_Setv, Class_Labels, {Attributes \ A}) Return Root Code: private TreeNode ID3(List Examples, List Attribute,string bestat) { if (CheckAllPositive(Examples)) { return new TreeNode(new Attribute("Yes")); } if (CheckAllNegative(Examples)) { return new TreeNode(new Attribute("No")); } 23 if (Attribute.Count == 0) { return new TreeNode(new Attribute(GetMostCommonValue(Examples))); } Attribute BestAttribute = GetBestAttribute(Examples, Attribute, bestat); int LocationBA = Attributes.IndexOf(BestAttribute); TreeNode Root = new TreeNode(BestAttribute); for (int i = 0; i < BestAttribute.Value.Count; i++) { List Examplesvi = new List(); for (int j = 0; j < Examples.Count; j++) { if (Examples[j][LocationBA].ToString() == BestAttribute.Value[i].ToString()) Examplesvi.Add(Examples[j]); } if (Examplesvi.Count==0) { return new TreeNode(new Attribute(GetMostCommonValue(Examplesvi))); } else { Attribute.Remove(BestAttribute); Root.AddNode(ID3(Examplesvi, Attribute,BestAttribute.Value[i])); } } return Root; } 24 KẾT LUẬN Hệ chuyên gia mơ hình hóa cách lập luận người với mô dun động suy diễn Hệ chuyên gia chứa động suy diễn để tiến hành suy diễn nhằm tạo tri thức dựa kiện, tri thức vùng nhớ làm việc tri thức sở tri thức Bài tập lớn nhóm chưa sâu tìm hiểu triệu chứng cửa bệnh lao phổi đủ trực quan cách xây dựng chương trình hệ chuyên gia đầy ý nghĩa, giúp chuẩn đoán cách thông minh đại bệnh lao phổi Bằng góp sức thành viên hướng dẫn nhiệt tình giáo viên, chúng em tạo sản phẩm nhỏ, đơn giản thực tế Trong thời gian làm việc nhóm nhau, tinh thần đồng đội chúng em nâng cao Cảm ơn cthầy hết lịng giúp đỡ chúng em Xin chân thành cảm ơn! 25 Tài liệu tham khảo: Giáo trình Hệ chuyên gia – Đại học Cơng nghiệp Hà Nội Tài liệu trí tuệ nhân tạo Đại học Cơng nghiệp Hà Nội Tài liệu trí tuệ nhân tạo Đại học Bách Khoa Hà Nội Website Wikipedia.org 26