C4.5 Algoritmasi
- Sevdanur GENC

- Jun 5, 2014
- 3 min read
ID3 algoritmasinin gelistiricisi, ID3 algoritmasi sonucunda siniflandirmalarda bazi eksiklikler ve sorunlar tespit etmistir. Bu sorunlarin giderilmesini C4.5 algoritmasi ile saglamistir. Kokeni tamamen ID3 algoritmasi olan C4.5 algoritmasina gelen ek ozellikler bulunmaktadir.
C4.5 Algoritmasi :
ID3 algoritmasinin gelistiricisi, ID3 algoritmasi sonucunda siniflandirmalarda bazi eksiklikler ve sorunlar tespit etmistir. Bu sorunlarin giderilmesini C4.5 algoritmasi ile saglamistir. Kokeni tamamen ID3 algoritmasi olan C4.5 algoritmasina gelen ek ozellikler; bolunme-dagilma bilgisinin (split-info) edinilmesi, kayip degerleri olan ozelliklerin tespit edilmesi ve sayisal ozellikteki verilerin hesaba direk olarak katilmasi. Adim adim inceleyecek olursak;
1. Split Information - Bolunme dallanma bilgisi : Bir ozniteligin olasiligi ne kadar yuksek olursa bilgi kazancida yuksek olacaktir, bu durum sonucun dogrulunu olumsuz etkileyecektir. Yani, bilgi kazancinin yuksek cikmasinin nedeni ozellik cesitliliginin fazla olmasidir.Bu tarz gereksiz bilgilerin onlenmesi icin bolunme bilgisi kavrami algoritmaya katilmistir. Bu algoritma ile bilgi kazancini azaltarak gereksiz bazi cikarimlar yapilmasi engellenmistir.
2. Ozelliklerin kayip degerlerinin tespit edilmesi : Dataset uzerindeki veriler cesitli sebeplerden dolayi eskik olabilir. ID3 algoritmasi eksik olmayan bir veri kumesini dikkate alir. Eksik olan veriler yuzunden bazi bilgilerin bulunmasinda yanlisliklar cikmaktadir. Bu sebepten, 3 sorunla karsi karsiya kalinmaktadir; bilgi kazanci ve bilgi oranlarinin kayip oldugu veri kumesinin hesabi nasil yapilabilir, karar agaci olusturulurken oznitelik degeri olmayanlar alt dugumlere nasil yayilabilir ve bununla beraberinde test islemleri agacin dallarinda nasil yapilabilir? Tum bunlara cevap bulabilmek icin verilerin oznitelikleri ve bu niteliklere sahip bilgi kazanclari sayesinde cozumlere ulasilabilmektedir.
3. Sayisal Ozellikteki verilerin hesaba direkt katilmasi : Veri kumelerinde iki tip veri kullanilir; Nominal (kategorik) ve sayisal. ID3 algoritmasinda sadece nominal degerler kullanilirken, C4.5 algoritmasinda sayisal verilerede yer verilmistir. Tabi bu kullanimda bir yonteme ihtiyac duyulmustur. Sayisal degerler arasinda uygun bir esik degerinin bulunmasi gerekiyor. Esik degeri bulunduktan sonra ikili bir bolunme ile veri kumeleri dagitilabiliyor. Yani, bu esik degerinden buyuk ve esik degerinden kucuk veriler olmak uzere ikiye ayrim yapiliyor.
Esik degeri belirlenirken, tum sayisal verileri kucukten buyuge bir sekilde siralariz. {x1,x2,x3, ... , xm} kumesinde, m tane sayisal veri icerisinden xi '.nci veriyi esik degeri olarak seceriz. Bu secimden sonraki siralama artik; {x1,x2,x3, ... , xi} ve {xi+1,xi+2,xi+3, ... , xm} seklinde iki grup haline donusecektir. Bunun anlami aslinda verilerimiz icerisinden m-1 adet esik degeri secebilecegimizdir. Bu yuzden, olasi butun esik degerlerini (xi + xi+1 / 2) seklinde formulize edebiliriz. Esik degerine e dersek, xi < e sartini saglayan veriler kucuk xi > e sartini saglayan veriler ise buyuk seklinde gruplandirilacaktir.
C4.5 UYGULAMASI
Dataset
No Job Age Married Decision
1 Doctor 70 Yes Class1
2 Doctor 90 Yes Class2
3 Doctor 85 No Class2
4 Doctor 95 No Class2
5 Doctor 70 No Class1
6 Teacher 90 Yes Class1
7 Teacher 78 No Class1
8 Teacher 65 Yes Class1
9 Teacher 75 No Class1
10 Engineer 80 Yes Class2
11 Engineer 70 Yes Class2
12 Engineer 80 No Class1
13 Engineer 70 No Class1
14 Engineer 96 No Class1
Age = {65, 70, 75, 80, 85, 90, 95, 96}
Esik Degeri => t = (xi + xi+1)/ 2
t = ( 80 + 85 )/ 2
t = 83
Age <= 83 ve Age > 83
No Job Age Married Decision
1 Doctor Age <= 83 Yes Class1
2 Doctor Age > 83 Yes Class2
3 Doctor Age > 83 No Class2
4 Doctor Age > 83 No Class2
5 Doctor Age <= 83 No Class1
6 Teacher Age > 83 Yes Class1
7 Teacher Age <= 83 No Class1
8 Teacher Age <= 83 Yes Class1
9 Teacher Age <= 83 No Class1
10 Engineer Age <= 83 Yes Class2
11 Engineer Age <= 83 Yes Class2
12 Engineer Age <= 83 No Class1
13 Engineer Age <= 83 No Class1
14 Engineer Age > 83 No Class1
= 9 / 14
= 5 / 14
E(Decision) = - ( P (Decision, Class1) log2 P (Decision,Class1) + P (Decision,Class2) log2 P (Decision,Class2) )
E(Decision) = - ( 5/14 log2 5/14 + 9/14 log2 9/14 )
E(Decision) = 0.940
E(Decision) = 0.940
= 7
= 2
E(Age<=83, Decision) = - (7/9 log2 7/9 + 2/9 log2 2/9 )
E(Age<=83, Decision )= 0.764
= 2
= 3 E(Age>83, Decision) = - (2/5 log2 2/5 + 3/5 log2 3/5 ) E(Age>83, Decision) = 0.970 E(Age,Decision) = P(Age<=83,Decision) * E(Age<=83,Decision) + P(Age>83,Decision) * E(Age>83,Decision) E(Age,Decision) = 9/14 E(Age<=83,Decision) + 5/14 E(Age>83,Decision) E(Age,Decision) = 9/14 * 0.764 + 5/14 * 0.970 Gain(Age,Decision) = E(Decision) - E(Age,Decision) Gain(Age,Decision) = 0.940 – 0.837 Gain(Age,Decision) = 0.103 Keyifli Calismalar Dilerim.




Comments