II.2 MÔ HÌNH CÂY QUYẾT ĐỊNH
2. Một số thuật toán
Với tiêu chí xây dựng cây quyết định ngày càng đơn giản, cho độ chính xác phân lớp cao, chi phí thấp, có khả năng mở rộng,… thì có rất nhiều tác giả đã cho ra đời các thuật toán ngày càng tối ƣu hơn. Một số thuật toán tiêu biểu sau:
Algorithms References
CART(Classification And Regression Tree) Breiman et al.(1984) ID3(Interactive Dichotomizer 3) Quinlan(1986)
C4.5 Quinlan(1993)
CHAID (CHi-squared Automatic Interaction Detecor) Kass(1980)
QUEST LohandShih(1997)
CAL5 Muller and Wysotzki(1994)
FACT Loh and Vanichsetakul(1988)
LMDT Brodley and Utgoff(1995)
T1 Holte(1993)
PUBLIC Rastogi and Shim(2000)
MARS Friedman(1991)
SLIQ (Supervised Learning in Quest) Mehta(1996)
SPRINT(A Scalable Parallel Classifier for DataMining) Shafer, Agrawal, Mehta
…. ….
Bảng 3.8: Một số thuật toán xây dựng cây quyết định
Trong phạm vi đồ án môn học này chúng tôi xin trình bày cụ thể 4 thuật toán gồm thuật toán CLS, ID3, C4.5, SPRINT.
2.1. Thuật toán ID3
Thuật toán ID3 đƣợc phát biểu bởi tác giả Quinlan (trƣờng đại học Syney, Australia) và đƣợc công bố vào cuối thập niên 70 của thế kỷ 20. Sau đó, thuật toán này đƣợc giới thiệu và trình bày trong mục Induction on decision trees, machine learning năm 1986. ID3 đƣợc xem nhƣ là một cải tiến của CLS với khả năng lựa chọn thuộc tính tốt nhất để tiếp tục triển khai cây tại mỗi bƣớc. ID3 xây dựng cây quyết định từ trên- xuống (top -down). ID3 sử dụng độ đo
Information Gain (trình bày ở 2.1.1.1)để đo tính hiệu quả của các thuộc tính
phân lớp.Trong quá trình xây dựng cây quyết định theo thuật toán ID3 tại mỗi bƣớc phát triển cây, thuộc tính đƣợc chọn để triển khai là thuộc tính có giá trị Gain lớn nhất.Hàm xây dựng cây quyết định trong thuật toán ID3 [2]
Function induce_tree(tập_ví_dụ, tập_thuộc_tính)
begin
return một nút lá đƣợc gán nhãn bởi lớp đó
else if tập_thuộc_tính là rỗng then
return nút lá đƣợc gán nhãn bởi tuyển của tất cả các lớp trong
tập_ví_dụ
else begin
chọn một thuộc tính P, lấy nó làm gốc cho cây hiện tại; xóa P ra khỏi tập_thuộc_tính;
với mỗi giá trị V của P
begin
tạo một nhánh của cây gán nhãn V;
Đặt vào phân_vùng V các ví dụ trong tập_ví_dụ có giá trị V tại thuộc tính P; Gọi induce_tree(phân_vùng V, tập_thuộc_tính), gắn kết quả vào nhánh V end end end
Xét ví dụ 3.1 cho thuật toán ID3:
- Gọi tập huấn luyện là S, số mẫu thuộc lớp Có ký hiệu là (+) và số mẫu thuộc lớp Không ký hiệu là (-), ta có S[9+,5-] tức tập huấn luyện S có 14 mẫu trong đó có 9 mẫu thuộc lớp Có và 5 mẫu thuộc lớp Không.
- Để xác định thuộc tính phân lớp ta cần tính Information Gain cho từng thuộc tính của mẫu huấn luyện:
o Thuộc tính Quang Cảnh
Value(QC)={Nắng, Mƣa, Âm u}
Gọi SNắng là tập các mẫu có QC=Nắng ta có SNắng=[2+,3-] Tƣơng tự ta có SMƣa=[3+,2-], SÂm u=[4+,0-]
Tƣ tƣợng đối với các thuộc tínhNhiệt độ, Độ ẩm, Gió ta có Gain tƣơng ứng nhƣ sau:
- Gain(S,ND)= 0.029
- Gain(S,DA)= 0.151
- Gain(S,G)= 0.048
Chọn Quang cảnh làm thuộc tính phân lớp vì có Gain lớn nhất
- Vẽ cây quyết định: Quang Cảnh Có [D1, D2, D8, D9, D11] [D3, D7, D12, D13] [D4, D5, D6, D10, D14] ??? ??? S Nắng[2+,3-] S Âm u[4+,0-] S Mưa[3+,2-] Nắng Mƣa Âm u
Do Quang cảnh=Nắng và Quang cảnh=Mƣa chƣa xác định đƣợc thuộc tính phân lớp nên ta chia tập huấn liệu thành 2 bảng nhƣ hình trên và tiếp tục tìm thuộc tính phân lớp cho 2 bảng mẫu huấn luyện. Kết quả cuối cùng ta có cây quyết định sau:
Từ cây quyết định trên tạo ra các luật:
– R1: IF QC=Âm u THEN Chơi Tennis=Có.
– R2: IF QC=Nắng AND Độ ẩm=TB THEN Chơi Tennis=Có.
– R3: IF QC=Nắng AND Độ ẩm=Cao THEN Chơi Tennis=Không.
– R4: IF QC=Mƣa AND Gió=Nhẹ THEN Chơi Tennis=Có
– R5: IF QC=Mƣa AND Gió=Mạnh THEN Chơi Tennis=Không
Nhận xét: Với việc tính toán giá trị 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 còn các vấn đề chƣa đƣợc giải quyết nhƣ sau:
o Vấn đề overfitting(sẽ trình bày kỹ ở mục 4)
o Độ đo Information Gain chƣa thật sự tốt vì còn thiên về các thuộc tính có nhiều giá trị.
o Xử lý các thuộc tính có kiểu giá trị liên tục (ví dụ nhƣ kiểu số thực) Quang Cảnh Có [D1, D2, D8, D9, D11] [D3, D7, D12, [D4, D5, D6, D10, D14] D13] S Nắng[2+,3-] S Âm u[4+,0-] S Mƣa[3+,2-] Nắng Âm u Mƣa Độ ẩm Có không S TB[2+,0-] S cao[0+,3-] Gió Có không S Nhẹ[3+,0-] S Mạnh[0+,2-] Mạnh Nhẹ Cao TB
o Xử lý các bộ họcthiếu giáthuộc tính (missing-value attributes)
o Xử lý các thuộc tính có chi phí (cost) khác nhau
Vấn đề này sẽ đƣợc giải quyết trong thuật toán C4.5 sau đây.
2.2. Thuật toán C4.5
Thuật toán C4.5 cũngđƣợc tác giả Quinlan phát triển và công bố vào năm 1996. Thuật toán này là một thuật toán đƣợc cải tiến từ thuật toán ID3 và giải quyết hầu hết các vấn đề mà ID3 chƣa giải quyết nhƣ đã nêu trên. Nó thực hiện phân lớp tập mẫu dữ liệu theo chiến lƣợc ƣu tiên theo chiều sâu (Depth - First).
Thuật toán xây dựng cây quyết định C4.5
Mô tả thuật toán dƣới dạng giả mã nhƣ sau [2]:
Function xay_dung_cay(T) {
<Tính toán tần xuất các giá trị trong các lớp của T>;
If <Kiểm tra các mẫu, nếu thuộc cùng một lớp hoặc có rất ít mẫu khác lớp>Then <Trả về 1 nút lá>
Else <Tạo một nút quyết định N>;
For <Với mỗi thuộc tính A> Do <Tính giá trị Gain(A)>;
<Tại nút N, thực hiện việc kiểm tra để chọn ra thuộc tính có giá
trị Gain tốt nhất (lớn nhất). Gọi N.test là thuộc tính có Gain lớn
nhất>;
If <Nếu N.test là thuộc tính liên tục> Then <Tìm ngƣỡng cho phép tách của N.test>;
For <Với mỗi tập con T` đƣợc tách ra từ tập T> Do ( T` đƣợc tách ra theo quy tắc:
- Nếu N.test là thuộc tính liên tục tách theo ngƣỡng ở bƣớc 5 - Nếu N.test là thuộc tính phân loại rời rạc tách theo các giá
trị của thuộc tính này.
)
{ If <Kiểm tra, nếu T' rỗng>} Then <Gán nút con này của nút N là nút lá>;
Else
<Gán nút con này là nút đƣợc trả về bằng cách gọi đệ qui lại đối với hàm xay_dung_cay(T'), với tập T'>;
}
<Tính toán các lỗi của nút N>; <Trả về nút N>;
2.3. Một số cài tiến của thuật toán C4.5 so với thuật toán ID3 2.3.1. Chọn độ đo Gain Ratio
Thuật toán ID3 sử dụng độ đo Information Gain để tìm thuộc tính phân lớp tốt nhất nhƣng xu hƣớng của Information Gain là ƣu tiên chọn thuộc tính có nhiều giá trị làm thuộc tính phân lớp. Thật vậy, ta xét ví dụ với tập huấn luyện sau:
Outlook Temp Humidity Windy Play
A Hot High Weak No A Hot High Strong No B Hot High Weak Yes E Mild High Weak Yes A Cool Normal Weak Yes B Cool Normal Strong No E Cool Normal Strong Yes A Mild High Weak No D Cool Normal Weak Yes E Mild Normal Weak Yes A Mild Normal Strong Yes B Mild High Strong Yes C Hot Normal Weak Yes D Mild High Strong No Test bằng Tool WEKA ta đƣợc kết quả sau:
Id3
Outlook = A
| Humidity = High: No | Humidity = Normal: Yes Outlook = B
| Temp = Hot: Yes | Temp = Mild: Yes | Temp = Cool: No Outlook = E: Yes Outlook = D
| Temp = Hot: null | Temp = Mild: No | Temp = Cool: Yes Outlook = C: Yes C4.5 Humidity = High | Outlook = A: No (3.0) | Outlook = B: Yes (2.0) | Outlook = E: Yes (1.0) | Outlook = D: No (1.0) | Outlook = C: No (0.0) Humidity = Normal: Yes (7.0/1.0)
T
Rõ ràng Information Gain chọn thuộc tính có nhiều giá trị (Outlook) làm thuộc tính phân lớp. Kết quả cho cây quyết định phức tạp hơn, sinh ra nhiều luật hơn. Trong thuật toán C4.5, tác giả Quinlan đã giải quyết vấn đề này bằng cách sử dụng 1 độ đo khác là Gain Ratio, làm giảm ảnh hƣởng của các thuộc tính có nhiều giá trị.
2.3.2. Xử lý các thuộc tính có kiểu giá trị liên tục
Thuộc tính kiểu giá trị liên tục là:
Ngày Quang Cảnh Nhiệt độ Độ ẩm Gió Chơi Tennis
D1 Nắng 85 85 Nhẹ Không D2 Nắng 80 90 Mạnh Không D3 Âm u 83 78 Nhẹ Có D4 Mƣa 70 96 Nhẹ Có D5 Mƣa 68 80 Nhẹ Có D6 Mƣa 65 70 Mạnh Không D7 Âm u 64 65 Mạnh Có D8 Nắng 72 95 Nhẹ Không D9 Nắng 69 70 Nhẹ Có D10 Mƣa 75 80 Nhẹ Có D11 Nắng 75 70 Mạnh Có D12 Âm u 72 90 Mạnh Có D13 Âm u 81 75 Nhẹ Có D14 Mƣa 71 80 Mạnh Không
Trong thuật toán ID3 không phân biệt thuộc tính kiểu giá trị liên tục và thuộc tính kiểu giá trị rời rạc, mà chỉ xem thuộc tính kiểu giá trị liên tục nhƣ một thuộc tính có nhiều giá trị, và phạm phải khuyết điểm trên là ƣu tiên chọn thuộc tính này làm thuộc tính phân lớp. Giả sử thuộc tính A có các giá trị v1 ,v2 ,…, vN, thuật toán C4.5 đã giải quyết vấn đề này nhƣ sau:
Trƣớc tiên, sắp xếp các giá trị của thuộc tính A tăng dần ví dụ nhƣ từ v1
Chia giá trị của thuộc tính A thành N-1 “ngƣỡng” Tính Information Gain ứng với N-1 “ngƣỡng”.
Chọn “ngƣỡng” có Information Gain cao nhất làm “ngƣỡng” tốt nhất của A, Gain(S,A) là giá trị Gain cao nhất của “ngƣỡng” chọn.
Nhận xét: Việc tìm ngƣỡng theo thuật toán C4.5 rất tốn thời gian để tính
Gain cho N-1 ngƣỡng. Sau có nhiều tác giả đã nghiên cứu để tìm cách tìm ngƣỡng nhanh hơn nhƣ Fayyad(1991), Utgoff, Brodley, Murthy et al.
2.3.3. Làm việc với thuộc tính thiếu giá trị
Thuật toán xây dựng dựa vào giả thuyết tất cả các mẫu dữ liệu có đủ các thuộc tính. Nhƣng trong thực tế, xảy ra hiện tƣợng dữ liệu bị thiếu, tức là ở một số mẫu dữ liệu có những thuộc tính không đƣợc xác định,hoặc mâu thuẫn, hoặc không bình thƣờng. Ta xem xét kỹ hơn với trƣờng hợp dữ liệu bị thiếu. Đơn giản nhất là không đƣa các mẫu với các giá trị bị thiếu vào, nếu làm nhƣ vậy thì có thể dẫn đến tình trạng thiếu các mẫu học. Một số cách khác đƣợc đề xuất ở thuật toán C4.5 nhƣ sau:
Giả sử thuộc tính A là một ứng cử cho thuộc tính kiểm tra ở nút n;
Xử lý thế nào với bộ X thiếu giá trị đối với thuộc tính A(tức là XA là không xác định) ?
Gọi Sn là tập các mẫu học gắn với nút n có giá trị đối với thuộc tính A; – Giải pháp 1: XA là giá trị phổ biến nhất đối với thuộc tính A trong số các bộ thuộc tập Sn;
– Giải pháp 2: XA là giá trị phổ biến nhất đối với thuộc tính A trong số các bộ Sn có cùng phân lớp với X;
– Giải pháp 3:
Tính xác suất pv đối với mỗi giá trị có thể V của thuộc tính A;
Gán phần pv của bộ X đối với nhánh tƣơng ứng của nút n.
Giá trị pv này đƣợc dùng tính Gain và hơn nữa để chia nhỏ nhánh tiếp theo của cây nếu có thuộc tính thứ 2 có lỗi(thiếu giá trị)
Ngày Quang Cảnh Nhiệt độ Độ ẩm Gió Chơi Tennis D1 Nắng Nóng Cao Nhẹ Không D2 Nắng Nóng Cao Mạnh Không D3 Âm u Nóng Cao Nhẹ Có D4 Mƣa Ấm áp Cao Nhẹ Có D5 Mƣa Mát TB ??? Có D6 Mƣa Mát TB Mạnh Không D7 Âm u Mát TB Mạnh Có D8 Nắng Ấm áp Cao Nhẹ Không D9 Nắng Mát TB Nhẹ Có D10 Mƣa Ấm áp TB Nhẹ Có D11 Nắng Ấm áp TB Mạnh Có D12 Âm u Ấm áp Cao Mạnh Có D13 Âm u Nóng TB Nhẹ Có D14 Mƣa Ấm áp Cao Mạnh Không
Tại mẫu huấn luyện D5 có thuộc tính không rõ giá trị là thuộc tính Gió, theo 3 giải pháp trên ta tìm giá trị cho thuộc tính ở mẫu này nhƣ sau:
Giải pháp 1: Xét trên toàn tập S có 13 mẫu, trong đó số mẫu có Gió = Mạnh là 6 và số mẫu có Gió = Nhẹ là 7. Vậy giá trị “Nhẹ” phổ biến hơn nên ta chọn “Nhẹ” điền vào giá trị thiếu ở mẫu D5.
Giải pháp 2: Chỉ xét trên lớp mà mẫu D5 thuộc, đó là lớp “Có”. Số mẫu thuộc lớp “Có” lúc này là 8, trong đó số mẫu có Gió = Mạnh là 3 và số mẫu có Gió = Nhẹ là 5. Vậy giá trị “Nhẹ” phổ biến hơn nên ta chọn “Nhẹ” điền vào giá trị thiếu ở mẫu D5.
Giải pháp 3: Gió có 2 giá trị là “Nhẹ” và “Mạnh”. Tính xác suất ứng với 2 giá trị này:
- P(Gió=Nhẹ )=7/13; - P(Gió=Mạnh )=6/13.
Xác suất của Gió=Nhẹ cao hơn nên ta chọn “Nhẹ” điền vào giá trị thiếu ở mẫu D5.
2.3.4. Xử lý các thuộc tính có giá trị chi phí
Trong việc học để phân lớp các bệnh y tế, Blood Test có chi phí $150 trong khi Temperature Test có chi phí $10, ta nên chọn thuộc tính nào để chi phí trị bệnh là thấp nhất! Theo xu hƣớng học cây quyết định:
Sử dụng càng nhiều các thuộc tính có chi phí thấp càng tốt.
Chỉ sử dụng các thuộc tính có chi phí cao khi cần thiết (để giúp đạt đƣợc các phân loại đáng tin cậy)
Làm sao để học một cây quyết định với chi phí thấp? Vấn đề này đã đƣợc 2 tác giả Tan và Schimmer (1990) giải quyết bằng cách sử dụng các đánh giá khác của Information Gain cho việc xác định thuộc tính phân lớp theo công thức sau:
Đến năm 1991, tác giả Nunez đƣa ra một cách công thức khác:
3. Bộ công cụ xây dựng cây quyết định 3.1. Oracle Data Mining