1.3.2.1. Gíi thịu
Quinlan là ng i phát triển gi i thuật ID3 đ ợc công bố vào cuối thập niên 70 c a thế kỷ XX. Gi i thuật ID3 đư tr̉ thành các h̀n đá t ng và nó m̉ đầu cho hàng lo t các gi i thuật dựa trên học qui n p cây quyết đ̣nh (decision tree induction). Nhiệm ṿ c a gi i thuật ID3 là học cây quyết đ̣nh từ một tập các ví ḍ huấn luyện (training example) hay c̀n gọi là dữ liệu huấn luyện (training data).
Gi i thuật ID3 áp ḍng cách tiếp cận tham ăn (greed) để xây dựng cây quyết đ̣nh theo h ớng từ trên xuống (top -down). L u Ủ rằngđối với bất kỳ thuộc tính nào, chúng ta cũng có thể phân vùng tập hợp các ví ḍ huấn luyện thành những tập con tách r i, mà ̉ đó mọi ví ḍ trong một phân vùng (partition) có một giá tṛ chung cho thuộc tính đó. ID3 chọn một thuộc tính để kiểm tra t i nút hiện t i c a cây và dùng tŕc nghiệm này để phân vùng tập hợp các ví ḍ, thuật toán khi đó xây dựng theo cách đệ quy một cây con cho từng phân vùng. Việc này tiếp ṭc cho đến khi mọi thành viên c a phân vùng đều nằm trong cùng một lớp, lớp đó tr̉ thành nút lá c a cây.
1.3.2.2. Gỉi thụt ID3
Input: Một tập hợp các ví ḍ S ch a dữ liệu huấn luyện. Mỗi ví ḍ bao g̀m các thuộc tính A và một giá tṛ phân lo i c a nó (Yes, No,... )
Output: Cây quyết đ̣nh.
Gi i thuật xây dựng cây quyết đ̣nh ID3 [5]:
1.3.2.3. Cḥn thục t́nh phân lọi t́t nhất
Quinlan là ng i đầu tiên đề xuất việc sử ḍng lỦ thuyết thông tin để t o ra các cây quyết đ̣nh và công trình c a ông là cơ s̉ cho phần trình bày ̉ đây. LỦ thuyết thông tin c a Clause Shannon cung cấp khái niệm Entropy để đo độ thuần nhất c a một tập hợp [3].
Khi tập ví ḍ là thuần nhất thì có thể nói: ta biết ch́c ch́n về giá tṛ phân lo i c a một ví ḍ thuộc tập này, hay ta cól ợng thông tin về tập đó là cao nhất. Khi tập ví ḍ có độ pha trộn cao nhất, nghĩa là số l ợng các ví ḍ có cùng giá tṛ phân lo i cho mỗi lo i làt ơng đ ơng nhau, thì khi đó ta không thể đoán chính xác đ ợc một ví ḍ có thể có giá tṛ phân lo i là gì, hay nói cách khác l ợng thông tin cóđ ợc về tập này là ít nhất. Vậy đều ta mong muốn ̉ đây là làm sao chọn thuộc tính để hỏi sao cho có thể chia tập ví ḍ ban đầu thành các tập ví ḍ thuần nhất càng nhanh càng tốt. Vậy tr ớc hết ta cần có một phép đo độ thuần nhất c a một tập hợp, từ đó mới có thể so sánh tập ví ḍ nào thì tốt hơn.
Function ID3_Builder(S, A) {
1. Ṭo một nút gốc N cho cây quýt định;
2. If (Các mẫu trong S đều thuộc cùng một ĺp C) Then
Return nút N là nút lá có nhãn C;
3. If (thuộc tính A r̃ng) Then
Return nút N v́i nhãn là ĺp phổ bín nhất trong các
mẫu;
4. Cḥn A.Best là thuộc tính có độ ḷi thông tin cao
nhất;
5. Lọi A.Best ra kh̉i ṭp thuộc t́nh A=A-A.best;
6. Foreach (giá trị ai của A.best)
{
Ṭo một nhánh của cây t̀ ńt N với A.Best=ai;
Đặt vào Si các mẫu trong S có giá trị A.Best=ai;
If (Si r̃ng) Then
Ǵn nh̃n cho nút ĺ là ĺp phổ bín trong ćc mẫu;
Else Ǵn ńt đực trả về bởi ID3_Builder(Si, A); }
1.3.2.4. Đ̣ ḷi thông tin
Độ lợi thông tin (Information Gain) là độ đo đ ợc sử ḍng trong gi i thuật ID3. Đầu tiên là công th c đo l ợng thông tin kỳ vọng để phân lớp một phần tử trong tập dữ liệu Sđ ợc đo bằng công th c sau [1], [11]:
2 1 ( ) log ( ) m i i i Info S p p (1.1)
trong đó, pi là xác xuất một phần tử dữ liệu trong tập S thuộc vào lớp Civà nó đ ợc ớc l ợng bằng công th c | | | | i i S p S , với Si là tập các phần tử dữ liệu trong tập S thuộc lớp Ci; m là sốl ợng các lớp trong S. Hàm logarit cơ số 2 đ ợc sử ḍng là do công th c trên đo l ợng thông tin theo đơn ṿ bit (theo lỦ thuyết thông tin c a C.Shannon). Hàm Info S( ) c̀n đ ợc gọi là Entropy c a Sđ ợc viết Entropy S( )[1]. Vậy: 2 1 ( ) ( ) log ( ) m i i i Entropy S Info S p p (1.2)
Trong luận văn này nghiên c u ch̉ giới h n với số lớp m 2. Trong tr ng hợp S là tập ví ḍ, thì thành viên c a S là một ví ḍ, mỗi ví ḍ thuộc cùng một lớp hay có một giá tṛ phân lo i.
Entropy có giá tṛ nằm trong kho ng [0..1].
Entropy(S)=0: Nếu tập S ch̉ toàn ví ḍ thuộc cùng một lo i, hay S là thuần nhất. Entropy(S)=1: Nếu tập S có các ví ḍ thuộc các lo i khác nhau với độ pha trộn cao nhất.
0<Entropy(S)<1: Nếu tập S có số l ợng ví ḍ thuộc các lo i khác nhau là không bằng nhau.
H̀nh 1.10. Minh ḥa gí tṛ Entropy(S)
Gi sử ta phân chia dữ liệu trong S theo thuộc tính A nào đó, và gi sử thuộc tính này có v giá tṛ (r i r c) khác nhau là { , 2,...,a a1 av}. Thuộc tính này phân chia tập dữ liệu S thành v tập con { ,S S ,...,S ) trong đó S là tập các phần tử dữ liệu có giá
tṛ c a thuộc tính A là ai. Tập con này sẽ t ơng ng với một nhánh cây đ ợc phát triển từ nút N trong gi i thuật t o cây quyết đ̣nh. Tr ng hợp lỦt ̉ng thì ta muốn tập con này sẽ có kh năng phân lớp chính xác các phần tử trong nó, hay nói một cách khác ta muốn tập con này thuần nhất càng tốt. Tuy nhiên trong thực tế thì các tập này th ng không thuần nhất vì nó ch a các phần tử dữ liệu thuộc về các lớp khác nhau, do đó chúng ta cần thêm thông tin Info SA( )để phân lớp chính xác tập con này. L ợng thông tin Info SA( )này là thông tin kỳ vọng để phân lớp một phần tử dữ liệu trong S dựa trên việc chia dữ liệu bằng thuộc tính Ac̀n gọi là Entropy c a tập S đối với thuộc tính A viết là Entropy S A( , ).Giá tṛ này càng nhỏ thì độ thuần nhất c a các tập con càng cao. Thông tin này đ ợc đo b̉i công th c [1], [11]:
1 | | ( ) ( , ) ( ) | | v j A j j S
Info S Entropy S A x Info S
S (1.3)
trong đó| | | |
j
S
S đ ợc dùng làm trọng số c a tập con Sj. Cuối cùng hàm độ lợi thông tin c a thuộc tính A trong tập Slà Gain S A( , )đ ợc tính bằng công th c [1], [11]:
( , ) ( ) ( )
( ) ( , )
A Gain S A Info S Info S
Entropy S Entropy S A (1.4)
Giá tṛ Gain S A( , )cho ta biết đ ợc lợi bao nhiêu nếu chia dữ liệu theo thuộc tính A. Giá tṛ này càng lớn thì càng tốt, do đó thuộc tính có giá tṛ Gain()lớn nhất sẽđ ợc chọn để phân nhánh trong quá trình xây dựng cây quyết đ̣nh.
Ví ḍ: Xét b ng dữ liệu “Học sinh” có bỏ hay hay không? Thuật toán ID3 sẽ học cây quyết đ̣nh từ tập dữ liệu huấn luyện nh sau:
Gọi S là tập thuộc tích đích từ b ng dữ liệu “Học sinh” (b ng 1.1), ta nhận thấy trong tập thuộc tính đích S có 14 mẫu, trong đó có 6 mẫu thuộc lớp Yes và 8 mẫu thuộc lớp No.
Do đó, theo công th c (1.2) ta có:
Entropy(S) = - (6/14)log2(6/14) - (8/14)log2(8/14) = 0.99
Đối với thuộc tính Hoc_luc, ta tính Entropy c a các tập con S đ ợc chia b̉i các giá tṛ c a thuộc tính Hoc_luc nh b ng sau:
B ng 1.2. Entropy phân theo thuộc tính Hoc_luc đối với tập S
Hoc_luc Số l ợng Bo_hoc Entropy(i)
Yes No
G 3 3 0 0
Entropy c a S đốivới thuộc tính Hoc_luc theo công th c (1.3) là: Entropy(S, Hoc_luc) = (3/14) x 0 + (5/14) x 0.72 + (6/14) x 0.65 = 0.54 Độ lợithông tin t ơng ng, theo công th c (1.4) là:
Gain(S, Hoc_luc) = Entropy(S) – Entropy(S, Hoc_luc) = 0.99 - 0.54 = 0.45 Một cách t ơng tự, độ lợi thông tin c a các thuộc tính c̀n l i là:
Gain(S, Hanh_kiem) = 0.62
Gain(S, Hoan_canh) = 0.19 Gain(S, Luu_ban) = 0.01
Ta thấy, Gain(S, Hanh_kiem) lớn nhất nên thuộc tính Hanh_kiem đ ợc chọn làm nút phân tách cây.
Tập con các mẫu ng với thuộc tính Hanh_kiem =”T” có Entropy=0, các mẫu này có giá tṛ Du_bao =”No” nên nút lá ng với nhánh này là”No”.
Tập con các mẫu ng với thuộc tính Hanh_kiem =”Y” có Entropy=0, các mẫu này có giá tṛ Du_bao =”Yes” nên nút lá ng với nhánh này là”Yes”.
Cây đ ợc t o với nút gốc Hanh_kiem nh sau:
H̀nh 1.11. Cây đực ṭo b̀ng thụt tón ID3 xuất ph́t từ thục t́nh Hanh_kiem ng với nhánh Hanh_kiem=”K” và Hanh_kiem=”TB” ta cũng tính giá tṛ Gain cho các thuộc tính và chọn thuộc tính có giá tṛ Gain lớn nhất để triển khai cây. Quá trình thực hiện cho đến khi hết tập S, ta thu đ ợc cây nh sau:
Với việc tính toán giá tṛ 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 ṭ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.