Thuật toán cơ bản cho quy nạp cây quyết định là một thuật toán tham lam [1], thuật toán này xây dựng cây quyết định theo cách chia để trị và đệ quy từ trên xuống. Dưới đây ta sẽ đề cập đến một phiên bản của ID3, một thuật toán nổi tiếng về quy nạp cây quyết định, phần mở rộng của thuật toán này được thảo luận ở phần sau.
49
Thuật toán ID3 là một trong những thuật toán xây dựng cây quyết định sử dụng lợi ích thông tin (Information Gain) để lựa chọn thuộc tính phân lớp các đối tượng. Nó xây dựng theo cách từ trên xuống, bắt đầu từ một tập các đối tượng và một đặc tả của các thuộc tính. Tại mỗt đỉnh của cây, một thuộc tính có lợi ích thông tin lớn nhất sẽ được chọn để phân chia tập đối tượng. Quá trình này được thực hiện một cách đệ quy cho đến khi tập đối tượng tại một cây con đã trở nên thuần nhất, tức là nó chỉ chứa các đối tượng thuộc về cùng một lớp. Lớp này sẽ trở thành một lá của cây.
Việc lựa chọn một thuộc tính nào cho thích hợp với phép thử là rất quan trọng. Nếu chọn không thích hợp, cây quyết định thu được sẽ rất phức tạp. Vậy chọn thuộc tính nào là tốt nhất.
Độ đo lựa chọn thuộc tính
Độ do lợi ích thông tin được sử dụng để lựa chọn thuộc tính thử tại mỗi nút trong cây. Độ đo này được xem như một độ đo lựa chọn thuộc tính hay độ đo của sự chia rẽ tốt nhất. Thuộc tính có lợi ích thông tin lớn nhất sẽ được lựa chọn là thuộc tính thử cho nút hiện tại. Thuộc tính này giảm tối đa thông tin cần thiết để phân lớp tập ví dụ. Theo cách tiếp cận liên quan đến lý thuyết thông tin là phải tối thiểu hóa số lượng các phép thử cần thiết để phân lớp một đối tượng và đảm bảo tìm thấy một cây đơn giản (nhưng không cần thiết là đơn giản nhất).
Hàm Entropy
Cho S là một tập bao gồm s mẫu dữ liệu, giả sử lớp thuộc tính nhãn có m giá trị phân biệt định nghĩa ra m lớp khác nhau, Ci (cho i=1,…,m), cho si là số mẫu của S nằm trong lớp Ci. Thông tin mong muốn cần thiết để phân lớp một mẫu đã cho được tính bởi: 1 2 2 1 ( , ,..., ) log ( ) m m i i i I s s s p p công thức (3.1)
trong đó pi là xác suất để một mẫu tùy ý thuộc về lớp Ci và được tính bằng si
s . Chú ý rằng hàm loga cơ số 2 được sử dụng bởi vì thông tin đã được mã hóa trong các bit
50
Ta thấy Entropy bằng 0 nếu tất cả các ca trong S đều thuộc về cùng một lớp (thuần nhất) và Entropy nằm giữa khoảng 0 và 1 nếu các ca trong S khác lớp nhau.
Cho thuộc tính A có v giá trị khác nhau {a1,a2,..,av). Thuộc tính A có thể được sử dụng để chia S thành v tập con {S1,S2,…,Sv} trong đó Sj bao gồm những mẫu trong S có giá trị aj của A. Nếu A được lựa chọn là một thuộc tính thử (tức là thuộc tính tốt nhất dùng để phân chia), thì những tập con đó sẽ tương ứng với những nhánh đi ra từ nút chứa tập S. Giả sử sij là số lượng các mẫu của lớp Ci trong tập con Sj. Entropy hoặc thông tin mong muốn dựa trên việc phân chia thành tập con bởi thuộc tính A, được cho bởi:
ij 1 ... ( ) v mj ( ,..., ) ij mj j s s E A I s s s công thức (3.2) Số hạng sij ... smj s
làm trọng số của tập con thứ j và là số lượng các mẫu trong tập con (tức là có giá trị aj của A) chia cho tổng số các mẫu trong S. Giá trị entropy nhỏ hơn, độ thuần nhất của tập con phân hoạch sẽ lớn hơn.
Thông tin mã hóa thu được bằng phân nhánh trên thuộc tính A là:
1 2
( ) ( , ,..., )m ( )
Gain A I s s s E A công thức (3.3)
Nói cách khác Gain(A) là sự rút gọn mà ta mong muốn khi phân chia các ca dữ liệu theo thuộc tính A.
Ta sẽ phải tính toán information gain của từng thuộc tính, sau đó thuộc tính nào có information gain cao nhất được chọn là thuộc tính thử cho tập S đã cho. Một nút được tạo ra và được gán nhãn bằng tên của thuộc tính, mỗi giá trị của thuộc tính sẽ tạo ra một nhánh.
RID Tuổi Thu nhập Sinh viên
Tỷ lệ tiền gửi
Mua máy tính
1 <=30 cao sai tốt Sai
51 3 31…40 cao sai tốt Đúng 4 >40 t. bình sai tốt Đúng 5 >40 thấp đúng tốt Đúng 6 >40 thấp đúng rất tốt Sai 7 31…40 thấp đúng rất tốt Đúng 8 <=30 t. bình sai tốt Sai 9 <=30 thấp đúng tốt Đúng 10 >40 t. bình đúng tốt Đúng 11 <=30 t. bình đúng rất tốt Đúng 12 31…40 t. bình sai rất tốt Đúng 13 31…40 cao đúng tốt Đúng 14 >40 t. bình sai rất tốt Sai
Bảng 3.1 Một tập dữ liệu đào tạo ví dụ.
Xét ví dụ sau:
Trong bảng 3.1 trình bày một tập dữ liệu gồm các các bản ghi đào tạo được lấy từ cơ sở dữ liệu khách hàng [4]. Lớp thuộc tính ghi nhãn là Mua máy tính, có hai giá trị phân biệt (đó là: Đúng và Sai ), vì vậy có hai lớp phân biệt (m=2), giả sử lớp C1 tương ứng với Đúng và lớp C2 tương ứng với Sai, và có 9 mẫu trong lớp
Đúng (C1) và 5 mẫu trong lớp Sai(C2). Để tính toán lợi ích thông tin của mỗi thuộc tính, đầu tiên chúng ta phải sử dụng công thức 3.1 để tính thông tin mong muốn cần thiết để phân lớp một mẫu đã cho
1 2 2 2
9 9 5 5
( , ) (9,5) log log 0.940
14 14 14 14
I s s I
Tiếp theo, chúng ta cần tính toán entropy của từng thuộc tính, giả sử bắt đầu với thuộc tính Tuổi. Chúng ta cần tìm nhìn vào phân bố của các mẫu đúng và sai
cho mỗi giá trị của Tuổi. Chúng ta tính thông tin mong muốn cho từng phân bố ở trên
Với Tuổi=”30”:
s11 = 2 s21=3 I(s11,s21)=0.971
Với Tuổi=”31…40”:
52
Với Tuổi=”>40”:
s13=3 s23=2 I(s13,s23)=0.971
Sử dụng công thức 3.2, thông tin mong muốn cần thiết để phân lớp một mẫu đã cho nếu các mẫu được phân chia theo thuộc tính tuổi là:
11 21 12 22 13 23
5 4 5
( ) ( , ) ( , ) ( , ) 0.694
14 14 14
E Tuoi I s s I s s I s s
Vì vậy, lợi ích thông tin từ phân hoạch này sẽ là:
1 2
( ) ( , ) ( ) 0.246
Gain Tuoi I s s E Tuoi
Tương tự, chúng ta có thể tính Gain(Thu nhập)= 0.029, Gain(sinh viên)=0.151 và Gain(tỷ lệ tiền gửi)=0.048. Bởi Tuổi có lợi ích lớn nhất trong số các thuộc tính, nó có thể được lựa chọn là thuộc tính thử. Một nút được tạo ra và được gán nhãn là Tuổi, và mỗi giá trị của thuộc tính sẽ tương ứng với một nhánh đi ra từ đỉnh này. Các mẫu sau đó được phân đoạn như trong hình 3.3. Chú ý rằng tất cả các mẫu thuộc về phân đoạn tuổi “31…40” thuộc cùng một lớp, bởi vì tất cả chúng thuộc vào lớp Đúng, một lá vì thế sẽ được tạo ra tại cuối của nhánh đó và được gán nhãn là Đúng. Cuối cùng cây quyết định của thuật toán này được trình bày ở hình 3.2.
53
Tuổi
<=30 30…40 >40
Thu nhập Sinh viên Tỷ lệ tiền gửi Lớp
Cao Sai tốt Sai
Cao Sai rất tốt Sai
Trung bình Sai tốt Sai
thấp Đúng tốt Đúng
Trung bình Đúng rất tốt Đúng
Thu nhập Sinh viên Tỷ lệ tiền gửi Lớp
Trung bình Sai tốt Đúng
thấp Đúng tốt Đúng
thấp Đúng rất tốt Sai
Trung bình Đúng tốt Đúng
Trung bình Sai rất tốt Sai
Thu nhập Sinh viên Tỷ lệ tiền gửi Lớp
Cao Sai tốt Đúng
Thấp Đúng rất tốt Đúng
Trung bình Sai rất tốt Đúng
Cao Đúng tốt Đúng
Hình 3.3 Thuộc tính Tuổi có lợi ích thông tin cao nhất nên được chọn là thuộc tính thử