Naive Bayes; Bayes teoremin dayanan bir sınıflandırma tekniğidir. Sınıflandırma yaparken özellikleri birbirinden bağımsız olarak hesaba katar. Örneğin bir meyvenin çilek olma ihtimalini; kırmızı ise bir birim, uzunluğu 5cm’den küçük ise bir birim arttırır. Bu iki özelliğin aynı anda olması Naive Bayes için bir katma değer sağlamaz, Naive(saf, toy) denmesinin sebebi de buradaki saf davranışından dolayıdır.
Bayes Teoremi; koşullu olasılıklar konusunda çok kullanılan, istatistikçiler arasında çok popüler bir teorem. Khanacademy’nin şu videosunda ve Şadi Hoca şurada Türkçe olarak anlatmış.
Şöyle bir örnekle kısaca özetleyebiliriz;
Elimizde bir miktar bisiklet olsun ve bunlar A ve B olmak üzere iki fabrikadan geliyor, A fabrikası üretimin 70% ini, B fabrikası 30%’unu yapıyor olsun.
Bu durumda elimizdeki bisikletlerden herhangi birini seçersek;
A olma olasılığı = P(A) = 0.7
B olma olasılığı = P(B) = 0.3
Elimize yeni bir bilgi geliyor ve A fabrikası 5% B fabrikası 3% oranda bozuk bisiklet ürettiği söyleniyor.
P(Bozuk | A) = 0.05
P(Bozuk | B) = 0.03
Bu notasyona yabancı olanlar için, parantez içindeki ilk terim olasılığı verilen (bozuk olma), |(pipe) işaretinden sonra gelen parametre ise koşulumuz (hangi fabrikadan geldiği) oluyor. Bir koşullu olasılık yazmış oluyoruz yani.
Bu durumda rastgele seçilen ve bozuk olduğu görülen bisikletin A fabrikasından olma olasılığı nedir?
P(A | Bozuk) = ?
Bayes teoremi burada devreye giriyor. Teoremi aşağıya yazıyorum daha sonra örneğimize uygulayalım.
P(A|B) = P(B|A) x P(A) / P(B)
Örneğimize uygularsak;
Bozuk bisikletin A fabrikasına ait olma olasılığı = (A fabrikasından bozuk bisiklet gelme olasılığı) X (Bütün bisikletlerde A’dan gelme olasılığı) / (Bütün bisikletlerde bozuk olma olasılığı)
P(A | Bozuk) = P(Bozuk|A) x P(A) / P(Bozuk)
P(A | Bozuk) = 0.05 x 0.7 / (0.05 x 0.7 + 0.03 x 0.3)
P(A | Bozuk) = 0.79
Bu durumda bozuk olup da A olmama ihtimalini yani B olma ihtimalini de çıkarabiliriz.
P(B | Bozuk) = 1 – 0.79 = 0.21
Rastgele seçtiğimiz ve bozuk olduğunu bildiğimiz bir bisikletin A fabrikasından olma olasılığı yaklaşık 79% çıktı. Elimizdeki verilere bakınca mantıksız bir oran olmadığı görülüyor.
Bayes Teoremi bu kadar yeter. Naive Bayes sınıflandırması nasıl işler ona bakalım şimdi.
Naive Bayes; supervised bir makine öğrenmesi yöntemidir. Yani eğitim için kullanılacak veri setinizde sınıflandırmalar yapılmış olmalı, kendi kendine bu sınıflandırmaları yapamaz.
Eğitim verisi olarak elimizde fazlaca e-posta verisi olsun diyelim. Ve bunlar spam/istenmeyen ve normal olarak sınıflandırılsın. Ve kurulu çalışan bir posta sunucumuzda bu veri seti ile eğittiğimiz algoritmamız gelen postaları spam veya değil diye işaretleyecek olsun.
Naive Bayes burada şunu yapacaktır. Eğitim sırasında her bir postadaki her bir kelimeyi alarak, ait olduğu postanın spam olup olmama durumuna bakarak bu kelimeye bir spam olma ve olmama olasılığı belirleyecektir. Yazının girişinde belirttiğim gibi bu oran posta içerisinde geçen diğer kelimelerden tamamen bağımsız olacak.
Elimizde pek çok kelime ve bu kelimelerin spam postalarda ve spam olmayan postalarda geçme olasılıkları oluyor. Yeni gelen postalar içerisinde geçen kelimelere göre bir spam olasılığı hesaplanıp sınıflandırılıyor.
Python tabanlı scikit-learn kütüphanesi GaussianNB metodu ile verimize Naive Bayes sınıflandırması uygulamamıza imkan veriyor.
from sklearn.naive_bayes import GaussianNB # burada verimizin hazır geldiğini varsayalım train_x, train_y, test_x, test_y = getData() model = GaussianNB() # eğitim verimiz ile öğrenme işlemini yapıyoruz model.fit(train_x, train_y) # test setimiz üzerindeki başarı skorunu yazacaktır. print(model.score(test_x, test_y))
Bir cevap yazın