You are on page 1of 6

Bảng dữ liệu này mô tả mối quan hệ giữa đặc điểm của 14 người (bốn cột đầu) và việc

một có mua máy tính hay không hay không (cột cuối cùng). Nói cách khác, ta phải dự
đoán giá trị ở cột cuối cùng nếu biết giá trị của bốn cột còn lại.

age income student credit_rating buys_computer


<=30 high no fair no
<=30 high no excellent no
31…40 high no fair yes
>40 medium no fair yes
>40 low yes fair yes
>40 low yes excellent no
31…40 low yes excellent yes
<=30 medium no fair no
<=30 low yes fair yes
>40 medium yes fair yes
<=30 medium yes excellent yes
31…40 medium no excellent yes
31…40 high yes fair yes
>40 medium no excellent no

Có bốn thuộc tính đặc điểm:


1. age nhận một trong ba giá trị: <=30, 31..40, >40.
2. income nhận một trong ba giá trị: high, medium, low.
3. student nhận một trong hai giá trị: yes, no.
4. credit_rating nhận một trong hai giá trị: fair, excellent.

(Tổng cộng có 3 ×3 ×2 ×2=36 loại đặc điểm khác nhau, trong đó 14 loại được thể hiện
trong bảng.)
Đây có thể được coi là một bài toán dự đoán liệu một người có mua máy tính hay
không dựa vào quan sát các đặc điểm.
Chúng ta sẽ cùng tìm thứ tự các thuộc tính bằng thuật toán ID3.
Trong 14 giá trị đầu ra ở Bảng trên, có 5 giá trị bằng no và 9 giá trị bằng yes. Entroy
tại root node của bài toán là:

Info ( S )=I ( 9 ,5 )=
−9
14
log 2 ( )
9 5
( )
− log 2
14 14
5
14
=0,940

Tiếp theo, chúng ta tính tổng có trọng số entropy của các child node nếu chọn một
trong các thuộc tính age, income, student, credit_rating để phân chia dữ liệu.
Xét thuộc tính age. Thuộc tính này có thể nhận một trong ba giá trị <=30, 31..40, >40.
Mỗi một giá trị sẽ tương ứng với một child node. Gọi tập hợp các điểm trong mỗi child
node này lần lượt là với tương ứng phần tử. Sắp xếp lại Bảng ban đầu theo thuộc tính
age ta đạt được ba Bảng nhỏ sau đây.

credit_ratin buys_comput
age income student g er
<=30 high no fair no
<=30 high no excellent no
mediu
<=30 m no fair no
<=30 low yes fair yes
mediu
<=30 m yes excellent yes

credit_ratin buys_comput
age income student g er
31…40 high no fair yes
31…40 low yes excellent yes
mediu
31…40 m no excellent yes
31…40 high yes fair yes

credit_ratin buys_comput
age income student g er
mediu
>40 m no fair yes
>40 low yes fair yes
>40 low yes excellent no
mediu
>40 m yes fair yes
mediu
>40 m no excellent no
Nhận xét: Quan sát nhanh ta thấy rằng child node ứng với age = 31…40 sẽ có entropy
bằng 0 vì tất cả output đều là yes. Hai child node còn lại với có entropy khá cao vì tần
suất output bằng yes hoặc no là xấp xỉ nhau.

Chúng ta có thể kiểm tra được rằng

H ( A1 )=I ( 2 ,3 )=
−2
5 ()
log 2
2 3
− log 2
5 5
3
5 ()
=0,971

H ( A2 )=I ( 4 , 0 )=0

H ( A3 ) =I ( 3 , 2 )=
−3
5 ()
log 2
3 2
− log
5 5 2 5
2
=0,971()
5 4 5
Infoage ( S )= H ( A 1 ) + H ( A2 ) + H ( A 3 ) ≈ 0,694
14 14 14

Gain ( age )=Info ( S )−Infoage ( S ) =0,246


Tính toán tương tự như trên với 3 thuộc tính còn lại là income, student, credit_rating ta
được:
Gain ( income )=0,029
Gain ( student )=0,151
Gain ( credit rating )=0,048

Như vậy, thuộc tính cần chọn ở bước đầu tiên là age vì có information gain là lớn nhất

Sau bước phân chia đầu tiên này, ta nhận được ba child node với các phần tử như trong
ba Bảng phân chia theo age . Child node thứ hai ứng với age = 31…40 không cần phân
chia tiếp vì nó đã tinh khiết

Còn với hai child node là <=30 và >40 ta sẽ lại tiếp tính theo ID3 để có thể thể tìm
được thuộc tình có tổng trọng số bằng 0 (tinh khiết)
credit_ratin buys_compute
age income student g r
<=30 high no fair no
<=30 high no excellent no
mediu
<=30 m no fair no
<=30 low yes fair yes
mediu
<=30 m yes excellent yes

Trong 5 giá trị đầu ra ở Bảng trên, có 3 giá trị bằng no và 2 giá trị bằng yes. Entroy tại
root node của bài toán là:

Info ( S )=I (2 , 3 )=
−2
5
log 2 ()
2 3
− log 2
5 5
3
5 ()
=0,971

Xét thuộc tính income:

credit_ratin
age income student g buys_computer
<=30 high no fair no
<=30 high no excellent no

credit_ratin
age income student g buys_computer
mediu
<=30 m no fair no
mediu
<=30 m yes excellent yes

credit_ratin
age income student g buys_computer
<=30 low yes fair yes

H ( I 1) =I ( 0 , 2 )=
−0
2 () ()
log 2
0 2
− log 2
2 2
2
2
=0

log ( )− log ( )=1


−1 1 1 1
H ( I ) =I ( 1 , 1 )=
2 2 2
2 2 2 2

log ( )− log ( )=0


−1 1 0 0
H ( I ) =I ( 1 , 0 )=
3 2 2
1 1 1 1

2 2 1
Infoincome ( S )= H ( H 1 ) + H ( H 2 ) + H ( H 3 ) ≈ 0 , 4
1
5 5 5

Gain ( income 1) =Info ( S )−Infoincome ( S )=0,571


1

Tính tương tự với 2 thuộc tính student, credit_rating ta cũng tìm cũng tìm ra được
Gain ( student 1 )=0,971
Gain ( credit ¿ ) =0,0207

Như vậy ta chọn thuộc tình student vì có information gain là lớn nhất
Ứng với age là <=30, kết quả tính được bằng ID3 sẽ cho chúng ta thuộc tính student vì
tổng trọng số của entropy sau bước này sẽ bằng 0 với output bằng yes khi và chỉ khi
student = yes.
Tính tương tư nhưng với age là >40, kết quả tính được bằng ID3 sẽ cho chúng ta thuộc
tính credit_rating vì tổng trọng số của entropy sau bước này sẽ bằng 0 với output bằng
yes khi và chỉ khi credit_rating = fair.

You might also like