Gia lượng thông tin[1] là tiêu chuẩn đánh giá khả năng của một thuộc tính khi được dùng để phân lớp các mẫu dựa vào giá trị Entropy. Chúng ta dựa vào tiêu chuẩn này để chọn được thuộc tính có giá trị Entropy nhỏ nhất và dùng thuộc tính này để phân mảnh tập mẫu. Gia lượng thông tin được tính theo công thức sau:
) ( | | | | ) ( ) , ( v V v v Entropy DT DT DT DT Entropy c DT Gain c ∑ ∈ − =
trong đó Vc là tập các giá trị của thuộc tính c, DTv là tập các đối tượng trong DT có giá trị thuộc tính c bằng v. Gain(DT, c) được John Ross Quinlan[7] sử dụng làm độ đo
lựa chọn thuộc tính phân chia dữ liệu tại mỗi nút trong thuật toán xây dựng cây quyết định ID3. Thuộc tính được chọn là thuộc tính cho gia lượng thông tin lớn nhất.
Ví dụ: tính gia lượng thông tin của thuộc tính “độ ẩm” trong Bảng 2-1 • Tập_giá_trị (Độ ẩm)={Cao, TB}, Khi đó : U = [7Cao, 7TB]
Ucao ⇐ [3Có, 4Không] ⇒ E(UCao) = - 0.985 7 4 log 7 4 7 3 log 7 3 2 2 − = UTB ⇐ [6Có, 1Không] ⇒ E(UTB) = - 0.592 7 1 log 7 1 7 6 log 7 6 2 2 − = Gain(S, Độ ẩm) = 0.940 – (7/14)*0.985 – (7/14)*0.592 = 0.151 2.3. Thuật toán C4.5 2.3.1. Giới thiệu
Giải thuật học cây quyết định[7] được sử dụng thành công trong hệ chuyên gia. Công việc chính sử dụng trong các hệ thống này là sử dụng phương pháp qui nạp cho những giá trị cho trước của những thuộc tính của một đối tượng chưa biết để xác định sự phân loại xấp xỉ theo những luật của cây quyết định. Cây quyết định sẽ phân loại các trường hợp bằng cách duyệt từ nút gốc đến những nút lá. Chúng ta sẽ bắt đầu từ nút gốc của cây quyết định, kiểm tra thuộc tính xác định bởi nút này sau đó chuyển xuống những nhánh của cây theo giá trị thuộc tính trong tập hợp cho trước. Quá trình này được lặp lại tại những cây con.
Trong các thuật toán học cây quyết định thì ID3 và C4.5 là hai thuật toán phổ dụng nhất. Nhưng thuật toán ID3 có các thiếu sót sau đây:
• Trong thuật toán ID3, giá trị các thuộc tính là rời rạc, trong khi đó ở thế giới thực còn tồn tại các thuộc tính có giá trị liên tục (giá trị số).
• Trong thuật toán ID3, nếu các thuộc tính có nhiều giá trị mà mỗi giá trị lại duy nhất, sẽ dẫn tới tạo cây phức tạp, không đưa ra được quyết định cho các trường hợp trong thực tế.
Thuật toán C4.5 là sự mở rộng của giải thuật ID3 trên một số khía cạnh sau: • Trong việc xây dựng cây quyết định, thuật toán C4.5 có thể giải quyết tốt đối với
trường hợp giá trị của các thuộc tính là giá trị thực.
• Trong việc xây dựng cây quyết định, thuật toán C4.5 có thể giải quyết tốt đối với trường hợp thuộc tính có nhiều giá trị mà mỗi giá trị này lại duy nhất.
Entropy: i c i i p p S Entropy 2 1 log ) ( ∑ = − = . Trong đó:
S là tập dữ liệu huấn luyện.
Ci là một nhãn lớp bất kỳ trong tập dữ liệu S.
Pi là xác suất của một bộ bất kỳ trên S thuộc về nhãn Ci.
Giả sử phân chia các bộ trong S trên một thuộc tính A bất kỳ, để không mất tính tổng quát có thể xem như A có các giá trị phân biệt {a1, a2, …, av}. Nếu thuộc tính A được sử dụng để chia thành v tập con, những tập con này sẽ tương ứng với các nhánh con của nút hiện tại, độ đo thông tin có được sau khi phân lớp theo v tập con trên sẽ được tính như sau:
∑ = × = v j j j A Entropy S S S S Entropy 1 ) ( ) (
Trong đó: Sj là tổng số bộ dữ liệu được phân chia vào tập con thứ j.
Information gain: độ đo xác định ảnh hưởng của một thuộc tính trong mẫu đó trong việc phân lớp gọi là gia lượng thông tin. Gia lượng thông tin dựa trên phân nhánh bằng thuộc tính A: Gain(S,A)= Entropy(S)−EntropyA(S)
SplitInformation: Thông tin tiềm ẩn được tạo ra bằng cách chia tập dữ liệu trong một số tập con nào đó. ∑ = − = c i i i S S S S A S mation SplitInfor 1 2 log ) , (
Trong đó Si là tập con của S chứa các ví dụ có thuộc tính A mang giá trị Vi. Để ý rằng Splitinfomation thực sự chính là Entropy của S với sự liên quan trên những giá trị của thuộc tính A.
RatioGain: Sự đánh giá thay đổi các giá trị của thuộc tính. ) , ( ) , ( ) , ( A S mation SplitInfor A S Gain A S RatioGain =
Tất cả các thuộc tính sẽ được tính toán độ đo RatioGain, thuộc tính nào có độ đo RatioGain lớn nhất sẽ được chọn làm thuộc tính phân chia.
2.3.3. Một số vấn đề với thuộc tính
Thuật toán ID3 bị giới hạn bởi việc liên quan đến tập những giá trị rời rạc. Trong thuật toán C4.5 chúng ta sẽ mở rộng phạm vi hoạt của nó cho những thuộc tính có giá trị liên tục (giá trị số) để phù hợp với thế giới thực.
Bảng 2-3: Tập dữ liệu có giá trị liên tục
Quang cảnh Nhiệt độ Độ ẩm Gió Chơi tennis
Nắng Nóng 85 Nhẹ Không
Nắng Nóng 90 Mạnh Không
Âm u Nóng 78 Nhẹ Có
Mưa Ấm áp 96 Nhẹ Có
Mưa Mát 80 Nhẹ Có
Mưa Mát 70 Mạnh Không
Âm u Mát 65 Mạnh Có Nắng Ấm áp 95 Nhẹ Không Nắng Mát 70 Nhẹ Có Mưa Ấm áp 80 Nhẹ Có Nắng Ấm áp 70 Mạnh Có Âm u Ấm áp 90 Mạnh Có Âm u Nóng 75 Nhẹ Có
Mưa Ấm áp 80 Mạnh Không
Thuật toán C4.5 đưa ra định nghĩa những giá trị rời rạc mới để phân những giá trị liên tục thành những thuộc tính tượng trưng một lần nữa theo các quy tắc sau:
• Dựa trên một giá trị nếu muốn phân chia nhị phân. • Dựa trên vài giá trị nếu muốn có nhiều nhánh.
• Với mỗi giá trị tính các mẫu thuộc một lớp theo dạng A < v và A > v. • Cách chọn giá trị v hiệu quả:
o Chọn giá trị trung bình của từng cặp giá trị của thuộc tính để phân chia và tính chỉ số gia lượng thông tin.
o Chọn giá trị phân chia có chỉ số gia lượng thông tin cao nhất
Ví dụ: từ Bảng 2-3 ta tính gia lượng thông tin Gain(Sđộ ẩm, độ ẩm=67.5) như sau : Entropy(S) = - (9/14)log2(9/14) – (5/14)log2(5/14) = 0.940
EntropyĐộ ẩm =67.5(SĐộ ẩm) = (1/14)×Entropy(SĐộ ẩm≤67.5) + (13/14)×Entropy(SĐộ ẩm>67.5) = (1/14)(0) + (13/14)(-8/13)log2(8/13) – 5/13log2(5/13)) = 0.893
Gain(SĐộ ẩm, Độ ẩm=67.5) = 0.940 – 0.893 = 0.047 Tính tương tự cho các giá trị còn lại ta có bảng sau:
Độ ẩm 65 70 75 78 80 85 90 95 96 67.5 72.5 76.5 79 82.5 87.5 92.5 95.5 ≤ > ≤ > ≤ > ≤ > ≤ > ≤ > ≤ > ≤ > Có 1 8 3 6 4 5 5 4 7 2 3 2 8 1 8 1 Không 0 5 1 4 1 4 1 4 2 3 7 2 4 1 5 0 Gain 0.047 0.646 0.045 0.090 0.102 0.025 0.010 0.047
Như vậy ta có giá trị để phân chia là 72.5
2.4.3.2. Thuộc tính nhiều giá trị
Thuật toán ID3 bị giới hạn bởi việc liên quan đến những thuộc tính có nhiều giá trị, mà các giá trị này lại duy nhất. Khi đó, việc chia một tập dữ liệu thành thành quá nhiều các tập con dẫn đến số lượng các lớp tại mỗi nút giảm và do đó Entropy trên thuộc tính đó cũng giảm theo, nên gia lượng thông tin (Gain) sẽ cao hơn các thuộc tính khác. Vì vậy thuộc tính này sẽ được lựa chọn thường xuyên để tách, dẫn đến độ phân nhánh lớn, cây sẽ rất lớn và phức tạp.
Ví dụ : ta thêm thuộc tính “Ngày” vào Bảng 2-3 thì ta có:
Bảng 2-4: Bảng dữ liệu thời tiết về chơi tennis
Ngày Quang cảnh Nhiệt độ Độ ẩm Gió Chơi tennis
D1 Nắng Nóng 85 Nhẹ Không
D2 Nắng Nóng 90 Mạnh Không
D3 Âm u Nóng 78 Nhẹ Có
D4 Mưa Ấm áp 96 Nhẹ Có
D5 Mưa Mát 80 Nhẹ Có
D6 Mưa Mát 70 Mạnh Không
D7 Âm u Mát 65 Mạnh Có
D8 Nắng Ấm áp 95 Nhẹ Không
D10 Mưa Ấm áp 80 Nhẹ Có
D11 Nắng Ấm áp 70 Mạnh Có
D12 Âm u Ấm áp 90 Mạnh Có
D13 Âm u Nóng 75 Nhẹ Có
D14 Mưa Ấm áp 80 Mạnh Không
EntropyNgày(S) = × 14 1 Entropy(SD1) + × 14 1 Entropy(SD2) + … + × 14 1 Entropy(SD14) Entropy(SD1) = Entropy(SD2) = … = Entropy(SD14) = 0 → EntropyNgày(S) = 0 Gain(S, Ngày) = Entropy(S) - EntropyNgày(S) = 0.940
Lúc này, thuộc tính ngày có độ đo gia lượng thông tin cao nhất so với các thuộc tính khác trong tập dữ liệu. Nó sẽ được chọn làm thuộc tính phân tách.
Kết quả phép tách trên thuộc tính “Ngày”
Điều gì sai với thuộc tính “Ngày” ?
Thuộc tính “Ngày” có nhiều nhất những giá trị trong việc phân chia tập dữ liệu huấn luyện thành những tập nhỏ. Cũng chính vì điều này nó sẽ có thu thập thông tin rất cao liên quan đến tập dữ liệu huấn luyện. Tuy nhiên nó lại là một công cụ tiên đoán tồi của hàm mục tiêu.
Giải quyết vấn đề này như thế nào ?
Lựa chọn thuộc tính để phân tách theo nguyên tắc:
• Thuộc tính có tỉ lệ gia lượng thông tin (RatioGain) cao.
• Entropy của thuộc tính lớn hơn Entropy trung bình của tất cả các thuộc tính.
2.4.3.3. Thuộc tính thiếu giá trị
• Nếu giá trị của thuộc tính A bị mất trên một số bộ dữ liệu, hướng giải quyết sẽ thế nào ?. Giả sử rằng (x, C(x)) là một trong những tập huấn luyện trong S và giá trị A(x) là không được biết đến.
Ví dụ : Sử dụng Bảng 2-3 và thêm mẫu dữ liệu mới
Quang cảnh Nhiệt độ Độ ẩm Gió Chơi tennis
Nắng Nóng 85 Nhẹ Không
Nắng Nóng 90 Mạnh Không
… … … … …
Mưa Mát 70 ??? Không
TH1 : nếu Gió: [9 nhẹ, 5 mạnh]
→ Giá trị của thuộc tính “Gió” ở bản ghi thứ 15 sẽ là: Nhẹ TH2 : nếu Gió: [5 nhẹ, 9 mạnh]
→ Giá trị của thuộc tính “Gió” ở bản ghi thứ 15 sẽ là: Mạnh
2.3.4. Thuật toán C4.5
Dữ liệu vào: Tập dữ liệu E, tập danh sách thuộc tính, tập nhãn lớp
Dữ liệu ra: Mô hình cây quyết định
Tại hàm chính, gọi hàm đệ qui Tạocây() với ba tham số vào là tập dữ liệu E, tập danh sách thuộc tính của E và tập nhãn. Thuật toán làm việc bằng cách đệ qui chọn giá trị thuộc tính tốt nhất để chia, lưu ý là chọn giá trị của thuộc tính sao cho điều kiện chia tốt nhất (bước 7), tiếp tục tiến hành mở rộng nút con bằng cách gọi đệ qui cho đến khi điều kiện dừng (ở bước 1) được thỏa mãn. Dưới đây là phần chi tiết thuật toán. Tạocây(Tập dữ liệu E, tập danh sách thuộc tính F, tập nhãn lớp)
1 if điều_kiện_dừng(E,F) = đúng 2 nútlá = CreateNode() 3 nútlá.nhãnlớp=Phânlớp(E) 4 return nútlá 5 else 6 Nútgốc = CreateNode() 7 Nútgốc.điềukiệnkiểmtra = tìm_điểm_chia_tốt_nhất(E, F) 8 Đặt F = F \ {Nút chọn phân chia}
9 Đặt V = {v| v thoả điều kiện là phần phân chia xuất phát từ Nútgốc} 10 Lặp qua từng tập phân chia v ∈V
11 Đặt Ev = {e | Nútgốc.điềukiệnkiểmtra(e) = v và e ∈ E}
12 Nútcon = Tạocây(Ev, F, tập nhãn lớp) 13 Dừng lặp
14 End if
15 return nútgốc.
Gọi hàm Tạocây (E, tập danh sách thuộc tính của E, tập nhãn lớp).
Dòng đầu tiên sẽ kiểm tra điều kiện dừng, nếu được thỏa mãn nghĩa là đã đệ qui để tạo ra được đến nút lá. Điều kiện dừng chỉ xảy ra khi:
⇒ Tất cả các dòng trong tập dữ liệu E thuộc về cùng một lớp duy nhất (1).
⇒ Không có bất cứ dòng nào trong tập E, điều này có thể xảy ra khi tập con được tạo ở bước phân chia các tập con là rỗng (2).
⇒ Trong trường hợp (1) chỉ việc tiến hành tạo nút lá bằng hàm createNode() và tiến hành gán nhãn cho nút lá này bằng cách gán nhãn duy nhất cho thuộc tính nhãn của nút vừa được tạo này.
⇒ Trường hợp (2) sẽ trả về nút lá bằng rỗng và tiến hành gán nhãn cho nút cha là nhãn lớp xuất hiện nhiều nhất như sau:
⇒ Nhãn lớp = max (tổng của từng giá trị nhãn lớp riêng biệt trong E).
⇒ Hàm Phânlớp(E) thực hiện việc xác định nhãn cho một tập dữ liệu E, nó tự động xác định và trả về đúng giá trị nhãn cho cả hai trường hợp trên.
Dòng 3 và 4 xảy ra khi chỉ còn một thuộc tính trong nút cha (lưu ý nút cha là nút sau khi đã phân chia tạo ra tập dữ liệu D này). Nếu sau khi phân chia trên nút cha mà tập D không còn chứa thuộc tính để phân chia, trả về nút lá là giá trị nhãn xuất hiện nhiều nhất trong D.
Xét dòng 5, nếu thuật toán chưa thỏa mãn điều kiện để dừng, tiếp tục xét bằng cách tìm kiếm điểm chia tốt nhất. Để tìm điểm chia tốt nhất cần sử dụng một hàm đánh giá, kết quả của hàm này sẽ trả về thuộc tính được chọn tương ứng. Về các tiêu chuẩn đánh giá cũng như chọn điểm chia sẽ được giải thích rõ hơn trong các phần bên dưới.
Xét dòng 7 và 8, sau khi đã chọn được điểm chia tốt nhất, tiến hành phân chia tập D thành các tập con Di, cập nhật lại danh sách các thuộc tính.
Dòng 9 và 10: lặp qua danh sách các tập con Di và tiến hành gọi đệ qui hàm Tạocây() với tham số mới tương ứng.
Ví dụ minh hoạ thuật toán C4.5: xét Bảng 2-4 dữ liệu thời tiết về chơi tennis • Dữ liệu vào:
Tập dữ liệu thời tiết.
Tập nhãn lớp: Có – Không.
• Dữ liệu ra: Mô hình cây quyết định chơi tennis. Lần tạo cây đầu tiên
Tìm_điểm_chia_tốt_nhất(E, F) với E là Tập dữ liệu thời tiết và F là các thuộc tính: Ngày, Quang cảnh, Nhiệt độ, Độ ẩm, Gió.
Thuộc tính quyết định “Chơi Tennis” chỉ có hai giá trị là “Co” và “Khong”, như vậy có 9 bộ dữ liệu có nhãn lớp là giá trị “Co” và 5 bộ giá trị “Khong”. Tính: Entropy(S) = -(9/14)log2(9/14) – (5/14)log2(5/14) = 0.940
Độ đo RatioGain cho thuộc tính “Quang cảnh”(QC):
• Tập_giá_trị (Quang Cảnh)={Nắng, Âm u, Mưa}, khi đó:
Snắng (2co, 3khong) ⇒ Entropy(Snắng)= (5/14)(-(2/5)log2(2/5)-(3/5)log2(3/5))=0.347 SÂm u(4co, 0khong) ⇒ Entropy(SÂm u)= (4/14)(0) = 0
Smưa(3co, 2khong) ⇒ Entropy(Smưa)= (5/14)(-(3/5)log2(3/5)-(2/5)log2(2/5))=0.347 EntropyQC(S) =(5/14)×Entropy(SNắng)+(4/14)×Entropy(SÂmu)+(5/14)×Entropy(SMưa)
= 0.347 + 0 + 0.347 = 0.694
Gain(S, QC) = Entropy(S) – EntropyQC(S) = 0.940 – 0.694 = 0.246
SplitInfo(S, QC) = -(5/14)log2(5/14) - (4/14)log2(5/14) - (5/14)log2(5/14)=1.577 RatioGain (S, QC) = 0.246/1.577 = 0.156
Độ đo RatioGain cho thuộc tính “Gió”:
• Tập_giá_trị (Gió)={Mạnh, Nhẹ}, khi đó:
SMạnh(3co, 3khong) ⇒ Entropy(SMạnh)= (6/14)(-(3/6)log2(3/6)-(3/6)log2(3/6))=0.429 SNhẹ(6co, 2khong) ⇒ Entropy(SMạnh)=(8/14)(-(6/8)log2(6/8)-(2/8)log2(2/8))=0.464 EntropyGió(S) = (6/14)×Entroy(SMạnh) + (8/14)×Entropy(SNhẹ)
= 0.429 + 0.464 = 0.893
Gain(S, Gió) = Entropy(S) – EntropyGió(S) = 0.940 – 0.893 = 0.047 SplitInfo(S, Gió) = -(6/14)log2(6/14) – (8/14)log2(8/14) = 0.985 RatioGain(S, Gió) = 0.047/0.985 = 0.048
Độ đo RatioGain cho thuộc tính “Độ ẩm”:
• Tập_giá_trị (Độ ẩm)={≤72.5, >72.5}, khi đó:
S≤72.5(3co, 1khong) ⇒ Entropy(S≤72.5)= (4/14)(- (3/4)log2(3/4)-(1/4)log2(1/4))=0.231 S>72.5(6co, 4khong) ⇒ Entropy(S>72.5)=(10/14) (-(6/10)log2(6/10)-(4/10)log2(4/10))
EntropyĐộ ẩm(S) = (4/14)×Entropy(S<=72.5) + (10/14)×Entropy(S>72.5)= 0.925 Gain(S, Độ ẩm) = Entropy(S) - EntropyĐộ ẩm(S) = 0.940 – 0.925 = 0.015 SplitInfo(S, Độ ẩm) = -(4/14)log2(4/14) – (10/14)log2(10/14) = 0.863 RatioGain(S, Độ ẩm) = 0.015/0.863 = 0.017
Độ đo RatioGain cho thuộc tính “Nhiệt độ”(ND):
• Tập_giá_trị (Nhiệt Độ)={Nóng, Ấm áp, Mát}, khi đó:
SNóng(2co, 2Khong) ⇒ Entropy(SNóng) =(4/14)(-(2/4)log2(2/4)-(2/4)log2(2/4))=0.286 SẤm áp(4co, 2khong) ⇒ Entropy(SẤm áp)=(6/14)(-(4/6)log2(4/6)-(2/6)log2(2/6))=0.394 SMát(3co, 1khong) ⇒ Entropy(SMát) =(4/14) (-(3/4)log2(3/4)-(1/4)log2(1/4))=0.231 EntropyND(S) = (4/14)×Entropy(SNóng)+(6/14)×Entropy(SẤm áp)+ (4/14)×Entropy(SMát)
= 0.286 + 0.394 + 0.231 = 0.911
Gain(S, ND) = Entropy(S) - EntropyNhiệt độ(S) = 0.940 – 0.911 = 0.029
SplitInfo(S, ND) = -(4/14)log2(4/14)–(6/14)log2(6/14)–(4/14)log2(4/14)= 1.557 RatioGain(S, ND) = 0.028/1.557 = 0.019
Độ đo RatioGain cho thuộc tính “Ngày”:
EntropyNgày(S)= (1/14)×Entropy(SD1) +…+ (1/14)×Entropy(SD14) = 14×(1/14)×(0)= 0 Gain(S, Ngày) = Entropy(S) - EntropyNgày(S) = 0.940 – 0 = 0.940
SplitInfo(S, Ngày) = 14×(- (1/14)log2(1/14)) = 3.807 RatioGain(S, Ngày) = 0.940/3.807 = 0.246
Lựa chọn thuộc tính tốt nhất để phân chia: Tính Entropy trung bình của các thuộc tính:
(0.694 + 0.892 + 0.925 + 0.911 + 0)/5 = 0.684 Ta có: RatioGain(S, Quang cảnh) = 0.156
EntropyQuang cảnh(S) là 0.694 > 0.684
Thuộc tính được chọn để phân chia: Quang cảnh
Xét nhánh Quang cảnh “Nắng”:
SNắng(2co, 3khong)⇒ Entropy(SNắng)=-(2/5)log2(2/5)-(3/5)log2(3/5) = 0.971 Độ đo RatioGain cho thuộc tính “Nhiệt độ”(ND){Nóng, Ấm áp, Mát}:
SNóng(0co, 2khong) ⇒ Entropy(SNóng)= 0
SẤm áp(1co, 1khong) ⇒ Entropy(SẤm áp)=(2/5)(-(1/2)log2(1/2)-(1/2)log2(1/2))=0.4 SMát(1co, 0khong) ⇒ Entropy(SMát)=0
EntropyND(SNắng)=(2/5)×Entropy(SNóng) + (2/5)×Entropy(SẤm áp) + (1/5)×Entropy(SMát) = 0.4
Gain(SNắng, ND) = 0.971 – 0.400 = 0.571
SplitInfo(SNắng, ND) = - (2/5)log2(2/5) – (2/5)log2(2/5) – (1/5)log2(1/5)= 1.522 RatioGain(SNắng, ND) = 0.571/1.522 = 0.375
Độ đo RatioGain cho thuộc tính “Độ ẩm”: Chọn giá trị phân chia tốt nhất:
Entropy(SĐộ ẩm) = - (2/5)log2(2/5) – (3/5)log2(3/5) = 0.971
Độ ẩm 70 85 90 95 77.5 87.5 92.5 ≤ > ≤ > ≤ > Có 2 0 2 0 2 0 Không 0 3 1 2 2 1 Gain 0.971 0.420 0.171
EntropyĐộ ẩm(SNắng) = (2/5)×Entropy(S<=77.5) + (3/5)×Entropy(S>77.5)= 0 Gain(SNắng, Độ ẩm) = 0.971 – 0 = 0.971
SplitInfo(SNắng, Độ ẩm) = - (2/5)log2(2/5) – (3/5)log2(3/5) = 0.971 RatioGain(SNắng, Độ ẩm) = 0.971/0.971 = 1
Độ đo RatioGain của thuộc tính “Gió”{Nhẹ, Mạnh}:
SNhẹ(1co, 1khong) ⇒ Entropy(SNhẹ)=(2/5)(-(1/2)log2(1/2)-(1/2)log2(1/2))=0.4 SMạnh(1co, 2khong) ⇒ Entropy(SMạnh)=(3/5)(-(1/3)log2(1/3)-(2/3)log2(2/3))=0.551 EntropyGió(SNắng) = (2/5)×Entropy(SNhẹ) + (3/5)×Entropy(SMạnh)
= 0.4 + 0.551 = 0.951 Gain(SNắng, Gió) = 0.971 – 0.951 = 0.020
SplitInfomation(SNắng, Gió) = - (2/5)log2(2/5) – (3/5)log2(3/5) = 0.971 RatioGain(SNắng, Gió) = 0.020/0.971 = 0.021
SD1(0co, 1khong) ⇒ Entropy(SD1) = 0 SD2(0co, 1khong) ⇒ Entropy(SD2) = 0 SD8(0co, 1khong) ⇒ Entropy(SD8) = 0 SD9(1co, 0khong) ⇒ Entropy(SD9) = 0 SD11(1co, 0khong) ⇒ Entropy(SD11) = 0
EntropyNgày(SNắng) = (1/5)×Entropy(SD1) + (1/5)×Entropy(SD2) + (1/5)×Entropy(SD8) + (1/5)×Entropy(SD9) + (1/5)×Entropy(SD11) = 0
Gain(SNắng, Ngày) = 0.971 – 0 = 0.971
SplitInfomation(SNắng, Ngày) = 5×(-1/5×log2(1/5)) = 2.322 RatioGain(SNắng, Ngày) = 0.971/2.322 = 0.418
Thuộc tính được chọn để phân chia: Độ ẩm
Xét nhánh “Mưa”:
SMưa(3co, 2khong) ⇒ Entropy(SMưa) = -(3/5)log2(3/5)-(2/5)log2(2/5)=0.971