300 likes | 1.27k Views
Thuật Toán Cây Quyết Định C4.5. Sinh viên : Lưu Công Tố Người hướng dẫn : Vũ Tiến Thành. Outline. Thuật toán Cây quyết định Định nghĩa . Xây dựng cây quyết định . Đặc điểm cây quyết định . Thuật toán C4.5 Lịch sử Pseudocode , các công thức và ví dụ .
E N D
ThuậtToánCâyQuyếtĐịnh C4.5 Sinhviên: LưuCôngTố Ngườihướngdẫn: VũTiếnThành
Outline • ThuậttoánCâyquyếtđịnh • Địnhnghĩa. • Xâydựngcâyquyếtđịnh. • Đặcđiểmcâyquyếtđịnh. • Thuậttoán C4.5 • Lịchsử • Pseudocode, cáccôngthứcvàvídụ. • Cơchếchốngquávừadữliệu,chốngthiếudữliệuthuộctính. • Chuyển sang luật • Ứngdụng. • C4.5 và See5/C5.0 • Hướngpháttriển.
Thuật toáncâyquyếtđịnh • Địnhnghĩa: Câyquyếtđịnhlàbiểuđồquyếtđịnhpháttriểncócấutrúcdạngcây: • Gốc: Node trêncùngcây. • Node trong: biểudiễn 1 kiểmtrahoặc 1 thuộctínhđơn • Node lá: biểudiễnlớp. • Nhánh: Kếtquảkiểmtracủa node trên Gốc Node Trong Node Lá Nhánh Node Lá Node Lá
Thuậttoáncâyquyếtđịnh • Xâydựngcâyquyếtđịnhgồm 2 bước: • Pháttriểncâyquyếtđịnh: đitừgốc, đếncácnhánh, pháttriểnquynạptheohìnhthứ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ộctí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 • Cắttỉacây: nhằmđơngiảnhóa, kháiquáthóacây, tăngđộchínhxác
Thuậttoáncâyquyếtđịnh • VD: thuậttoán Hunt sửdụngtrong C4.5, CDP... • S={S1,S2,…,Sn} làtậpdữliệuđàotạo • C={C1,C2,…,Cm} làtậpcáclớp • TH1: Si (i=1…n) thuộcvềCj => Câyquyếtđịnhlà 1 láứngCj. • TH2: S thuộcvềnhiềulớptrong C. • Chọn 1 test trênthuộctínhđơncónhiềugiátrịO={O1,..Ok} (k thườngbằng 2). • Test từgốccủacây, mỗiOitạothành 1 nhánh, chia S thànhcáctập con cógiátrịthuộctính = Oi. Đệquychotừngtập con => câyquyếtđịnhgồmnhiềunhánh, mỗinhánhtươngứngvớiOi.
Thuật toáncâyquyếtđịnh • Điểmmạnhcủacây quyết định: • Sinhracácquytắchiểuđược: chuyểnđổiđược sang tiếngAnhhoặc SQL. • Thựcthitronglĩnhvựchướngquytắc. • Dễdàngtínhtoántrongkhiphânlớp. • Xửlývớithuộctínhliêntụcvàrờirạc. • Thểhiệnrõràngnhữngthuộctínhtốtnhất: phân chia dữliệutừgốc. • Điểmyếucủacây quyết định: • Dễxảyralỗikhicónhiềulớp: do chỉthaotácvớicáclớpcógiátrịdạngnhịphân. • Chi phí tính toán đắt để học: do phảiđi qua nhiều node đểđến node lácuốicùng
Thuậttoán C4.5 • Làsựpháttriểntừ CLS và ID3. • ID3 (Quinlan, 1979)- 1 hệ thống đơn giản ban đầu chứa khoảng 600 dòng lệnh Pascal • Năm 1993, J. Ross Quinlan pháttriểnthành C4.5 với 9000 dònglệnhC. • Hiệntại: phiênbản See5/C5.0. • Tưtưởngthuậttoán: Hunt, chiếnlượcpháttriểntheođộsâu.
Thuậttoán C4.5 • Pseudocode: • Kiểmtra case cơbản • Vớimỗithuộctính A tìmthông tin nhờviệctáchthuộctính A • Chọna_bestlàthuộctínhmàđộđolựachọnthuộctính “tốtnhất” • Dùnga_bestlàmthuộctínhcho node chia cắtcây. • Đệquytrêncácdanhsáchphụđượctạorabởiviệcphân chia theoa_best, vàthêmcác node nàynhưlà con củanode (1) ComputerClassFrequency(T); (2) if OneClass or FewCases return a leaf; Create a decision node N; (3) ForEach Attribute A ComputeGain(A); (4) N.test=AttributeWithBestGain; (5) if (N.testis continuous) find Threshold; (6) ForEach T' in the splitting of T (7) If ( T' is Empty ) Child of N is a leaf else (8) Child of N=FormTree(T'); (9) ComputeErrorsof N; return N
Thuậttoán C4.5 • Độ đo lựa chọn thuộc tính “tốt nhất”: information gain vàgain ratio • Tầnsuấtcác case SjthuộcvềgiátrịphânlớpCj • Chỉsốthông tin cầnthiếtchosựphânlớp: I(S) S={S1,S2,…,Sx)
Thuậttoán C4.5 • Độ đo lựa chọn thuộc tính “tốt nhất”: • Information gain: Test B chia S={S1,S2,…,St) Test B sẽ được chọn nếu có G(S, B) đạt giá trị lớn nhất. • Thôngtin tiềm năng (potentialinformation) củabảnthânmỗiphânhoạch: • Gain ratio = G(S, B) / P(S, B) lớnnhất => chọn test B
Thuậttoán C4.5 • Vídụ: • s1 (yes) 9 case,s2 (no) 5 case • I(S) = I(s1,s2) = I(9, 5) = 0.940 • A = age =>S={S1,S2,S3} • S1 (age<30), S2(30-40), S3 (>30). • I (S1): s11(yes &<30) =2, s22(no&<30) =3 • I (S1) = (s11,s21) =0,971 • Gain (S, age) = =I(s1,s2) – Σ|Si| / |S|* I(Si) = 0.246 • A = income: Gain (S, A) = 0.029 • A = student: Gain (S, A) = 0.151 • A = credit_rating: Gain (S, A) = 0.048 • A= age có Gain lớnnhất =>chọnlàmthuộctínhpháttriểntại node đangxét
Thuậttoán C4.5 • Xửlý “quávừa” dữliệu: • Cho phépcâyquávừadữliệu, sauđócắttỉacây. • Xửlýnhữnggiátrịthiếu: • Là case cóthuộctínhkhôngcógiátrị. • information gain vàpotentialinformation: S0 = case thuộc S cógiátrịthuộctính = null. • Nếutest B được chọn, C4.5 phân chia các case trong S0 về các tập con Si
Thuậttoán C4.5 • Chuyểnđổi sang luật: cắttỉacây • Dạngluật: if A and B and C… then class X. Khôngthỏamãnđiềukiệnchuyểnvềlớpmặcđịnh. • Xâydựngluật: 4 bước • Mỗiđườngđitừgốcđếnlálàmộtluậtmẫu. Đơngiảnluậtmẫubằngcáchbỏdầnđiềukiệnmàkhôngảnhhưởngtớiđộchínhxáccủaluật. • Các luật đã cắt tỉa được nhóm lại theo giá trị phân lớptạoracáctập con.Vớimỗitập con, xemxétđểlựachọnluậtđểtối ưu hóa độ chính xácdự đoán của lớp gắn với tập luật đó. • Sắpxếpcáctậpluậttrêntheotầnsốlỗi. Lớp mặc định đượctạo ra bằng cách xác định các case trong tậpS không chứa trong các luật hiện tạivà chọn lớp phổ biến nhất trong các case đó làm lớp mặc định. • Ướclượngđánhgiá: cácluậtđượcướclượngtrêntoàntập S, loạibỏluậtlàmgiảmđộchínhxáccủasựphânlớp. • Hoànthành: 1 tậpcácquytắcđơngiảnđượclựachọnchomỗilớp
Thuậttoán C4.5 • Đặcđiểm C4.5: • Chiếmthờigiansửdụng CPU vàbộnhớlớn: • vdvới 10k tới 100k case, tạocâyquyếtđịnhtăngtừ 1,4s lên 61s, tạoluậttăngtừ 32s lên 9,715s. • Sửdụngcơchếlưudữliệuthườngtrútrongbộnhớ => ứngdụngvới database nhỏ ( tầnsốlỗilặplại 4% với database 20000 cases). • Cócơchếxửlýthiếu, lỗihoặcquávừadữliệu. • Luậttạorađơngiản.
Thuậttoán C4.5 • Ứngdụngvàobàitoánphânlớpdữliệu: • Bước 1 (Học): xâydựngmôhìnhmôtảtậpdữliệu; kháiniệmđãbiết • Input: tậpdữliệucócấutrúcđượctạomôtảbằngcácthuộctính • Output: CácluậtIf…Then • Bước 2 (Phânloại): dựatrênmôhìnhđãxâydựngđểphânlớpdữliệumới: đitừgốcđếncácnútlánhắmrútralớpcủađốitượngcầnxét.
Thuậttoán C4.5 • Ứngdụngvàobàitoánphânlớpdữliệu: • Xửlývớidữliệuthuộctínhliêntục: • Sửdụngkiểmtradạngnhịphân: value(V) < h với h làhằngsốngưỡng (threshold) • h đượctìmbằngcách: • Quick sort sắp xếp các case trong S theo các giá trị của thuộc tínhliên tục V đang xét =>V = {v1, v2, …, vm} • hi = (vi + v(i+1))/2. Test phân chia dữliệu:V <= hi hay V>hi => chia V thành V1={v1,v2,…, vi} và V2 = {vi+1, vi+2, …, vm} vàcó hi (i=1…m-1) • Tính Information gain hay Gain ratio với từng hi. Ngưỡngcó giá trị của Information gain hay Gain ratio lớn nhất sẽ được chọnlàm ngưỡng phân chia của thuộc tính đó.
C4.5 và C5.0 • Luật: C5.0 chínhxáchơn, nhanhhơn, tốnítbộnhớhơn. • Câyquyếtđịnh: nhanhhơn, nhỏhơn Blue: C5.0
C4.5 và C5.0 • Boost: tạovàkếthợpnhiềulớpphânloạităngchínhxácdựđoán • Kiểudữliệumới: vdngày,tháng Blue: C5.0
Hướngnghiêncứu • Câyổnđịnh: • Tầnsốlỗicủacâyđượcxâydựngtừ data case đượccấutrúcthấphơnnhiều so với data case khôngnhìnthấyđược. • VD: với 20k case đượccấutrúc, tỉlệlỗilà 4%, • Cũng 20k case vàcó 1 case khôngđượckiểmtra, tỉlệlỗi 11,7% • Yêucầuđặtra: xâydựngcâymàtỉlệlỗilàxấpxỉnhauchocả 2 trườnghợp. • Phânlycâyphứctạp: • Cóthể chia cắtcâyphứctạpthànhcáccâynhỏ, đơngiảnmàkếtquảkhôngđổi ?
Tàiliệuthamkhảo • NguyễnThịThùyLinh (2005). Thuậttoánphânlớpcâyquyếtđịnh, Khóaluậntốtnghiệpđạihọc, TrườngĐạihọcCôngnghệ, 2005. • [WKQ08] Xindong Wu, Vipin Kumar, J. Ross Quinlan, JoydeepGhosh, Qiang Yang, Hiroshi Motoda, Geoffrey J. McLachlan, Angus Ng, Bing Liu, Philip S. Yu , Zhi-Hua Zhou, Michael Steinbach, David J. Hand, Dan Steinberg (2008). Top 10 algorithms in data mining, KnowlInfSyst (2008) 14:1–37 • http://rulequest.com/see5-comparison.html • http://en.wikipedia.org/wiki/ID3_algorithm • http://en.wikipedia.org/wiki/C4.5_algorithm • http://en.wikipedia.org/wiki/Decision_tree
Cảmơnthầy, anhchịvàcácbạn đãtheodõi!