ID3 xây dựng cây quyết định (cây QĐ) theo cách từ trên xuống.. ID3 chọn một thuộc tính để kiểm tra tại nút hiện tại của cây và dùng trắc nghiệm này để phân vùng tập hợp các ví dụ; thuật toán khi đó xây dựng theo cách đệ quy một cây con cho từng phân vùng. Việc này tiếp tục cho đến khi mọi thành viên của phân vùng đều nằm trong cùng một lớp; lớp đó trở thành nút lá của cây. Vì thứ tự của các trắc nghiệm là rất quan trọng đối với việc xây dựng một cây QĐ đơn giản, ID3 phụ thuộc rất nhiều vào tiêu chuẩn chọn lựa trắc nghiệm để làm gốc của cây.
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN - - BÁO CÁO BÀI TẬP THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ TRI THỨC & MÁY HỌC Đề tài: Xây dựng chương trình mơ phòng thuật tốn ID3 Lớp: CS110.J12 Giảng viên hướng dẫn: Ths Nguyễn Thị Ngọc Diễm Thành viên nhóm thực hiện: 1, Lê Thanh Tiềm – 16521214 2, Nguyễn Đăng Thịnh – 16521177 3, Nguyễn Dỗn Đơng – 16520221 Tp Hồ Chí Minh, ngày 25 tháng 12 năm 2018 THUẬT TOÁN PHÂN LỚP - CÂY QUYẾT ĐỊNH ID3: Mơ hình: Giải thuật ID3 giải thuật học đơn giản áp dụng thành cơng nhiều lĩnh vực •Đầu vào: Một tập hợp ví dụ Mỗi ví dụ bao gồm thuộc tính mơ tả tình huống, hay đối tượng đó, giá trị phân loại •Đầu ra: Cây định có khả phân loại đắn ví dụ tập liệu rèn luyện, hy vọng phân loại cho ví dụ chưa gặp tương lai Giải thuật ID3 ID3 xây dựng định (cây QĐ) theo cách từ xuống ID3 chọn thuộc tính để kiểm tra nút dùng trắc nghiệm để phân vùng tập hợp ví dụ; thuật tốn xây dựng theo cách đệ quy cho phân vùng Việc tiếp tục thành viên phân vùng nằm lớp; lớp trở thành nút Vì thứ tự trắc nghiệm quan trọng việc xây dựng QĐ đơn giản, ID3 phụ thuộc nhiều vào tiêu chuẩn chọn lựa trắc nghiệm để làm gốc * ID3 xây dựng định theo giải thuật sau: Function TreeNode(tập_ví_dụ, tập_thuộc_tính) begin Bước 1: if ví dụ tập_ví_dụ nằm lớp then return nút gán nhãn lớp else if tập_thuộc_tính rỗng then return nút gán nhãn tuyển tất lớp tập_ví_dụ else Bước 2: begin 2.1 Chọn thuộc tính P, lấy làm gốc cho tại; 2.2 Xóa P khỏi tập_thuộc_tính; 2.3 Với giá trị V P begin 2.3.1 Tạo nhánh gán nhãn V; 2.3.2 Đặt vào phân_vùngV ví dụ tập_ví_dụ có giá trị V thuộc tính P; 2.3.3 Gọi TreeNode(phân_vùngV, tập_thuộc_tính), gắn kết vào nhánh V (đệ qui) end end end Nhận Xét: Cũng phương pháp học quy nạp khác, ID3 tìm kiếm khơng gian giả thuyết giả thuyết phù hợp với tập liệu rèn luyện Không gian giả thuyết mà ID3 tìm kiếm tập hợp định có ID3 thực phép tìm kiếm từ đơn giản đến phức tạp, theo giải thuật leo-núi (hill climbing), rỗng, sau xem xét giả thuyết phức tạp mà phân l oại ví dụ rèn luyện Hàm đánh giá dùng để hướng dẫn tìm kiếm leo núi phép đo lượng thơng tin thu Từ cách nhìn ID3 giải thuật tìm kiếm khơng gian giả thuyết, ta có số nhận xét sau: + Không gian giả thuyết định ID3 không gian đầy đủ định thuộc tính cho tập rèn luyện Điều có nghĩa khơng gian mà ID3 tìm kiếm chắn có chứa định cần tìm +Trong tìm kiếm, ID3 trì giả thuyết Vì vậy, giải thuật khơng có khả biểu diễn tất định khác có khả phân loại liệu có +Vì ID3 sử dụng tất ví dụ bước để đưa định dựa thống kê, nên kết tìm kiếm ID3 bị ảnh hưởng vài liệu sai (hay liệu nhiễu) + Trong trình tìm kiếm, giải thuật ID3 thường có xu hướng chọn định ngắn định dài 4, Ví dụ cụ thể: Ví dụ 1: xét tập liệu qua bảng sau: Mẫu Outlook Temp Humidity Wind PlaySport D1 sunny hot high weak D2 sunny hot high strong D3 overcast hot high weak D4 rain mild high weak D5 rain cool normal weak D6 rain cool normal strong D7 overcast cool normal strong D8 sunny mild high weak D9 sunny cool normal weak D10 rain mild normal weak D11 sunny mild normal strong D12 overcast mild high strong D13 overcast hot normal weak D14 rain mild high strong • Bảng cho VD1 có 14 mẫu tin: • 09 mẫu có phân lớp “1” • 05 mẫu có phân lớp “0” • Vậy ta có: • |D| = 14 • n=2, C1= “1”, C2= “0” • |C1, D|= • |C2, D|= • Vậy entropy D là: 𝑛 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝐷 ) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(9+, 5−) = − ∑ 𝑝𝑖 log (pi ) 𝑖=1 = − (𝑝1 log 2(𝑝1 ) + 𝑝2 log (𝑝2 )) 9 5 = −( log + log ) = 0.94 14 14 14 14 • Thuộc tính Wind có giá trị “weak” “strong”: Wind weak strong Tổng 6 Entropy 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑤𝑒𝑎𝑘 ) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (6+, −) 6 2 = − log − log 8 8 = 0.811 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑠𝑡𝑟𝑜𝑛𝑔) = 3 3 − log − log = 6 1.0 • 𝐺𝑎𝑖𝑛 (𝑊𝑖𝑛𝑑 ) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝐷 ) − 14 𝐸 (𝑤𝑒𝑎𝑘 ) − 14 𝐸 (𝑠𝑡𝑟𝑜𝑛𝑔) 6 = 0.94 − 0.811 − 1.0 = 0.048 14 14 • Thuộc tính Outlook có giá trị “sunny”, “overcast” “rain”: Outlook Tổng Entropy 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑠𝑢𝑛𝑛𝑦) = sunny 2 3 5 5 − log − log = 0.97 overcast rain 4 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑜𝑣𝑒𝑟𝑐𝑎𝑠𝑡)=0 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑟𝑎𝑖𝑛) = 3 2 − log − log = 5 5 0.97 𝐺𝑎𝑖𝑛(𝑂𝑢𝑡𝑙𝑜𝑜𝑘) = Entropy(D) − = 0.94 − 14 14 𝐸 (𝑠𝑢𝑛𝑛𝑦) − 0.97 − 14 0− 14 14 𝐸 (𝑜𝑣𝑒𝑟𝑐𝑎𝑠𝑡) − 14 𝐸 (𝑜𝑣𝑒𝑟𝑐𝑎𝑠𝑡) 0.97 = 0.247 • Thuộc tính Temp có giá trị “hot”, “mild” “cool”: Temp hot Tổng Entropy 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (ℎ𝑜𝑡) 2 = − log 4 2 − log 4 = 1.0 mild 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑚𝑖𝑙𝑑 ) 4 = − log 6 2 − log 6 = 0.918 cool 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑐𝑜𝑜𝑙 ) 3 = − log 4 1 − log 4 =0.811 • 𝐺𝑎𝑖𝑛(𝑇𝑒𝑚𝑝) = Entropy (D) − 14 = 0.94 − 𝐸 (ℎ𝑜𝑡) − 14 𝐸 (𝑚𝑖𝑙𝑑 ) − 14 𝐸 (𝑐𝑜𝑜𝑙 ) 1.0 − 0.918 − 0.811 = 0.029 14 14 14 • Thuộc tính Humidity có giá trị “high”, “normal”: Humidity high Tổng Entropy normal 7 log = 0.985 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑛𝑜𝑟𝑚𝑎𝑙 ) 6 = − log 7 1 − log 7 = 0.592 • 𝐺𝑎𝑖𝑛(𝐻𝑢𝑚𝑖𝑑𝑖𝑡𝑦) 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (ℎ𝑖𝑔ℎ) = − log − = Entropy (D) − = 0.94 − 14 14 𝐸 (ℎ𝑖𝑔ℎ) − 0.985 − 14 14 𝐸 (𝑛𝑜𝑟𝑚𝑎𝑙 ) 0.592 = 0.152 Ta có: • Gain(Wind)= 0.048 • Gain(Outlook) = 0.247 • Gain(Temp) = 0.029 • Gain(Humidity)= 0.152 => Vậy thuộc tính phân hoạch chọn thuộc tính Outlook có Gain lớn *Phân hoạch theo outlook: 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 ) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (2+, −) = − 2 3 log − log = 0.97 5 5 • Temp: * 𝐺𝑎𝑖𝑛(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 , 𝑇𝑒𝑚𝑝) 2 = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 ) − 𝐸 (ℎ𝑜𝑡) − 𝐸 (𝑚𝑖𝑙𝑑 ) − 𝐸 (𝑐𝑜𝑜𝑙 ) 5 = 0.97 − − − = 0.5 *𝐺𝑎𝑖𝑛(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 , 𝐻𝑢𝑚𝑖𝑑𝑖𝑡𝑦) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 ) − 𝐸 (ℎ𝑖𝑔ℎ) − 𝐸 (𝑛𝑜𝑟𝑚𝑎𝑙 ) 5 = 0.97 − − = 0.97 *𝐺𝑎𝑖𝑛(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 , 𝑊𝑖𝑛𝑑) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑠𝑢𝑛𝑛𝑦 ) − 𝐸 (𝑠𝑡𝑟𝑜𝑛𝑔) − 𝐸 (𝑤𝑒𝑎𝑘 ) 5 = 0.97 − 0.918 − = 0.019 5 => Chọn Humidity làm thuộc tính phân hoạch Outlook sunny Humidity high overcast rain yes ? normal no yes Gain với Outlook=rain: *𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 ) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (3+, −) =− 3 2 log − log = 0.97 5 5 • Temp: *𝐺𝑎𝑖𝑛 (𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 , 𝑇𝑒𝑚𝑝) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 ) − 𝐸 (𝑚𝑖𝑙𝑑 ) − 𝐸 (𝑐𝑜𝑜𝑙 ) 5 = 0.97 − 0.918 − = 0.019 5 *𝐺𝑎𝑖𝑛 (𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 , 𝐻𝑢𝑚𝑖𝑑𝑖𝑡𝑦) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 ) − 𝐸 (ℎ𝑖𝑔ℎ) − 𝐸 (𝑛𝑜𝑟𝑚𝑎𝑙 ) 5 = 0.97 − − 0.918 = 0.019 5 *𝐺𝑎𝑖𝑛 (𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 , 𝑊𝑖𝑛𝑑 ) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝐷𝑂𝑢𝑡𝑙𝑜𝑜𝑘=𝑟𝑎𝑖𝑛 ) − 𝐸 (𝑠𝑡𝑟𝑜𝑛𝑔) − 𝐸 (𝑤𝑒𝑎𝑘 ) 5 = 0.97 − − = 0.97 => Chọn Wind làm thuộc tính phân hoạch Ta thu định sau: Outlook sunny Humidity high no overcast rain yes normal yes Wind strong no * Sau chương trình giải tổng quát sau: - Xét S * Gain(S,outlook) = 0.246749819774439 * Gain(S,temperature) = 0.0292225656589546 * Gain(S,humidity) = 0.151835501362341 * Gain(S,wind) = 0.0481270304082693 => Ta chọn Gain lớn : outlook - Xét sunny * Gain(sunny,temperature) = 0.570950594454669 * Gain(sunny,humidity) = 0.970950594454669 * Gain(sunny,wind) = 0.0199730940219749 => Ta chọn Gain lớn : humidity - Xét high - weak yes Tất mẫu phủ định => Trả nút gốc với nhãn - Xét normal Tất mẫu khẳng định => Trả nút gốc với nhãn - Xét overcast Tất mẫu khẳng định => Trả nút gốc với nhãn - Xét rain * Gain(rain,temperature) = 0.0199730940219749 * Gain(rain,wind) = 0.970950594454669 => Ta chọn Gain lớn : wind - Xét weak Tất mẫu khẳng định => Trả nút gốc với nhãn - Xét strong Tất mẫu phủ định => Trả nút gốc với nhãn *VÍ DỤ 2: Xét tập liệu sau: Gender Male Male Female Car Ownership 1 Travel Cost Cheap Cheap Cheap Income Level Low Medium Medium Transportation Bus Bus Train Female Male Male Female Female Male Female 1 2 Cheap Cheap Standard Standard Expensive Expensive Expensive Low Medium Medium Medium High Medium High Bus Bus Train Train Bus Bus Bus Vì chương trình demo chạy với thuộc tính muc tiêu hai số nên ta quy ước bus 1, train Tương tự ví dụ 1, ta tính thành lập tập luật Và chương tình giải quyết: - Xét S * Gain(S,gender) = 0.0348515545596773 * Gain(S,car ownership) = 0.120326851787012 * Gain(S,travel cost) = 0.520326851787012 * Gain(S,income level) = 0.281290899230693 => Ta chọn Gain lớn : travel cost - Xét cheap * Gain(cheap,gender) = 0.321928094887362 * Gain(cheap,car ownership) = 0.170950594454669 * Gain(cheap,income level) = 0.170950594454669 => Ta chọn Gain lớn : gender - Xét male Tất mẫu khẳng định => Trả nút gốc với nhãn - Xét female * Gain(female,car ownership) = * Gain(female,income level) = => Ta chọn Gain lớn : car ownership - Xét Tất mẫu khẳng định => Trả nút gốc với nhãn - Xét Tất mẫu phủ định => Trả nút gốc với nhãn Các thuộc tính rỗng => Trả nút gốc có giá trị phổ biến - Xét standard Tất mẫu phủ định => Trả nút gốc với nhãn - Xét expensive Tất mẫu khẳng định => Trả nút gốc với nhãn GIỚI THIỆU CHƯƠNG TRÌNH DEMO THUẬT TỐN ID3 1, Giao diện chương trình Demo gồm phần: o Phần 1: Bảng lưu liệu training (Data Training) o Phần 2: Ghi bước giải thuật toán (Solutions) o Phần 3: Vẽ minh họa cho thuật toán (Decision Tree) o Phần 4: Các chức chương trình (Control) Có button với chức sau: ▪ Load Data: Đưa liệu training vào chương trình ▪ RUN: Chạy giải thuật ID3 ▪ Reset: Khởi động, chạy lại chương trình ▪ About: Thơng tin cách sử dụng chương trình, thành viên nhóm 2, Các bước chạy chương trình: - Đầu tiên, nạp liệu vào chương trình button Load Data Dữ liệu đưa lên bảng Data Training (Phần 1) - Sau đó, nhấn button Run để chạy giải thuật Các bước giải phần (Solutions) Cây vẽ phần (Tree) * Giao diện chương trình: 3, Một số hàm chương trình: Hàm tính Entropy: • Cơng thức: Entropy (S) = - p+ log2 p+ - p- log2 p• Code: 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; } 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; 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 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")); } 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; } *Nhận xét: Chương trình demo minh họa thuật tốn ID3 giúp cho chúng em hiểu rõ thuật tốn ID3 Do hạn chế mặt thời gian kiến thức thành viên chưa tốt nên chương trình phát sinh nhiều lỗi Việc tìm kiếm data khó chương trình nhiều lỗi, khơng thê rchyaj liệu q lớn Chúng em có tham khảo tập liệu data trang https://archive.ics.uci.edu/ml/datasets.html?format=&task=cla&att=&area=& numAtt=&numIns=&type=&sort=nameUp&view=list nhiên có luocj bỏ số thuộc tính số phần tử liệu *//Bạn đọc cần file code demo gửi mail đến địa chỉ: thanhtiemqt@gmail.com Nguồn tài liệu tham khảo Bài giảng Slide môn Công Nghệ Tri Thức & Máy Học - ThS Nguyễn Thị Ngọc Diễm Nguồn Internet: http://en.wikipedia.org/wiki/ID3_algorithm http://en.wikipedia.org/wiki/Entropy_(information_theory) http://en.wikipedia.org/wiki/Information_gain_in_decision_trees http://en.wikipedia.org/wiki/Decision_tree_learning http://chem-eng.utoronto.ca/~datamining/dmc/decision_tree.htm http://mrthin.blogspot.com/2010/09/id3-algorithm.html http://www.dreamincode.net/forums/topic/193088-decision-tree-with-c%23/ http://bis.net.vn/forums/t/378.aspx http://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.aspx http://lap-trinh-may-tinh.blogspot.com/2013/06/chuong-trinh-mo-phong-thuattoanid3.html http://csshare.net/chuong-trnh-m-phong-thuat-ton-id3cy-quyet-dinh/ ...THUẬT TOÁN PHÂN LỚP - CÂY QUYẾT ĐỊNH ID3: Mơ hình: Giải thuật ID3 giải thuật học đơn giản áp dụng thành cơng nhiều lĩnh vực •Đầu vào:... trị phân loại •Đầu ra: Cây định có khả phân loại đắn ví dụ tập liệu rèn luyện, hy vọng phân loại cho ví dụ chưa gặp tương lai Giải thuật ID3 ID3 xây dựng định (cây QĐ) theo cách từ xuống ID3. .. 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 Return Cây định có nút Root gắn với (có nhãn) lớp c