Naive Bayes:
Hesaplama açısından oldukça zor bir yöntem olsa da, veri kümesini bir kere eğittikten sonra oldukça hızlı çalışan, bir durumun olma ihtimalinin en yüksek olma koşuluna göre hareket eden bir tür sınıflandırma algoritmasıdır. Büyük veri kümeleri için oldukça kullanışlıdır. Diğer sınıflandırma methodlarına göre daha iyi sonuç verdiği söyleniyor. Siz yine de çözmek istediğiniz probleme göre algoritma seçiminde bulunun. Örn; Naive Bayes dinamik sistemler için, yani verinin sürekli olarak değiştiği durumlar için uygun değildir. Çünkü yeni veri geldikçe eğitim sürecini ve test sürecini tekrarlamak gerekecektir. Bu yüzden algoritma seçimine çok dikkat etmeniz gerekiyor.
Görünüm | Sıcaklık | Nem | Rüzgar | Oyun |
Güneşli | Sıcak | Yüksek | Yok | Hayır |
Güneşli | Sıcak | Yüksek | Var | Hayır |
Bulutlu | Sıcak | Yüksek | Yok | Evet |
Yağmurlu | Ilık | Yüksek | Yok | Evet |
Yağmurlu | Serin | Normal | Yok | Evet |
Yağmurlu | Serin | Normal | Var | Hayır |
Bulutlu | Serin | Normal | Var | Evet |
Güneşli | Ilık | Yüksek | Yok | Hayır |
Güneşli | Serin | Normal | Yok | Evet |
Yağmurlu | Ilık | Normal | Yok | Evet |
Güneşli | Ilık | Normal | Var | Evet |
Bulutlu | Ilık | Yüksek | Var | Evet |
Bulutlu | Sıcak | Normal | Yok | Evet |
Yağmurlu | Ilık | Yüksek | Var | Hayır |
Naive bayes = P(A|B) = P(B|A) *P(A) / P(B)
P(A|B) = B olayı gerçekleştiği durumda A olayının meydana gelme olasılığıdır
P(B|A) = A olayı gerçekleştiği durumda B olayının meydana gelme olasılığıdır
P(A) = A olayının olma olasılığı
P(B) = A olayının olma olasılığı
Görünüm | Oyun/
EVET |
Oyun/
HAYIR |
Sıcaklık | Oyun/
EVET |
Oyun/
HAYIR |
Nem | Oyun/
EVET |
Oyun/
HAYIR |
Rüzgar | Oyun/
EVET |
Oyun/
HAYIR |
Oyun | |
Güneşli | 2/9 | 3/5 | Sıcak | 2/9 | 2/5 | Yüksek | 3/9 | 4/5 | Yok | 6/9 | 2/5 | 9/14 | 5/14 |
Bulutlu | 4/9 | 0/5 | Ilık | 4/9 | 2/5 | Normal | 6/9 | 1/5 | Var | 3/9 | 3/5 | ||
Yağmurlu | 3/9 | 2/5 | Serin | 3/9 | 1/5 |
Yukarıdaki tabloda, görünüm sütunundaki değerlerin olma olasılıkları verilmiştir. Fakat bulutlu olmama olasılığı 0′ dır. Bu durumda 0’ı 1 yapıp diğer bütün değerleri 1 artırmak sonucu çok etkilemeyecektir. Buna da zero-probability ya da laplace estimator deniyor. Buna göre;
Evet | Hayır | P(Evet|Güneşli) | P(Evet|Bulutlu) | P(Evet|Yağmurlu) | P(Hayır|Güneşli) | P(Hayır|Bulutlu) | P(Hayır|Yağmurlu) | |||
Güneşli | 3/12 | 4/8 | 7/20 | (3/12*12/20) / (7/20) | (4/8*8/20) / ( 7/20) | (5/12* 12/20) / (6/20) | (1/8*8/20) / (6/20) | (4/12*12/20)/ (7/20) | (3/8*8/20) /(7/20) | |
Görünüm | Bulutlu | 5/12 | 1/8 | 6/20 | ||||||
Yağmurlu | 4/12 | 3/8 | 7/20 | |||||||
Olasılık | 12/20 | 8/20 | 1 | 0.4285 | 0.571 | 0.833 | 0.1666 | 0.571 | 0.42857 |
Bu değerler sadece Görünüm sütunu içindi. Bütün bu işlemleri sıcaklık, nem ve rüzgar sütunları içinde hesaplamamız gerekli.
Evet | Hayır | P(Evet|Sıcak) | P(Evet|Ilık) | P(Evet|Serin) | P(Hayır|Sıcak) | P(Hayır|Ilık) | P(Hayır|Serin) | |||
Sıcak | 2/9 | 2/5 | 4/14 | (2/9*9/14)/4/14 | (4/9*9/14)/6/14 | (3/9*9/14)/4/14 | (2/5*5/14)/4/14 | (2/5*5/14)/6/14 | (1/5*5/14)/4/14 | |
Sıcaklık | Ilık | 4/9 | 2/5 | 6/14 | ||||||
Serin | 3/9 | 1/5 | 4/14 | |||||||
Olasılık | 9/14 | 5/14 | 1 | 0.0025510 | 0.003401 | 0.00382 | 0.0025 | 0.00170 | 0.00127 |
Evet | Hayır | P(Evet|Yüksek ) | P(Evet|Normal) | P(Hayır|Yüksek ) | P(Hayır|Normal) | |||
Yüksek | 3/9 | 4/5 | 7/14 | (3/9*9/14)/7/14 | (6/9*9/14)/7/14 | (4/5*5/14)/7/14 | (1/5*5/14)/7/14 | |
Nem | Normal | 6/9 | 1/5 | 7/14 | ||||
Olasılık | 9/14 | 5/14 | 1 | 0.00218 | 0.00437317 | 0.00291 | 0.00072 |
Evet | Hayır | P(Evet|Var) | P(Evet|Yok) | P(Hayır|Var) | P(Hayır|Yok) | |||
Var | 6/9 | 2/5 | 8/14 | (6/9*9/14)/8/14 | (3/9*9/14)/6/14 | (2/5*5/14)/8/14 | (3/5*5/14)/6/14 | |
Rüzgar | Yok | 3/9 | 3/5 | 6/14 | ||||
Olasılık | 9/14 | 5/14 | 1 | 0.003826 | 0.0025 | 0.0012755 | 0.002551 |
SET= (Bulutlu, serin,normal,var) değerinin hangi sınıfa ait olduğunu tahmin edelim.
P(Evet|SET) = P(Bulutlu|Evet) * P(serin|Evet) * P(normal|Evet) * P(var|Evet) * P(Evet)
= (4/9) * (3/9)*(6/9)*(6/9)*(9/14) = 0.04232
P(Hayır|SET) = P(Bulutlu|Hayır) * P(serin|Hayır) * P(normal|Hayır) * P(var|Hayır) * P(Hayır)
= (2/5) * (1/5)*(1/5)*(2/5)*(5/14) = 0.00228
P(Evet|SET) değeri daha büyük olduğu için OYUN oynama evet olarak sınıflandırılmış oluyor.
Naive Bayes’ de kendi arasında GuassianNB ,Multi-variate Bernoulli Naive Bayes ve Multinomial Naive Bayes olmak üzere 3′ e ayrılıyor.
Guassian Naıve Bayes:
Özelliklerin normal distribution izlediğini varsayıyoruz. Örn; bir resmin görüntü kalitesi, renk kalitesi, keskinliği vs. Yani özellikler discrete değil continuous.
Multi-variate Bernoulli Naive Bayes:
Çok değişkenli Bernoulli modeli ikili verilere dayanır: Bir belgenin özellik vektöründeki her bir eleman 1 veya 0 değeriyle ilişkilendirilir. Örn;
a = Google arama motorunda en iyisidir.
b = İnsanlar Google üzerinden arama yapıyor.
c = [Google, Arama, Motorunda, En, İyisidir, İnsanlar, Üzerinden, Yapıyor]
a ve b vektörlerinde var olanları c vektörüne bakarak işaretliyelim.
a = [ 1, 1, 1, 1, 1, 0, 0, 0]
b = [ 0, 1, 0, 0, 0, 1, 1, 1]
c | Arama | Motorunda | En | İyisidir | İnsanlar | Üzerinden | Yapıyor | |
a | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
b | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
Multinomial Naive Bayes:
Örneğin, bir metin sınıflandırma sorunumuz varsa, bernoulli methodunu bir adım daha ileriye götürebilir ve “Belge de sözcük var mı yok mu?” yerine “Belge de sözcükler ne sıklıkta var? (Frekans) “diye düşünebilirsiniz. Frekans ise, belirli bir terimin (sözcük veya işaretin) bir belgede kaç kez göründüğüdür.
Irıs Verisetini GaussianNB ile Sınıflandırma
Kaynaklar:
[1] Eager and Lazy Learning Algorithms
[2] GaussianNB