-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathid3-decision-tree-TR.qmd
144 lines (73 loc) · 6.25 KB
/
id3-decision-tree-TR.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Karar Ağacı Algoritması
**Kaynak:** [https://medium.datadriveninvestor.com/decision-tree-algorithm-with-hands-on-example-e6c2afb40d38](https://medium.datadriveninvestor.com/decision-tree-algorithm-with-hands-on-example-e6c2afb40d38)
**Entropi**
Makine öğreniminde, entropi işlenen bilgideki rastgeleliğin bir ölçüsüdür. Entropi ne kadar yüksek olursa, o bilgiden herhangi bir sonuç çıkarmak o kadar zor olur.

**Bilgi Kazancı**
Bilgi kazancı, bir rastgele değişken veya sinyalle ilgili olarak başka bir rastgele değişkeni gözlemleyerek elde edilen bilgi miktarı olarak tanımlanabilir. Ebeveyn düğümün entropisi ile çocuk düğümlerin ağırlıklı ortalama entropisi arasındaki fark olarak düşünülebilir.

**Gini Safsızlığı**
Gini safsızlığı, kümeden rastgele seçilen bir elemanın, alt kümedeki etiketlerin dağılımına göre rastgele etiketlendiğinde ne sıklıkla yanlış etiketleneceğinin bir ölçüsüdür.

Gini safsızlığı **0 ile alt sınırlıdır** ve veri kümesi yalnızca bir sınıf içeriyorsa 0 olur.

Karar ağacı oluşturmak için birçok algoritma vardır. Bunlar:
1. **CART** (Sınıflandırma ve Regresyon Ağaçları) — Bu, metrik olarak Gini safsızlığını kullanır.
2. **ID3** (Yinelemeli Bölücü 3) — Bu, metrik olarak entropi ve bilgi kazancını kullanır.
Bu makalede ID3'ü ele alacağım. Bunu anladıktan sonra, aynısını CART kullanarak uygulamak kolay olacaktır.
# **ID3 algoritması kullanarak sınıflandırma**
Futbol oynayıp oynamama kararını belirleyeceğimiz bir veri setini düşünün.

Burada bağımlı değişkeni belirlemek için dört bağımsız değişken vardır. Bağımsız değişkenler Hava Durumu, Sıcaklık, Nem ve Rüzgardır. Bağımlı değişken ise futbol oynayıp oynamama durumudur.
İlk adım olarak, karar ağacımız için ebeveyn düğümü bulmalıyız. Bunun için şu adımları izleyin:
***Sınıf değişkeninin entropisini bulun.***
E(S) = -[(9/14)log(9/14) + (5/14)log(5/14)] = 0.94
not: Burada genellikle 2 tabanında logaritma alırız. Burada toplam 14 evet/hayır var. Bunların 9'u evet ve 5'i hayır. Buna dayanarak yukarıdaki olasılığı hesapladık.
Yukarıdaki verilerden hava durumu için aşağıdaki tabloyu kolayca elde edebiliriz:

***Şimdi ağırlıklı ortalama entropiyi hesaplamamız gerekiyor.*** Yani, her özelliğin ağırlıklarının olasılıklarla çarpımının toplamını bulduk.
E(S, hava durumu) = (5/14)*E(3,2) + (4/14)*E(4,0) + (5/14)*E(2,3) = (5/14)(-(3/5)log(3/5)-(2/5)log(2/5))+ (4/14)(0) + (5/14)((2/5)log(2/5)-(3/5)log(3/5)) = 0.693
***Bir sonraki adım bilgi kazancını bulmaktır.*** Bu, ebeveyn entropisi ile yukarıda bulduğumuz ağırlıklı ortalama entropi arasındaki farktır.
IG(S, hava durumu) = 0.94 - 0.693 = 0.247
Benzer şekilde Sıcaklık, Nem ve Rüzgar için Bilgi Kazancını bulun.
IG(S, Sıcaklık) = 0.940 - 0.911 = 0.029
IG(S, Nem) = 0.940 - 0.788 = 0.152
IG(S, Rüzgar) = 0.940 - 0.8932 = 0.048
***Şimdi en büyük entropi kazancına sahip özelliği seçin.*** Burada bu Hava Durumu'dur. Dolayısıyla karar ağacımızın ilk düğümünü (kök düğüm) oluşturur.
Şimdi verilerimiz şu şekilde görünüyor:



Bulutlu sadece 'Evet' sınıfına ait örnekler içerdiğinden, bunu evet olarak ayarlayabiliriz. Yani hava durumu bulutlu ise futbol oynanacak demektir. Şimdi karar ağacımız şu şekilde görünüyor:

Bir sonraki adım, karar ağacımızdaki bir sonraki düğümü bulmaktır. Şimdi güneşli altında bir tane bulacağız. Sıcaklık, Nem veya Rüzgardan hangisinin daha yüksek bilgi kazancına sahip olduğunu belirlememiz gerekiyor.

Ebeveyn entropisini hesaplayın E(güneşli)
E(güneşli) = (-(3/5)log(3/5)-(2/5)log(2/5)) = 0.971.
Şimdi Sıcaklığın bilgi kazancını hesaplayın. IG(güneşli, Sıcaklık)

E(güneşli, Sıcaklık) = (2/5)*E(0,2) + (2/5)*E(1,1) + (1/5)*E(1,0)=2/5=0.4
Şimdi bilgi kazancını hesaplayın.
IG(güneşli, Sıcaklık) = 0.971–0.4 =0.571
Benzer şekilde şunları elde ederiz:
IG(güneşli, Nem) = 0.971
IG(güneşli, Rüzgar) = 0.020
Burada IG(güneşli, Nem) en büyük değerdir. Bu nedenle Nem, güneşli altına gelen düğümdür.

Nem için yukarıdaki tablodan, nem normal ise oyunun gerçekleşeceğini ve yüksek ise gerçekleşmeyeceğini söyleyebiliriz. Benzer şekilde, yağmurlu altındaki düğümleri bulun.
***Not: Entropisi 0'dan büyük olan bir dal daha fazla bölünmeye ihtiyaç duyar.***
Sonuç olarak, karar ağacımız aşağıdaki gibi görünecektir:

# CART algoritması kullanarak sınıflandırma
CART kullanarak sınıflandırma buna benzerdir. Ancak entropi yerine Gini safsızlığını kullanırız.
**İlk adım olarak karar ağacımızın kök düğümünü bulacağız. Bunun için sınıf değişkeninin Gini indeksini hesaplayın**
Gini(S) = 1 - [(9/14)² + (5/14)²] = 0.4591
**Bir sonraki adım olarak, Gini kazancını hesaplayacağız.** Bunun için önce Hava Durumu, Sıcaklık, Nem ve Rüzgarın ağırlıklı ortalama Gini safsızlığını bulacağız.
İlk olarak Hava Durumu durumunu ele alalım

Gini(S, hava durumu) = (5/14)gini(3,2) + (4/14)*gini(4,0)+ (5/14)*gini(2,3) = (5/14)(1 - (3/5)² - (2/5)²) + (4/14)*0 + (5/14)(1 - (2/5)² - (3/5)²)= 0.171+0+0.171 = 0.342
Gini kazancı (S, hava durumu) = 0.459 - 0.342 = 0.117
Gini kazancı(S, Sıcaklık) = 0.459 - 0.4405 = 0.0185
Gini kazancı(S, Nem) = 0.459 - 0.3674 = 0.0916
Gini kazancı(S, rüzgar) = 0.459 - 0.4286 = 0.0304
Daha yüksek Gini kazancına sahip olanı seçin. Hava durumu için Gini kazancı daha yüksektir. Bu yüzden onu kök düğümümüz olarak seçebiliriz.