Machine Learning — Classification — Naive Bayes — Part 11

Ekrem Hatipoglu
3 min readJul 12, 2018

Bayes Teoremi

1812 yılında Thomas Bayes tarafından bulunan koşullu olasılık hesaplama formülüdür.

Tanım : Bayes teoremi, olasılık kuramı içinde incelenen önemli bir konudur. Bu teorem bir rassal değişken için olasılık dağılımı içinde koşullu olasılıklar ile marjinal olasılıklar arasındaki ilişkiyi gösterir. ( Kaynak : Wikipedia )

Bayes Formülü

P ( A | B ) = B olayı gerçekleştiğinde A olayının gerçekleşme olasılığı
P ( A ) = A olayının gerçekleşme olasılığı
P ( B | A ) = A olayı gerçekleştiğinde B olayının gerçekleşme olasılığı
P ( B ) = B olayının gerçekleşme olasılığı

Naive Bayes Classifier

Naive Bayes sınıflandırıcısının temeli Bayes teoremine dayanır. lazy ( tembel ) bir öğrenme algoritmasıdır aynı zamanda dengesiz veri kümelerinde de çalışabilir. Algoritmanın çalışma şekli bir eleman için her durumun olasılığını hesaplar ve olasılık değeri en yüksek olana göre sınıflandırır. Az bir eğitim verisiyle çok başarılı işler çıkartabilir. Test kümesindeki bir değerin eğitim kümesinde gözlemlenemeyen bir değeri varsa olasılık değeri olarak 0 verir yani tahmin yapamaz. Bu durum genellikle Zero Frequency ( Sıfır Frekans ) adıyla bilinir. Bu durumu çözmek için düzeltme teknikleri kullanılabilir. En basit düzeltme tekniklerinden biri Laplace tahmini olarak bilinir.

Kullanım alanlarına örnek olarak gerçek zamanlı tahmin, çok sınıflı tahmin, metin sınıflandırması, spam filtreleme, duyarlılık analizi ve öneri sistemleri verilebilir.

Not : Yapıcağımız örnekteki Iris veri seti kullanılmıştır. Buraya tıklayarak indirebilirsiniz.

Veri seti tanımı : Her bir çiçeğin bazı özelliklerinin ( boy, genişlik vs. ) yanı sıra her tür için 50 örnek içeren 3 iris türünü içerir.

Örnek yapağımız uygulamada veri dosyasından Naive Bayes algoritması kullanılarak bir model oluşturup iris türü tahmini yapılacaktır.

Örneğin sonunda başarı oranını değerlendireceğiz. Confusion Matrix kavramını bilmiyorsanız buraya tıklayarak öğrenebilirsiniz.

Karmaşıklık Matrisi Sonucu

16 + 19 + 16 + 2= 50 tane veri içinden 48 tanesini doğru tahmin edilirken 2 tanesi yanlış tahmin edilmiştir.

Başarı oranı 48 / 50= 0,96 ‘ dır.

ÖNEMLİ NOT : GaussianNB sınıfını kullanarak 0,96 oranında bir başarı yakaladık. Peki ya BernoulliNB ya da MultinomialNB sınıflarını kullansaydık başarı oranımız ne olurdu ? Bunun cevabını paylaştığım kodda GaussianNB kısmını BernoulliNB ya da MultinomialNB olarak değiştirerek bulabilirsiniz. Sonuç BernoulliNB için 0.3, MultinomialNB için 0.7 olacaktır. Gördüğünüz üzere bu veri setinde GaussianNB ile daha yüksek bir başarı oranı yakaladık ancak bu durum başka veri setleri denendiğinde değişebilir.

Sonuç

Hepsi bu kadar. Bu yazıda Naive Bayes algoritmasının ne olduğunu ve Python dili ile nasıl kodlanabileceğini öğrendiniz.

Okuduğunuz için teşekkürler.

--

--