Thuật toán này ựược Hovland và Hint giới thiệu trong Concept learning System (CLS) vào những năm 50 của thế kỷ 20. Sau ựó gọi tắt là thuật toán CLS. Thuật toán CLS ựược thiết kế theo chiến lược chia ựể trị từ trên xuống. Nó gồm các bước sau [6]:
1. Tạo một nút T, nút này gồm tất cả các mẫu của tập huấn luyện.
2. Nếu tất cả các mẫu trong T có thuộc tắnh quyết ựịnh mang giá trị "yes" (hay thuộc cùng một lớp), thì gán nhãn cho nút T là "yes" và dừng lại. T lúc này là nút lá.
3. Nếu tất cả các mẫu trong T có thuộc tắnh quyết ựịnh mang giá trị "no" (hay thuộc cùng một lớp), thì gán nhãn cho nút T là "no" và dừng lại. T lúc này là nút lá.
4. Trường hợp ngược lại các mẫu của tập huấn luyện thuộc cả hai lớp "yes" và "no" thì:
+ Chọn một thuộc tắnh X trong tập thuộc tắnh của tập mẫu dữ liệu, X có các giá trị v1,v2, Ầvn.
+ Chia tập mẫu trong T thành các tập con T1, T2,Ầ.,Tn. chia theo giá trị của X.
+ Tạo n nút con Ti (i=1,2Ần) với nút cha là nút T.
+ Tạo các nhánh nối từ nút T ựến các nút Ti (i=1,2Ần) là các thuộc tắnh của X.
5. Thực hiện lặp cho các nút con Ti(i =1,2..n) và quay lại bước 2. Ta nhận thấy trong bước 4 của thuật toán, thuộc tắnh ựược chọn ựể triển khai cây là tuỳ ý. Do vậy cùng với một tập mẫu dữ liệu huấn luyện nếu áp dụng thuật toán CLS với thứ tự chọn thuộc tắnh triển khai cây khác nhau, sẽ cho ra các cây có hình dạng khác nhau. Việc lựa chọn
thuộc tắnh sẽ ảnh hưởng tới ựộ rộng, ựộ sâu, ựộ phức tạp của cây. Vì vậy một câu hỏi ựặt ra là thứ tự thuộc tắnh nào ựược chọn ựể triển khai cây sẽ là tốt nhất. Vấn ựề này sẽ ựược giải quyết trong thuật toán ID3 dưới ựây.
3.2.2 Thuật toán ID3
Thuật toán ID3 ựược phát biểu bởi Quinlan (trường ựại học Syney, Australia) và ựược công bố vào cuối thập niên 70 của thế kỷ 20. Sau ựó, thuật toán ID3 ựược giới thiệu và trình bày trong mục Induction on decision trees, machine learning năm 1986. ID3 ựược xem như là một cải tiến của CLS với khả năng lựa chọn thuộc tắnh tốt nhất ựể tiếp tục triển khai cây tại mỗi bước. ID3 xây dựng cây quyết ựịnh từ trên- xuống (top -down) [5] .
Entropy [5]: dùng ựể ựo tắnh thuần nhất của một tập dữ liệu. Entropy của một tập S ựược tắnh theo công thức (1)
Entropy(S)= - P log (+ 2 P+) P log (− - 2 P−) (3.1)
Trong trường hợp các mẫu dữ liệu có hai thuộc tắnh phân lớp "yes" (+), "no" (-). Ký hiệu p+ là ựể chỉ tỷ lệ các mẫu có giá trị của thuộc tắnh quyết ựịnh là "yes", và p- là tỷ lệ các mẫu có giá trị của thuộc tắnh quyết ựịnh là "no" trong tập S.
Trường hợp tổng quát, ựối với tập con S có n phân lớp thì ta có công thức sau: n i 2 i=1 Entropy(S)= ∑(- P log ( ))Pi (3.2)
Trong ựó Pi là tỷ lệ các mẫu thuộc lớp i trên tập hợp S các mẫu kiểm tra.
Các trường hợp ựặc biệt
- Nếu tất cả các mẫu thành viên trong tập S ựều thuộc cùng một lớp thì Entropy(S) =0
- Nếu trong tập S có số mẫu phân bổ ựều nhau vào các lớp thì Entropy(S) =1
- Các trường hợp còn lại 0< Entropy(S)<1
Information Gain (viết tắt là Gain)[5]: Gain là ựại lượng dùng ựể ựo
tắnh hiệu quả của một thuộc tắnh ựược lựa chọn cho việc phân lớp. đại lượng này ựược tắnh thông qua hai giá trị Information và Entropy.\
- Cho tập dữ liệu S gồm có n thuộc tắnh Ai(i=1,2Ần) giá trị Information của thuộc tắnh Ai ký hiệu là Information(Ai) ựược xác ựịnh bởi công thức .
n
i 2
i=1
Information(A ) = -∑log ( )pi =Entropy(S) (3.3)
- Giá trị Gain của thuộc tắnh A trong tập S ký hiệu là Gain(S,A) và ựược tắnh theo công thức sau:
v
v v value(A)
S
( , ) Information(A) - Entropy(A)= Entropy(S)- Entropy(S ) S
Gain S A
∉
= ∑ (3.4)
Trong ựó:
- S là tập hợp ban ựầu với thuộc tắnh A. Các giá trị của v tương ứng là các giá trị của thuộc tắnh A.
- Sv bằng tập hợp con của tập S mà có thuộc tắnh A mang giá trị v. - |Sv| là số phần tử của tập Sv.
- |S| là số phần tử của tập S.
Trong quá trình xây dựng cây quyết ựịnh theo thuật toán ID3 tại mỗi bước triển khai cây, thuộc tắnh ựược chọn ựể triển khai là thuộc tắnh có giá trị Gain lớn nhất.
Hàm xây dựng cây quyết ựịnh trong thuật toán ID3 [2]
Function induce_tree(tập_vắ_dụ, tập_thuộc_tắnh)
begin
return một nút lá ựược gán nhãn bởi lớp ựó
else if tập_thuộc_tắnh là rỗng then
return nút lá ựược gán nhãn bởi tuyển của tất cả các lớp trong tập_vắ_dụ
else begin
chọn một thuộc tắnh P, lấy nó làm gốc cho cây hiện tại; xóa P ra khỏi tập_thuộc_tắnh;
với mỗi giá trị V của P
begin
tạo một nhánh của cây gán nhãn V; đặt vào phân_vùng
V các vắ dụ trong tập_vắ_dụ có
giá trị V tại thuộc tắnh P; Gọi induce_tree(phân_vùng V, tập_thuộc_tắnh), gắn kết quả vào nhánh V end end end
Với việc tắnh toán giá trị Gain ựể lựa chọn thuộc tắnh tối ưu cho việc triển khai cây, thuật toán ID3 ựược xem là một cải tiến của thuật toán CLS. Tuy nhiên thuật toán ID3 không có khả năng xử lý ựối với những dữ liệu có chứa thuộc tắnh số - thuộc tắnh liên tục (numeric attribute) và khó khăn trong việc xử lý các dữ liệu thiếu (missing data)và dữ liệu nhiễu (noisy data). Vấn ựề này sẽ ựược giải quyết trong thuật toán C4.5 sau ựây.