You are on page 1of 43

Cây quyết định

Decision tree
thanh trinh
thanh.trinh@phenikaa-uni.edu.vn
Faculty of computer science, Phenikaa university
Nội dung
• Thế nào là phân lớp
• Cây quyết định
• Xây dựng cây quyết định
• Thuật toán xây dựng cây quyết định
• Các vấn đề gặp phải khi xây dựng cây
• Kết luận
Thế nào là Phân lớp?
• Thế nào là phân lớp
• Cây quyết định là gì
• Giới thiệu về cây quyết định
• Xây dựng cây quyết định
• Các thuật toán xây dựng cây quyết định
• Các vấn đề gặp phải khi xây dựng cây
• Kết luận
Phân lớp là gì?
• Là một quá trình của việc chia các lớp dữ liệu thành các nhóm hay loại
khác nhau bằng việc gắn nhãn.
• Là kỹ thuật của việc phân loại các quan sát (mẫu) thành các loại khác
nhau. Vậy về cơ bản, chúng ta xử lý dữ liệu, phân tích dữ liệu dựa trên
một số điều kiện và cuối cùng chúng ta phân chia dữ liệu đấy thành
các loại hay nhóm.
Một số thuật toán phân lớp
• Cây quyết định
• Random forest
• SVM
• KNN
• Naïve bayes
• ….
Cây quyết định là một biểu đồ
được sử dụng để quyết định một
Cây quyết định quá trình hành động. Mỗi nhánh
của cây thể hiện một quyết định
khả thi.
• Màu nâu đỏ: chính là gốc và nốt quyêt định Lương 30
Triệu
• Màu xanh chính là các nốt lá Yes No

8 tiếng Không
nhận việc

Yes No
3 tháng
tăng lương
Nhận 1 lần
việc
No
Yes
Nhận Không
việc nhận việc
Màu sắc Đường kính Khối lượng Loại quả

Vàng 2 cm 50 gram Chanh

Vàng 15 cm 500 gram Bưởi

Xanh lá 5cm 200 gram Ổi

Đỏ 1cm 10gram Nho

Xanh lá 5 cm 300 gram Vú sữa


Màu sắc Đường kính Khối lượng Loại quả
• Ví dụ: Phân loại hoa quả.
Vàng 2 cm 50 gram Chanh
Vàng 15 cm 500 gram Bưởi
Xanh lá 5cm 200 gram Ổi
Đường Đỏ 1cm 10gram Nho
kính > 2 Xanh lá 5 cm 300 gram Vú sữa
Vàng 2 cm 50 gram Chanh
Đỏ 1cm 10gram Nho No
Yes Vàng 15 cm 500 gram Bưởi
Xanh lá 5cm 200 gram Ổi
Màu Màu Xanh lá 5 cm 300 gram Vú sữa
vàng vàng
Yes No Yes No Xanh lá 5cm 200 gram Ổi
Xanh lá 5 cm 300 gram Vú sữa
Chanh Nho Bưởi > 200 gram

Vúa sữa Ổi
• Cây quyết định có thể được minh họa bằng?

• Một tập hợp các quy luật ( set of rules):


• Quả bưởi = {Đường kính >2cm, màu vàng}
• Quả chanh ={Đường kính không lớn hơn 2cm, màu vàng}
Các thành phần của Cây quyết định
• Cây quyết định: Gồm 3 thành
phần:
• Nút thể hiện một đặc trưng (tính
chất của dữ liệu)
• Mỗi nhánh thể hiện một quy luật
(rule)
• Mỗi lá biểu biễn một kết quả (một
phân lớp cụ thể hay một nhánh tiếp
tục)
• Thế nào là phân lớp
• Các kiểu (thuật toán) phân lớp
• Cây quyết định
• Xây dựng cây quyết định
• Các thuật toán xây dựng cây quyết định
• Các vấn đề gặp phải khi xây dựng cây
• Kết luận
Xây dựng cây quyết định
• Cây quyết định xây dựng từ đâu?
• Xây dựng mô hình cây quyết định xong để làm gì?

Xây dựng mô Kiểm định/ dự


Dữ liệu
hình báo
Outlook Temperature Humidity Windy Play
• Chúng ta có một bảng dữ liệu về thời tiết và việc
thi đấu của một đội bóng trong 14 ngày qua. sunny hot high FALSE no
• Xây dựng một Cây quyết định, có thể dự đoán
được liệu đội bóng có thi đấu hay không vào ngày sunny hot high TRUE no
15. overcast hot high FALSE yes
• Thời tiết = {rainy, hot, high, false} rainy mild high FALSE yes
• Play = YES or NO ??? rainy cool normal FALSE yes
rainy cool normal TRUE no
overcast cool normal TRUE yes
sunny mild high FALSE no
sunny cool normal FALSE yes
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
rainy mild high TRUE no
• Mục tiêu cần phần lớp (Target class) : Play (9 yes, 5 no)
• Các đặc trưng (thuộc tính): outlook, temperature,
humidity
windy
Outlook: sunny, overcast, rainy
Temperature: hot, mild, cool
Humidity: high, normal
Windy: false, true
outlook Temp. humidity windy play outlook Temp.
play sunny hot high true No sunny hot
No rainy cool Normal true NoWindy overcast hot
mild Normal true overcast
Yes cool Normal true Yes rainy mild
No sunny mild Normal true
true Yes false
rainy cool
Yes overcast mild high true Yes sunny mild
Temp.
rainy mild high true no sunny cool
hot
Yes rainy mild
cool
Yes mild overcast hot
No
ormalno trueplay
windy Yes
humidity
ghtrue true No Yes
outlook high
ghtrue true No no rainy
normal
true Yes overcast
outlook
true Yes no yes overcast
true Yes
true no rainy cool Normal true No no yes
overcast cool Normal true Yes overcast mild high true
rainy mild high true
outlook Temp. humidity windy play
sunny hot high true No
rainy cool Normal true No
overcast cool Normal true Yes
• E(windy =true) = -3/6 * log(3/6) sunny mild Normal true Yes

• - 3/6*log (3/6) overcast mild high true Yes


rainy mild high true no

• E(windy = false) = -2/8*log(2/8)


outlook Temp. humidity windy play
• - 6/8*log(6/8)
sunny hot high False no
overcast hot high false Yes
• Entropy (windy) = 6/14 * E(windy =true) rainy mild high false Yes

• + 8/14 *E(windy =false) rainy cool normal false Yes


sunny mild high false No
• sunny cool normal false Yes
rainy mild normal false yes
overcast hot normal false yes
• Chọn đặc trưng Outlook là nốt chia đầu tiên:
Outlook
• Bảng dữ liệu tương ứng sẽ chia làm 3 phần:
Sunny overcast rainy
Outlook

Sunny rainy
overcast

Temp.

hot mild cool

no humidity yes
high normal

no yes
Outlook

Sunny rainy
overcast

Temp. yes

hot mild cool

no humidity yes
high normal

no yes
Outlook

Sunny rainy
overcast

Temp. yes Temp.

hot mild cool mild cool

no humidity yes humidity windy


high normal high normal true false

no yes windy yes no yes


true false
no yes
Outlook

Sunny rainy
overcast

Temp. yes Temp.

hot mild cool mild cool

no humidity yes humidity windy


high normal high normal true false

no yes windy yes no yes


true false
no yes
Thời tiết = {rainy, hot, high, false}
Play = YES or NO ???
Outlook

Sunny overcast rainy

Humidity yes windy

high true false


normal

no yes no yes

Thời tiết = {rainy, hot, high, false}


Play = YES or NO ???
Thế nào là phân lớp
Các kiểu (thuật toán) phân lớp
Cây quyết định
Xây dựng cây quyết định

Thuật toán xây dựng cây quyết định


Các vấn đề gặp phải khi xây dựng cây
Kết luận
• Mục đích: Tạo ra một model dự đoán chính xác – hiệu quả.
• Xây dựng cây quyết định gồm 2 bước:
• Phát triển cây quyết định: đi từ gốc, đến các nhánh, phát triển quy nạp
theo hình thức chia để trị.
• Chọn thuộc tính “tốt” nhất bằng một độ đo đã định trước
• Phát triển cây bằng việc thêm các nhánh tương ứng với từng giá trị của thuộc
tính đã chọn
• Sắp xếp, phân chia tập dữ liệu đào tạo tới node con
• Nếu các ví dụ được phân lớp rõ ràng thì dừng.
• Ngược lại: lặp lại bước 1 tới bước 4 cho từng node con
Lựa chọn thuộc tính
Cách lựa chọn thuộc tính
- Dựa vào tính toán các giá trị Entropy và Information Gain
- 2 khái niệm được đưa ra bởi Claude Elwood Shannon (nhà toán
học, kĩ sư điện tử, và mật mã học người Mỹ, được coi là cha đẻ
của lý thuyết thông tin)

Entropy:
- Đo lường sự hỗn loạn hay tính ngẫu nhiên hay độ
nhiễu của một nhóm dữ liệu (a segment).
- Entropy cao → nhóm có độ hỗn loạn dữ liệu cao
(không theo quy luật, trật tự),
- Entropy càng thấp → dữ liệu của nhóm càng có Entropy thông tin mô tả mức độ hỗn loạn
trong một tín hiệu lấy từ một sự kiện ngẫu
trật tự→ Phân loại tốt nhiên. Nói cách khác, entropy cũng chỉ ra
có bao nhiêu thông tin trong tín hiệu, với
Information Gain: thông tin là các phần không hỗn loạn ngẫu
- Đo lường độ giảm của entropy khi phân nhóm dữ nhiên của tín hiệu.

liệu dựa trên một thuộc tính (= Entropy_orgin-


Entropy_seg)
- Information Gain càng cao → thuộc tính càng nên Picture: internet
chọn để phân nhóm
Entropy

• Entropy(S) = ∑(i=1 to C)-|Si|/|S| * log2(|Si|/|S|)


• S =tập mẫu
• Si = Tập con Si
• C = Số lượng các lớp;
Information gain

Entropy (S): Thông tin entropy trước khi chia.

A: là một đặc trưng


v: là một giá trị của đặc trưng A
|Sv|: là số mẫu khi đặc trưng A mang giá trị v;
|S|: là số tổng số mẫu trước khi chia
Entropy (Av) là thông tin Entropy của đặc trưng A mang giá trị v
• Mục tiêu cần phần lớp (Target class) : Play (9 yes, 5 no)
• Các đặc trưng (thuộc tính): outlook, temperature, humidity, windy
Outlook: sunny, overcast, rainy
Temperature: hot, mild, cool
Humidity: high, normal
Windy: false, true
• Tính Entropy (S): trước khi chia nhánh.

• Entropy(S) = - (5/14)*log(5/14) - (9/14)*log(9/14)


• = 0.940

• Chọn đặc trưng Outlook để chia:


• E (outlook = sunny) = -3/5*log(3/5) -2/5*log(2/5) =0.971
• E (outlook = overcast) = -0/4*log(0/4) – 4/4*log(4/4) = 0
• E (outlook = rainy) = -2/5*log(2/5) -3/5*log(3/5) = 0.971
• Thông tin trung bình Entropy(Outlook) =
= 5/14* E(outlook = sunny) +4/14* E (outlook = overcast) +5/14* E (outlook = rainy)
=0.693

• IG (S, outlook) = Entropy(S) - Entropy (outlook) = 0.940- 0.693= 0.247


• Chọn đặc trưng Temp. để chia
• E (temp.= hot) = -2/4*log(2/4) -2/4*log(2/4) =1
• E (temp. = mild) = -2/6 *log(2/6) – 4/6 *log(4/6) = 0.918
• E (temp. = cool) = -1/4*log(1/4) – 3/4 *log(3/4) = 0.811
• E(temp.) = 4/14 * E (temp.= hot) +6/14 * E (temp. = mild) +4/14 * E (temp. = cool) = 0.911
• IG(S, temp.) = 0.940 - 0.911 = 0.029
• Chọn đặc trưng humidity để chia
• E(humidity) = 7/14 *( 4/7 *log(4/7) + 3/7 *log(3/7) ) + 7/14 *(1/7*log(1/7)+6/7 *log(6/7))
=0.788
• IG (S, humidity) = 0.940- 0.788 = 0. 152
• Chọn đặc trưng Windy để chia
• E(windy) = 8/14 *(2/8 *log(2/8) + 6/8 *log(6/8)) + 6/14* (3/6 *log(3/6) +3/6*log(3/6)) = 0.892
• IG(S, windy) = 0.940- 0.892 = 0.048

• IG (S, outlook) = 0.247; IG(S, temp.) = 0.029 ; IG(S,humidity) = 0.152; IG(S,windy) = 0.048;
• Vậy chọn đặc trưng outlook là nốt chia đầu tiên (nốt gốc)
Outlook

Sunny rainy
overcast

• E(S) = E(outlook = sunny) = 0.971

• E(humidity = high) = -3/3*log(3/3) =0


• E(humidity = normal) = -2/2*log(2/2) = 0
• IG(outlook = sunny, humidity) = 0.971-0 = 0.971

• E(temp. =hot) = -2/2*log(2/2) = 0


• E(temp. = mild) = -1/2*log(1/2) – ½*log(1/2) = 1
• E(temp. = cool) = -1/1*log(1/1) = 0;
• E(temp.) = 2/5 * 0 + 2/5*1+1/5 * 0 = 0.4
• IG(outlook = sunny, temp.) = E(outlook = sunny) - E(temp.) = 0.971-0.4 = 0.571
• E(windy = false) = -2/3 *log (2/3) -1/3 *log(1/3) =0.918
• E(windy =true) = -1/2*log (1/2) -1/2*log(1/2) = 1
• E (windy) = 3/5 * 0.918 +2/5 *1 = 0.951
• IG (outlook= sunny, windy) =E(outlook = sunny) – E(windy) = 0.971- 0.951 = 0.02

• IG(outlook = sunny, humidity) = 0.971 Outlook

• IG(outlook = sunny, temp.) = 0.571


Sunny overcast rainy
• IG (outlook= sunny, windy) = 0.02

Humidity

high normal
• no yes
Outlook

Sunny overcast rainy

Humidity yes windy

high true false


normal

no yes no yes
Gain Ratio and Intrinsic Information
• C4.5 Dùng gain ratio để chọn ra đặc trưng tốt nhất
• Intrinsic information: sự phân bố của các mẫu vào các nhánh
|S | |S |
IntrinsicInfo(S , A)  − i log i .
|S| 2 |S |
• Gain ratio (Quinlan’86) :
GainRatio(S, A) = Gain(S, A) .
IntrinsicInfo(S, A)

37
Gain Ratios cho các đặc trưng
Intrinsic infor (S, outlook)= 5/14 * log (5/14) + 4/14 *log (4/14)+ 5/14 *log(5/14) = 1.577

Outlook Temperature

Info: 0.693 Info: 0.911

Gain: 0.940-0.693 0.247 Gain: 0.940-0.911 0.029

Split info: info([5,4,5]) 1.577 Split info: info([4,6,4]) 1.362

Gain ratio: 0.247/1.577 0.156 Gain ratio: 0.029/1.362 0.021

Humidity Windy

Info: 0.788 Info: 0.892

Gain: 0.940-0.788 0.152 Gain: 0.940-0.892 0.048

Split info: info([7,7]) 1.000 Split info: info([8,6]) 0.985

Gain ratio: 0.152/1 0.152 Gain ratio: 0.048/0.985 0.049

38
Outlook Outlook

Sunny rainy
Sunny rainy overcast
overcast
Humidity yes windy
Temp. yes Temp.
high true
normal false
hot mild cool mild cool
no yes no yes
no humidity yes humidity windy
high normal high normal true false

no yes windy yes no yes

true false
no yes

Ngay 15: Thời tiết = {Outlook = rainy, Temp = hot, Humidity = high, Windy = false} Play = YES or NO ???
Ngày 16: Thời tiết = {rainy, mild, normal, true} Play = YES or NO ???
• Mộ số vấn đề khi xây dựng cây:
• - Cây quá lớn (quá nhiều nhánh)
• - Phụ thuộc vào dữ liệu training khi xây dựng mô hình
• - Overfitting
Weather Data with ID code
ID Outlook Temperature Humidity Windy Play?
A sunny hot high false No
B sunny hot high true No
C overcast hot high false Yes
D rain mild high false Yes
E rain cool normal false Yes
F rain cool normal true No
G overcast cool normal true Yes
H sunny mild high false No
I sunny cool normal false Yes
J rain mild normal false Yes
K sunny mild normal true Yes
L overcast mild high true Yes
M overcast hot normal false Yes
N rain mild high true No

41
Chia cho thuộc tính ID

Entropy of split = 0; mỗi lá là một trường hợp cụ thể và là pure


ID code sẽ có giá trị IG cao nhất

Overfitting : FAIL
42
Kết luận:
• Được sử dụng rộng rãi trong lĩnh vực khai thác dữ liệu
• Được phát triển trong các mô hình thống kê và học máy
• Được sử dụng để xây dựng các mô hình phân lớp, dự báo và hồi quy

• Điểm mạnh:
• Dễ hiểu, dễ giải thích, dễ minh họa.
• Dùng cho cả dữ liệu: Category, và dạng số
• Không có tham số

• Điểm yếu:
• Overfitting
• High variance
• Low bias

You might also like