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ỷ XX. 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 để tṛ từ trên xuống [8]:
Input: Tập dữ liệu huấn luyện, các thuộc tính c a tập dữ liệu huấn luyện và một giá tṛ phân lo i.
Output: Cây quyết đ̣nh.
Thuật toán xây dựng cây quyết đ̣nh CLS
Ví ḍ: Xét bài toán “Dự báo học sinh bỏ học” ng với tậpdữ liệu là b ng “Học sinh” sau đây:
B ng 1.1. B ng dữ liệu “Học sinh”
TT Hoc_luc Hanh_kiem Hoan_canh Luu_ban Du_bao
1 Y K CMLH Co Yes 2 G T BT Co No 3 G TB BT Khong No 4 TB K BT Khong No 5 TB T BT Co No 6 Y T BT Khong No 7 Y Y BT Co Yes Function CLS_Builder(S, A) {
1. Ṭo một nút T, gồm tất cả ćc mẫu của tập huấn luyện.
2.If(mọi mẫu trong T đều nằm trong cùng một lớp
"Yes")Then
Return T là nút lá gán nhãn "yes" và dừng ḷi.
3.If(mọi mẫu trong T đều nằm trong cùng một lớp "No")Then Return T là nút lá gán nhãn "No" và dừng ḷi.
4. If (Ćc mẫu thuộc cả hai ĺp "yes" và "no") Then
{
Cḥ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 gí trị v1,v2, …vn.
Chia tập mẫu trong T thành ćc tập con T1, T2,….,Tn. chia theo gí trị của X.
Ṭo n nút con Ti (i=1,2…n) v́i nút cha là nút T. Ṭo ćc nh́nh nối từ nút T đ́n ćc nút Ti (i=1,2…n) là ćc thuộc tính của X.
}
5. Tḥc hiện lặp cho ćc nút con Ti(i =1,2..n) và quay ḷi bức 2.
TT Hoc_luc Hanh_kiem Hoan_canh Luu_ban Du_bao 8 Y TB CMLH Co Yes 9 Y TB CMLH Khong Yes 10 G T KTKK Co No 11 TB T CMLH Co No 12 TB T KTKK Co No 13 TB TB KTKK Khong Yes 14 Y Y KTKK Co Yes
B ng dữ liệu trên là tập dữ liệu mẫu mô t dự báo học sinh có bỏ học hay không. Cây quyết đ̣nh đ ợc xây dựng theo thuật toán CLS nh sau:
1/ Chọn thuộc tính Hanh_kiem = {Y, TB, K, T} triển khai cây, ta có cây
H̀nh 1.6. Cây đực ṭo khi thục t́nh “Hanh_kiem” đực cḥn
Với giá tṛ thuộc tính Hanh_kiem=”Y”, giá tṛ Du_bao c a các mẫu [7,14] đều nhận giá tṛ “Yes”, chúng thuộc cùng một lớp, nên đây là nút lá nhưn là “Yes” và với giá tṛ thuộc tính Hanh_kiem = "T", giá tṛ Du_bao c a các mẫu [2,5,6,10,11,12] đều nhận giá tṛ "No", nên nút lát ơng ng với nhưn là "No"
2/ Tiếp theo chọn thuộc tính Hoan_canh để m̉ rộng cho nhánh bên trái, ta đ ợc cây nh sau:
H̀nh 1.7. Cây đực m̉ ṛng theo thục t́nh “Hoan_canh”
3/ T ơng tựnh vậy chọn thuộc tính Luu_ban để m̉ rộng nhánh ph i cho cây, ta thu đ ợc cây nh sau:
H̀nh 1.8. Cây đực ṭo b̀ng thụt tón CLS theo thứ ṭ các thục tính Hanh_kiem, Hoan_canh, Luu_ban
Hình trên là cây kết qu thu đ ợc khi áp ḍng thuật toán CLS cho tập dữ liệu trong b ng 1.1 với th tự các thuộc tính Hanh_kiem, Hoan_canh, Luu_ban. Nếu áp ḍng thuật toán CLS với th tự khác c a các thuộc tính ta sẽ thu đ ợc cây kết qu có hình d ng khác.
Tr ng hợp áp ḍng thuật toán CLS để xây dựng cây với th tự các thuộc tính Hoc_luc, Hanh_kiem, Hoan_canh, Luu_ban thì cây kết qu có d ng nh sau:
H̀nh 1.9. Cây đực ṭo b̀ng thụt tón CLS theo thứ ṭ các thục tính Hoc_luc, Hanh_kiem, Hoan_canh, Luu_ban
Với một tập mẫu dữ liệu huấn luyện nếu áp ḍ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.