DEV Community

MustafaLSailor
MustafaLSailor

Posted on

Naive Bayes

Naive Bayes, denetimli öğrenme algoritmalarından biridir ve genellikle sınıflandırma problemleri için kullanılır. Adını, Bayes teoremi ve algoritmanın "naif" (saf) varsayımlarından alır.

Bayes teoremi, bir olayın olasılığını, diğer olayların olasılıklarına dayanarak hesaplamanın bir yolunu sağlar. Naive Bayes algoritması, bu teoremi kullanarak bir örneğin belirli bir sınıfa ait olma olasılığını hesaplar.

Naive Bayes'in "naif" olarak adlandırılmasının nedeni, algoritmanın tüm özelliklerin birbirinden bağımsız olduğunu varsaymasıdır. Bu, gerçek dünya verileri için genellikle doğru olmasa da, Naive Bayes algoritması yine de pratikte sıklıkla iyi sonuçlar verir.

Naive Bayes'in avantajları arasında basitliği, hızı ve özellikle büyük veri setleriyle iyi çalışması bulunur. Ayrıca, eksik veriyle başa çıkabilmesi ve çoklu sınıf tahminleri yapabilmesi de bir avantajdır.

Naive Bayes genellikle metin sınıflandırma gibi uygulamalarda kullanılır. Örneğin, bir e-postanın spam olup olmadığını belirlemek için kullanılabilir. Her bir kelimenin varlığı veya yokluğu, e-postanın spam olma olasılığını hesaplarken bir özellik olarak kullanılır.

Ancak, Naive Bayes algoritması, özellikler arasındaki bağımlılıkları göz ardı ettiği için her durumda ideal olmayabilir. Bu, özellikler arasında güçlü bağımlılıkların olduğu durumlarda modelin performansını olumsuz etkileyebilir.

Örneğin, bir metin sınıflandırma problemi üzerinde çalışalım. Diyelim ki bir e-posta spam olup olmadığını belirlemeye çalışıyoruz.

Öncelikle, elimizde etiketlenmiş bir eğitim veri seti olması gerekiyor. Bu veri seti, hem spam hem de spam olmayan e-postaları içerir ve her bir e-posta kendi kelimeleri (özellikleri) ile temsil edilir.

Naive Bayes algoritması, her bir kelimenin spam veya spam olmayan bir e-postada görülme olasılığını hesaplar. Örneğin, "kazanmak" kelimesinin spam e-postalarda daha sık görülme olasılığı yüksek olabilir.

Daha sonra, test etmek üzere yeni bir e-posta geldiğinde, Naive Bayes algoritması bu e-postadaki her kelimenin spam veya spam olmayan bir e-postada görülme olasılıklarını kullanarak e-postanın genel olarak spam olma olasılığını hesaplar.

Bu hesaplama, Bayes teoremi kullanılarak yapılır. Her kelimenin spam olma olasılığı çarpılır ve sonuç, e-postanın spam olma olasılığı olarak verilir.

Örneğin, "kazanmak" ve "milyoner" kelimelerini içeren bir e-postamız varsa ve bu kelimelerin spam e-postalarda görülme olasılıkları sırasıyla 0.8 ve 0.6 ise, e-postanın spam olma olasılığı 0.8 * 0.6 = 0.48 olarak hesaplanır.

Bu basit örnekte, tüm kelimelerin birbirinden bağımsız olduğunu varsaydık (bu Naive Bayes'in "naif" varsayımıdır). Ancak, gerçek dünyada kelimeler genellikle bağımsız değildir. Yine de, Naive Bayes bu tür durumlarda bile genellikle iyi sonuçlar verir.

Sonuç olarak, Naive Bayes algoritması, her bir özelliğin (bu durumda kelimelerin) belirli bir sınıfa ait olma olasılıklarını kullanarak bir örneğin sınıfını tahmin eder. Bu, metin sınıflandırma gibi uygulamalarda çok kullanışlıdır.

Türleri

Naive Bayes algoritması, özelliklerin dağılımlarına göre çeşitli alt türlerine ayrılır. Bu alt türler, özellikle özelliklerin dağılımının nasıl olduğuna bağlıdır. İşte Naive Bayes'in en yaygın alt kategorileri:

Gaussian Naive Bayes: Bu model, özelliklerin sürekli ve normal (Gauss) dağılıma sahip olduğunu varsayar. Örneğin, insanların boy ve kiloları genellikle normal dağılıma sahiptir.

Multinomial Naive Bayes: Bu model, özelliklerin çoklu (multinomial) dağılıma sahip olduğunu varsayar. Genellikle metin sınıflandırma gibi problemlerde kullanılır, çünkü bir metindeki kelime sayıları multinomial dağılımı takip eder.

Bernoulli Naive Bayes: Bu model, özelliklerin Bernoulli dağılımına sahip olduğunu varsayar, yani her özelliğin sadece iki olası değeri vardır (örneğin, doğru/yanlış veya başarılı/başarısız).

Complement Naive Bayes: Bu model, Multinomial Naive Bayes'in bir uyarlamasıdır ve dengesiz veri setleri üzerinde daha iyi performans gösterir.

Her bir model tipi, belirli bir problem türüne daha uygun olabilir. Hangi modelin kullanılacağına karar verirken, özelliklerin dağılımını ve problem türünü dikkate almak önemlidir.

Altına yatan matematiği anlamak için scikit learn'ı ziyaret edebilirsiniz. ==>

https://scikit-learn.org/stable/modules/naive_bayes.html

Şadi hocanın sitesini ziyaret edebilirsiniz. ==>

https://bilgisayarkavramlari.com/2013/02/08/naif-bayes-siniflandiricisi-naive-bayes/

Top comments (0)