Yukardaki tabloya göre son iki satırın sonucunu, karar ağaçlarından id3 algoritması ile çözünüz ve sonucu bulunuz
Böyle bir soru karşımıza geldiğinde ilk yapacağımız işlem entropy hesaplama olur. Entropy yi sonuca göre yani burada atar mı atamaz mı bizim sonucumuz olacağından ilk ona göre yaparız.
Atar –> 2 adet
Atamaz–> 5 adet
Entropy(Gol)(+2,-5)= -((2/7)*log2(2/5) + (3/7)*(log2(3/5)) = 0,85 == Genel Entropy diyorum kısaca ben buna..
Daha sonra Gain Hesabı yapmamız gerekecektir.
Gain hesabı yapmadan önce aynı genel entropy yi hesaplar gibi entropy hesabı yapıyoruz. Ve daha sonra bu entropylerin aritmetik ortalamasını alıyoruz. Örneğin bu tablo da genç sayısının adedi 3’tür. Toplam adet 7 olduğundan (3/7) olarak alacağız aritmetik ortalama hesaplarken. Daha sonra çıkan sonucu genel entropy den çıkararak Gain hesabını tamamlayacağız.
(3/7) Entropy(Genç)(+1,-2) = – (1/3*log2(1/3) + (2/3)*log2(2/3)) = 0.91
(2/7) Entropy(Genç)(+1,-1) = – (1/2*log2(1/2) + (1/2)*log2(1/2)) = +1
(2/7) Entropy(Genç)(+0-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
Gain(yaş) = 0.85 -((3/7)*0.91+(2/7)*1 +(2/7)*0) = 0.18
(3/7) Entropy(Forvet)(+2,-1) = – (2/3*log2(2/3) + (1/3)*log2(1/3)) = 0.91
(2/7) Entropy(Orta Saha)(0,-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
(2/7) Entropy(Defans)(0,-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
Gain(Mevki) = 0.85 -((3/7)*0.91+(2/7)*0 +(2/7)*0) = 0.46
(5/7) Entropy(Uzun)(+2,-3) = – (2/5*log2(2/5) + (3/5)*log2(3/5)) = 0.96
(2/7) Entropy(Kısa)(0,-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
Gain(Mevki) = 0.85 -((5/7)*0.96+(2/7)*0) = 0.16
Görüldüğü üzere en çok Mevki sonucu etkilemektedir. Gain hesabı bu sonucu bulmamıza yaramaktadır. Şimdi Mevki ile ilgili sonuçları sadece düşüneceğiz.
Görüldüğü üzere Mevkimiz Orta Saha ise her halukarda Atamaz çıkmaktadır.
Defans da ise her halukarda Atamaz çıkmaktadır.
Söz konusu Forvet olunca 2 tane Atar, 1 tane Atamaz sonucu doğmaktadır. Böylece aşağıdaki ağacı oluşturmamız uygun olur.
Artık sadece Forvet içeren kayıtlarımıza bakacağız.
Sadece bu veriler için en başta yaptığımız işlemleri sırasıyla tekrar yapacağız.
Genel Entropy(GOL)(+2,-1) =(2/3*log2(2/3) + (1/3)*log2(1/3)) = 0.91 (Genel Entropy değerimiz)
(1/3) Entropy(Genç)(+1,0) = – (1/1*log2(1/1) + (0/0)*log2(0/0)) = 0 = (1/3) Entropy(Orta Yaşlı)(+1,0) = (1/3) Entropy(Yaşlı)(0,-1) (Diğer işlemleri yapmadım. çünkü entropy sonuçları eşit çıkmaktadır)
Gain(YAŞ)=0.91 – ((1/3)*0+(1/3)*0+(1/3)*0)) =0.91
(3/3)Entropy(UZUN)(+2,-1) = (2/3*log2(2/3) + (1/3)*log2(1/3)) = 0.91
Gain(BOY) = 0.91 – ((3/3)*0.91) = 0
Ve şimdi en yüksek Gain değerine sahip olan Yaş durumunu değerlendirerek ağacımızı tamamlıyoruz. Görüldüğü üzere Boy durumunun hiçbir etkisi olmamaktadır.
Ağacımı şu şekilde tamamlanmaktadır.
Çok güzel olmuş gerçekten teşekkürler 🙂
Genel entropy kısmını anlamadım,
“Entropy(Gol)(+2,-5)= -((2/7)*log2(2/5) + (3/7)*(log2(3/5)) = 0,85 == Genel Entropy”
denilmiş fakat sonuç: = “0.85” değil “0.693536139” çıkıyor. Ayrıca formülde hata var ?
formül: -((p / (p + n) * log2(p / (p + n)) + n / (p + n) * log2(n / (p + n)))
Doğrusu:
Entropy(Gol)(+2,-5)= -((2/7)*log2(2/7) + (5/7)*(log2(5/7)) = = 0.863120569 ~ 0,85 == Genel Entropy
Matematiksel işlemde hata olduğunu söylüyorsun. Yani kontrol etmedim. Fakat o sonuca takılmadan konuyu anladıysan bu yeterli olmuştur. Sağlaması da doğru olduğundan rakamların önemi yok
İlk başta formülü yanlış anladım sonra bir kaç kaynağa da bakınca formülü anladım.
Ayrıca,
(3/7) Entropy(Genç)(+1,-2) = – (1/3*log2(1/3) + (2/3)*log2(2/3)) = 0.91
(2/7) Entropy(Genç)(+1,-1) = – (1/2*log2(1/2) + (1/2)*log2(1/2)) = +1
(2/7) Entropy(Genç)(+0-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
Burada da üçü içinde “Genç” yazılmış fakat “Genç”, “Orta Yaş”, “Yaşlı” olması gerekli.
yok kardeşim keisnlikle doğru hesap. doğruluğunu oluşan ağaca bakarak, ardından ilk resme bakarım kontrol edebilirsin. Kontrol ettim ve yanlış gözüme çarpmadı
İşlemde hata yok fakat yazım hatası var:
(3/7) Entropy(Genç)(+1,-2) = – (1/3*log2(1/3) + (2/3)*log2(2/3)) = 0.91
(2/7) Entropy(Genç)(+1,-1) = – (1/2*log2(1/2) + (1/2)*log2(1/2)) = +1
(2/7) Entropy(Genç)(+0-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
yerine
(3/7) Entropy(Genç)(+1,-2) = – (1/3*log2(1/3) + (2/3)*log2(2/3)) = 0.91
(2/7) Entropy(Orta Yaşlı)(+1,-1) = – (1/2*log2(1/2) + (1/2)*log2(1/2)) = +1
(2/7) Entropy(Yaşlı)(+0-2) = – (0/2*log2(0/2) + (2/2)*log2(2/2)) = 0
olması gerekli.
Kodlama kısmına yer verilmemiş.
kodlama kısmını yapmadım