1.2 .Các bước trong phát hiện tri thức
2.4. Thuật toán C4.5
2.4.1. Tổng quan
Thuật toán C4.5 (thuật toán cải tiến của ID3) là một thuật toán phân lớp tạo ra cây quyết địnhđược phát triển bởi J. Ross Quinlan. Cây quyết định được tạora bởi thuật tốn C4.5 có đặc điểm đơn giản, dễ sử dụng, dễ hiểu bởi các luật tạo ra ở nút lá của cây có thể biểu diễn dưới dạng câu lệnh If - Then.
2.4.2. Đoạn giả mã
1. Function C45_builder(tập_A, tập_thuộc_tính)
2. {
3. if(mọi record trong tập_A đều nằm trong cùng một lớp)
4. {
5. return một nút lá được gán nhãn bởi lớpđó
6. }
7. else
8. {
9. if(tập_thuộc_tính là rỗng)
10. {
11. return nút lá được gán nhãn bởi tuyển của tất cảcáclớp
trongtập_A;
12. }
13. else
14. {
15. Chọn một thuộc tính P, lấy nó làm gốc cho cây hiện
tại;
16. Xóa P ra khỏitập_thuộc_tính;
17. For each (giá trị V củaP)
18. {
20. Đặt vào phân_vùng V các ví dụ trong tập_A có giá trị V tại thuộc tínhP;
21. Gọi C45_builder(phân_vùngV, tập_thuộc_tính), gắn kết quả vào nhánhV;
21. }
22. }
23. }
24. }
2.4.3.Thuật toán C4.5 dùng Gain- Entropy
Cây được tạo ra sau khi huấn luyện có kích thước càng nhỏ thì độ chính xác càng cao và càng dễ hiểu nên thuật toán C4.5dựa vào độ đo để lựa chọn thuộc tínhtốt nhất. Hai độ đo được sử dụng trong C4.5 là informationGain (chỉ số độ lợi thông tin) và GainRatio (tỉ lệ độ lợi thông tin).
S: Tập huấn luyện
Si: Lớp của tập các lớp Ci(i=1,…,m) aj: Giá trịthuộc tính A(j=1,…,v)
Chỉ số thông tin (Information) cho sự phân lớp:
𝐼𝑛𝑓𝑜(𝑆1, 𝑆2, … , 𝑆𝑚) = − ∑ 𝑆𝑖 𝑆 𝑚 𝑖=1 𝑙𝑜𝑔2𝑆𝑖 𝑆
Chỉ số thông tin mong muốn (Entropy) cho sự phân lớp:
Giả sử thuộc tính A được chọn để huấn luyện, A={S’1,S’2,…,S’3}khi đó chỉ số thơng tin mong muốn của A được tính theo cơng thức nhưsau:
𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝐴) = ∑ 𝑆 ′ 𝑗 𝑆 𝑣 𝑗=1 (− ∑ 𝑆 ′ 𝑖𝑗 𝑆′𝑗 𝑙𝑜𝑔2 𝑆′𝑖𝑗 𝑆′𝑗 𝑚 𝑖=1 )
Trong đó S’ij là các trường hợp phân lớp củaS’
Chỉ số độ lợi thông tin cho phân lớp:
Chỉ số độ lợi thơng tin có được bởi việc phân nhánh trên thuộc tính A được tính như sau:
Gain(A)=Info(S1,S2,…,Sm)−Entropy(A)
Thuộc tính có độ lợi thơng tin lớn nhất được chọn làm tiêu chí phân chia.
𝑆𝑝𝑙𝑖𝑡𝐼𝑛𝑓𝑜(𝐴) = − ∑ 𝑆 ′ 𝑗 𝑆 𝑙𝑜𝑔2 𝑆′𝑗 𝑆 𝑣 𝑗=1 𝐺𝑎𝑖𝑛𝑅𝑎𝑡𝑖𝑜 = 𝐺𝑎𝑖𝑛(𝐴) 𝑆𝑝𝑙𝑖𝑡𝐼𝑛𝑓𝑜(𝐴)
2.4.4. Mơ tả cách tính độ lợi thơng tin
Ví dụ về thuật tốn C4.5: Quy hoạch cán bộ
Qua xem xét và phân tích ta thấy cần chú trọng các thông tin sau đây:
+ Tuổi (Tuoi): Có 2 độ tuổi được xem xét kỹ theo tiêu chí quy hoạch cán bộ là: Trên 40 tuổi và dưới 40 tuổi.
+ Trình độ chun mơn (TrinhDoCM): Là trình độ được đào tạo của các nhân sự đê xem xét đưa vào quy hoạch. Có 3 loại trình độ: Đại học chính quy (ĐHCQ), Vừa làm vừa học (VLVH) và Khơng (Khong) là những người có bằng cấp dưới đại học.
+ Trình độ lý luận chính trị (LLChinhTri) của nhân sự được chia thành 3 dạng như sau: Cao cấp lý luận chính trị hoặc cử nhân chính trị (CaoCap), hoặc Cao cấp lý luận chính trị khơng tập trung (CCkhongTT), hoặc những người chưa có cao cấp lý luận chính trị là khơng (Khong).
+ Trình độ Ngoại ngữ (NgoaiNgu): Những người có chứng chỉ ngoại ngữ B trở lên (Yes) và chưa có chứng chỉ B trở xuống (No).
Các yếu tố trên chính là tập thuộc tính mà dựa vào tập thuộc tính này để dự đốn thuộc tính Quy hoạch (QuyHoach).
Từ những phân tích trên ta có tập huấn luyện mẫu như sau:
Bảng 2.2: Bảng dữ liệu huấn luyện
TT Tuoi TrinhDoCM LLChinhTri NgoaiNgu QuyHoach
1 <40 ĐHCQ CCkhongTT Yes Yes
2 >=40 ĐHCQ CCkhongTT Yes Yes
3 <40 ĐHCQ CCkhongTT No No
4 >=40 ĐHCQ CCkhongTT No No
5 <40 VLVH CCkhongTT Yes No
6 >=40 VLVH CCkhongTT Yes Yes
8 >=40 VLVH CCkhongTT No No
9 >=40 Khong CCkhongTT Yes No
10 <40 ĐHCQ CaoCap Yes Yes
11 >=40 ĐHCQ CaoCap Yes Yes
12 <40 ĐHCQ CaoCap No No
13 >=40 ĐHCQ CaoCap No No
14 <40 VLVH CaoCap Yes Yes
15 >=40 VLVH CaoCap Yes Yes
16 <40 VLVH CaoCap No No
17 >=40 VLVH CaoCap No No
18 >=40 Khong CaoCap Yes No
19 <40 ĐHCQ Khong Yes No 20 >=40 ĐHCQ Khong Yes No 21 <40 ĐHCQ Khong No No 22 >=40 ĐHCQ Khong No No 23 <40 VLVH Khong Yes No 24 >=40 VLVH Khong Yes No 25 <40 VLVH Khong No No 26 >=40 VLVH Khong No No
Từ ví dụ trên, áp dụng thuật toán C4.5 dùng tập dữ liệu huấn luyện để xây dựng cây quyết định cho bài toán xây dựng quy hoạch cán bộ.
Để xây dựng cây quyết định ta phải xác định nút gốc để phân tách cây. Thuộc tính có đội lợi thơng tin lớn nhất sẽ được chọn làm nút gốc.
Gọi S là tập thuộc tính đích. Có 26 mẫu và trong đó: Yes = 7; No = 19
Áp dụng công thức tính Entropy ta có:
Entropy(S) = - (7/26). log2 (7/26) - (19/26). log2(19/26)= 0.84
Thuộc tính "Tuoi" có 2 giá trị là: >=40, <40 + Với "Tuoi"= "<40":
Info([3,9]) = - (3/12). log2 (3/12) - (9/12). log2(9/12)= 0.81
+ Với "Tuoi"= ">=40":
Entropy của S đối với thuộc tính "Tuoi":
Entropy(S,Tuoi) = (12/26) * 0.81 + (14/26) *0.86 = 0.84
Độ lợi thông tin tương ứng là:
Gain(S,Tuoi) = Entropy(S) - Entropy(S,Tuoi) = 0.84 - 0.84 = 0
Tỷ suất lợi ích Gain Ratio là:
+ SplitInfo(S,Tuoi) =-(12/26).log2 (12/26) - (14/26).log2 (14/26) = 1 + GainRatio(S,Tuoi) = Gain(S,Tuoi) / SplitInfo(S,Tuoi)= 0/1 = 0
Bằng cách tương tự ta tính được Entropy, độ lợi thơng tin Gain và tỷ suất lợi ích của các thuộc tính cịn lại như sau:
* Thuộc tính "TrinhDoCM" có 3 giá trị là: ĐHCQ, VLVH, Khong
Bảng 2.3: Bảng dữ liệu thuộc tính TrinhDoCM
TrinhDoCM Số lượng
QuyHoach
Info Entropy Gain GainRatio Yes No ĐHCQ 12 4 8 0.67 0.69 0.15 0.15/1.31 = 0.11 VLVH 12 3 9 0.82 Khong 2 0 2 0
* Thuộc tính "LLChinhTri " có 3 thuộc tính: CaoCap, CCkhongTT, Khong
Bảng 2.4: Bảng dữ liệu thuộc tính LLChinhTri
LLChinhTri Số lượng
QuyHoach
Info Entropy Gain GainRatio Yes No CaoCap 9 4 5 0.97 0.64 0.2 0.2/1.59 = 0.13 CCkhongTT 9 3 6 0.89 Khong 7 0 6 0
* Thuộc tính "NgoaiNgu " có 2 giá trị là: Yes và No
Bảng 2.5: Bảng dữ liệu thuộc tính NgoaiNgu
NgoaiNgu Số lượng
QuyHoach
Info Entropy Gain GainRatio Yes No
Yes 14 7 7 1.00
0.54 0.3 0.3/1 =
0.3
Ta nhận thấy rằng GainRatio(S,NgoaiNgu) = 0.3 là lớn nhất nên thuộc tính
NgoaiNgu có khả năng phân loại tốt nhất.
Ứng với NgoaiNgu= Nocó Entropy = 0 nên tại nhánh này sẽ là nút có phân lớp là No.
Ứng với NgoaiNgu= Yes ta có bảng dữ liệu sau:
Bảng 2.6: Bảng dữ liệu thuộc tính NgoaiNgu = yes
TT Tuoi TrinhDoCM LLChinhTri NgoaiNgu QuyHoach
1 <40 ĐHCQ CCkhongTT Yes Yes
2 >=40 ĐHCQ CCkhongTT Yes Yes
3 <40 VLVH CCkhongTT Yes No
4 >=40 VLVH CCkhongTT Yes Yes
5 >=40 Khong CCkhongTT Yes No
6 <40 ĐHCQ CaoCap Yes Yes
7 >=40 ĐHCQ CaoCap Yes Yes
8 <40 VLVH CaoCap Yes Yes
9 >=40 VLVH CaoCap Yes Yes
10 >=40 Khong CaoCap Yes No
11 <40 ĐHCQ Khong Yes No
12 >=40 ĐHCQ Khong Yes No
13 <40 VLVH Khong Yes No
14 >=40 VLVH Khong Yes No
Ta có nút gốc như sau:
Hình2.3: Nút gốc của cây quyết định
Gọi S1 là tập thuộc tính đích. Có 14 mẫu, trong đó: "QuyHoach" = Yes = 7; "QuyHoach" = No = 7
NgoaiNgu
"Yes" "No"
Áp dụng cơng thức tính Entropy cho S1như sau:
Entropy(S1) = - (7/14). log2 (7/14) - (7/14). log2(7/14)= 1
Tiếp theo ta tínhGain, SplitInfo và GainRatio của các thuộc tính cịn lại như sau:
Bảng 2.7: Bảng dữ liệu so sánh về GainRatio
Thuộc tính Gain SplitInfo GainRatio
Tuoi 0 0.99 0
TrinhDoCM 0.18 1.45 0.12
LLChinhTri 0.40 1.58 0.25
Từ kết quả trên ta thấy GainRatio (S1,LLChinhTri) = 0.25 là lớn nhất nên chọn thuộc tính LLChinhTri làm nhánh phân tách cây.
Với NgoaiNgu = Yes Ta có nhánh cây như sau:
Hình 2.4: Cây quyết định với nhánh NgoaiNgu = Yes
Với "LLChinhTri" = "Khong" có Entropy = 0 dó đó tại nút này sẽ là nút lá với phân lớp là No.
Tương tự như vậy đối với các thuộc tính cịn lại. Ta có cây hồn chỉnh như sau:
LLChinhTri Yes Yes "Khong" "CCkhongTT" "CaoCap" No
Hình 2.5: Cây quyết định hoàn chỉnh
2.4.4. Tạo luật từ cây quyết định trên
Từ cây quyết định trên ta rút ra được một số luật sau:
Luật 1:If (NgoaiNgu = No) then QuyHoach = No
NgoaiNgu "Yes" "No" No LLChinhTri "Khong" "CCkhongTT" "CaoCap" No TrinhDoCM Yes No Tuoi "Khong" "VLVH" "ĐHCQ" No ">=40" "<40" Yes "ĐHCQ" TrinhDoCM "Khong" "VLVH" No Yes Yes
Luật 2:If(NgoaiNgu = Yes) and (LLChinhTri = Khong)then QuyHoach = No Luật 3:If (NgoaiNgu = Yes) and if (LLChinhTri = CaoCap) and (TrinhDoCM = Khong) then QuyHoach= No.
Luật 4:If (NgoaiNgu = Yes) and if (LLChinhTri = CaoCap) and (TrinhDoCM = ĐHCQ) then QuyHoach= Yes.
Luật 5:If (NgoaiNgu = Yes) and if (LLChinhTri = CaoCap) and (TrinhDoCM = VLVH) then QuyHoach= yes
Luật 6:If (NgoaiNgu = Yes) and if (LLChinhTri = CCKhongTT) and (TrinhDoCM = VLVH) and (Tuoi = >=40) then QuyHoach= Yes
Luật 7:If (NgoaiNgu = Yes) and(TrinhDoCM = VLVH) and (Tuoi = >=40) and (LLChinhTri = CCKhongTT) and (Tuoi = <40) then QuyHoach= No.
Từ việc phân tích các dữ liệu ban đầu, luận văn đã xây dựng được cây quyết định từ thuật tốn C4.5. Cây quyết định này có khả năng phân loại đúng đắn các mẫu trong tập dữ liệu đã cho. Từ đó, thấy rằng đây là một cơng cụ biểu diễn rất trực quan phù hợp trong việc phân tích các dữ liệu mà dựa trên tập luật này ta đi giải quyết được bài toán của luận văn đặt ra.
Tập luật rút ra được từ cây quyết định trên gồm 7 luật đơn giản, dễ hiểu và dễ sử dụng. Luận văn sẽ ứng dụng thuật toán này để giải quyết vấn đề về việc hỗ trợ học sinh chọn ngành học trước khi bước vào Trường Đại học Phạm Văn Đồng.
2.4.5. Nhận xét:
- Ưu điểm:
+ Thuật tốnC4.5 có cơ chế sinh cây quyết định hiệu quả và chặt chẽ bằng việc sử dụng độ đo lựa chọn thuộc tính tốt nhất là information-gain. Các cơ chế xử lý với giá trị lỗi, thiếu và chống “quá vừa” dữ liệu của C4.5 cùng với cơ chế cắt tỉa cây đã tạo nên sức mạnh của C4.5.
+ Mơ hình phân lớp C4.5 cịn có phần chuyển đổi từ cây quyết định sang luật dạng if-then, làm tăng độ chính xác và tính dễ hiểu của kết quả phân lớp.
+ Xử lý được các thuộc tính có giá trị thiếu.
+ Cho phép cây quá vừa dữ liệu sau đó cắt tỉa cây.
+ C4.5 có thể làm việc với cả dữ liệu liên tục và rời rạc. Bằng cách xác định phạm vi hoặc các ngưỡng cho dữ liệu liên tục nhờ vậy dữ liệu liên tục được chuyển sang dạng rời rạc.
- Nhược điểm:
+ Thuật toán C4.5là thuật toán phân lớp dữ liệu sử dụng cơ chế lưu trữ thường trú trong bộ nhớ nên hiệu quả và phổ biến trong những ứng dụng khai phá cơ sở dữ liệu có kích thước nhỏ.
+ Dễ hiểu với những thuộc tính có có ít giá trị và khó hiểu hơn với những thuộc tính có nhiều giá trị.