Naïve Bayes Sınıflandırma Algoritması
Naïve Bayes sınıflandırma algoritması, adını Matematikçi Thomas Bayes’den alan bir sınıflandırma/ kategorilendirme algoritmasıdır. Naïve Bayes sınıflandırması olasılık ilkelerine göre tanımlanmış bir dizi hesaplama ile, sisteme sunulan verilerin sınıfını yani kategorisini tespit etmeyi amaçlar.
Naïve Bayes sınıflandırmasında sisteme belirli bir oranda öğretilmiş veri sunulur (Örn: 100 adet). Öğretim için sunulan verilerin mutlaka bir sınıfı/kategorisi bulunmalıdır. Öğretilmiş veriler üzerinde yapılan olasılık işlemleri ile, sisteme sunulan yeni test verileri, daha önce elde edilmiş olasılık değerlerine göre işletvilir ve verilen test verisinin hangi kategoride olduğu tespit edilmeye çalışılır. Elbette öğretilmiş veri sayısı ne kadar çok ise, test verisinin gerçek kategorisini tespit etmek o kadar kesin olabilmektedir.
Naïve Bayes sınıflandırma yönteminin birçok kullanım alanı bulunabilir fakat, burada neyin sınıflandırıldığından çok nasıl sınıflandırıldığı önemli. Yani öğretilecek veriler binary veya text veriler olabilir, burada veri tipinden ve ne olduğundan ziyade, bu veriler arasında nasıl bir oransal ilişki kurduğumuz önem kazanıyor.
Örnek:
Aşağıda yer alan tabloda 4 adet döküman, bunların içerikleri ve kategorileri yer almaktadır. Tabloda yer alan bilgiler Multinominal Naive Bayes sınıflandırma yöntemi ile sisteme öğretilecek bilgilerdir. Buradaki amaç ise, sisteme yeni sunulan bir dökümanın hangi kategoriye ait olduğunu bulmaktır.
Döküman numarası | Öğretilen içerik/cümle | Kategori |
1 | Chinese Beijing Chinese | Ç |
2 | Chinese Chinese Shanghai | Ç |
3 | Chinese Macao | Ç |
4 | Tokyo Japan Chinese | J |
Multinominal Naïve Bayes sınıflandırmasına göre ilk olarak bir kategorinin tüm satırlara göre oranı bulunmalıdır.
Örneğin:
P(Ç) = 3/4 = 0.75 (Öğretilecek verilerde Ç kategorisindeki satırların tüm satırlara oranı)
P(J) = 1/4 = 0.25 (Öğretilecek verilerde Japonya kategorisindeki satırların tüm satırlara oranı)
Sonrasında ise, öğretilecek kelimelerin ait olduğu kategoriye göre koşullu olasılığı bulunur
P(X| Y) =( Y kategorisindeki satırlarda “X” ifadesinin tekrar sayısı +1) / (Y kategorisindeki satırlarda bulunan tüm kelimelerin sayısı + Öğretilen veri sayısı)
Koşullu olasılıklar (6 adet)
P(Chinese | Ç) = (5 + 1) / (8 + 6) = 0.428 P(Tokyo | Ç) = (0 + 1) / (8 + 6) = 0.071 P(Japan| Ç) = (0 + 1) / (8 + 6) = 0.071 P(Chinese | J) = (1 + 1) / (3 + 6) = 0.222 P(Tokyo| J) = (1 + 1) / (3 + 6) = 0.222 P(Japan| J) = (1 + 1) / (3 + 6) = 0.222
Yeni bir dökümanın test edilmesi
Şimdi ise herhangi bir cümlenin öğretilen 6 bilgiye göre kategorisini bulmaya çalışalım.
Not: Eğer test için sunulan kelimelerden herhangi biri için olasılık değeri bulunmuyorsa, etkisini indirgemek adına çarpma işleminde etkisiz eleman olan “1” oran olarak verilebilir. (Örn: İstanbul, Lüleburgaz..)
Test verisi | Chinese Chinese İstanbul Chinese Tokyo Japan | Kategori = ??? |
P(Ç | Test) = P(Ç) * P(Chinese | Ç) * P(Chinese | Ç) * P(İstanbul| Ç) * P(Chinese | Ç) * P(Tokyo| Ç) * P(Japan| Ç)
P(Ç | Test) = 0.75 * 0.428 * 0.428 * 1 * 0.428 * 0.071 * 0.071 = 0.0003
P(Japonya| Test) = P(J) * P(Chinese | J) * P(Chinese | J) * P(İstanbul| J) * P(Chinese | J) * P(Tokyo| J) * P(Japan| J)
P(Japonya| Test) = 0.25 * 0.222 * 0.222 * 1 * 0.222 * 0.022 * 0.022 = 0.0001
Sonuç:
P(Ç | Test) > P(J | Test) olduğundan dolayı, Test verisinin Ç grubunda olma olasılığı olmama olasılığının yaklaşık 3 katıdır. Bu yüzden kategori olarak Ç denilebilir.
Referanslar
[1] http://www.stanford.edu/class/cs124/lec/naivebayes.pdf
[2] http://www.dcs.bbk.ac.uk/~dell/teaching/ir/examples/nb_example.pdf
[3] http://en.wikipedia.org/wiki/Naive_Bayes_classifier
Bir sonraki yazıda Apache Spark ile örnek bir veri kümesi üzerinde Naïve Bayes sınıflandırmasından bahsedeceğiz.
Yeni yazı burada: Apache Spark ile Naive Bayes Sınıflandırma
Tekrar görüşmek dileğiyle..
12 Comments
Gayet sade ve açıklayıcı olmuş teşekkür ederim.
Teşekkürler
Çok sade ve anlaşılır gerçekten, tebrikler
Teşekkürler. Allah razı olsun.
merhaba P(Ç | Test) cevabı nasıl 0.0003 oluyor anlayamadım o sonuç çıkmıyor yardımcı olabilirmisiniz
Sayıları çarpınca kaç çıkıyor?
2.964 çıkıyor
Sorun olmaz her halukarda diğerinden büyük 🙂 Yazarken yukarı yuvarlamış olabilirim.
tamam teşekkür ederim hocamızda sizin yazdığınız sonucu yazdırmıştı o yüzden farklı birşeymi var diye düşünmüştüm.
Merhaba, koşullu olasılıklara Beijing, Shangai ve Macao metinlerini dahil etmedik acaba?
Test verisinde onları kullanmadığım için es geçmişim. Eğer ihtiyacımız olsaydı onları da hesaplamak gerekecekti.