Bayes Teoremi: Algoritmanın Matematiksel Temeli
Naive Bayes, 18. yüzyılda Thomas Bayes'in formüle ettiği koşullu olasılık teoremine dayanır: P(A|B) = P(B|A) × P(A) / P(B). Sınıflandırma bağlamında bu formül şöyle yorumlanır: bir veri noktasının belirli bir sınıfa ait olma olasılığı, o sınıftaki olasılık ile öncül (prior) olasılığın çarpımıyla orantılıdır. Naive varsayım sayesinde her özelliğin katkısı ayrı ayrı hesaplanabilir: P(sınıf | x₁, x₂, ..., xₙ) ∝ P(sınıf) × P(x₁|sınıf) × P(x₂|sınıf) × ... × P(xₙ|sınıf). Tahmin aşamasında en yüksek sonsal (posterior) olasılığa sahip sınıf seçilir.
Laplace Düzeltmesi: Sıfır Olasılık Sorunu
Naive Bayes'in kritik bir sorunu, eğitim verisinde hiç görülmemiş bir özellik-sınıf kombinasyonuyla karşılaşıldığında o kombinasyonun olasılığını 0 olarak tahmin etmesidir. Bu durum çarpım zincirinde tüm sonsal olasılığı sıfıra indirir ve modeli tamamen işlevsiz kılar. Laplace düzeltmesi (ya da +1 düzleştirmesi), her sayıma küçük bir α değeri (genellikle 1) ekleyerek bu sorunu çözer: P(x|sınıf) = (sayı(x,sınıf) + α) / (toplam sayı(sınıf) + α × özellik sayısı). Bu düzeltme modelin görülmemiş özellikler için makul olasılıklar üretmesini sağlar.
Performans ve Kullanım Alanları
Naive Bayes'in en önemli pratik avantajı hızıdır: eğitim O(n×d) karmaşıklıkla (n örnek, d özellik), tahmin ise O(d×k) karmaşıklıkla (k sınıf) gerçekleşir ve bu, büyük veri akışlarında gerçek zamanlı sınıflandırmayı mümkün kılar. Metin sınıflandırma literatüründe Multinomial NB, 1998-2010 döneminin e-posta spam filtreleme çözümlerinin omurgası olmuştur. Duygu analizi, dil tespiti (language detection), tıbbi ön-tanı sistemleri ve gerçek zamanlı içerik moderasyonunda hâlâ aktif olarak kullanılmaktadır. scikit-learn'de üç satırla uygulanabilmesi ve yorumlanabilir olasılıksal çıktısı nedeniyle yeni projeler için güçlü bir temel (baseline) modeli olmayı sürdürmektedir.
Sınırlılıklar ve Diğer Algoritmalarla Karşılaştırma
Naive Bayes'in temel zayıflığı koşullu bağımsızlık varsayımıdır. 'Bellek hızlanması' ve 'GPU hesaplama' gibi birlikte geçen ifadeler bağımsız değildir; bu korelasyonları yakalayamayan Naive Bayes bu örnekleri yanlış sınıflandırabilir. Özellik sayısı arttıkça ve özellikler arasındaki bağlantı güçlendikçe Random Forest veya XGBoost gibi ağaç tabanlı yöntemler Naive Bayes'i önemli ölçüde geçmektedir. Lojistik regresyon genellikle sayısal özellikler üzerinde daha iyi kalibrasyon sağlar. Buna karşın Naive Bayes, az veriyle etkili öğrenme, hız gerektiren akış uygulamaları ve yorumlanabilirliğin ön planda olduğu senaryolarda rakipsiz kalmaktadır.
scikit-learn ile Naive Bayes Uygulaması
Python ekosisteminde Naive Bayes, scikit-learn kütüphanesinin sklearn.naive_bayes modülünde yer alır. Metin verisi için tipik kullanım: CountVectorizer veya TfidfVectorizer ile metin özellik matrisine dönüştürülür, ardından MultinomialNB().fit(X_train, y_train) ile model eğitilir. Parametre olarak yalnızca alpha (Laplace düzeltmesi katsayısı) ayarlanması gerekir; bu da hiperparametre optimizasyonunu oldukça basit kılar. Gaussian NB ise sayısal veri için GaussianNB().fit(X, y) ile tek satırda çalışır. Pipeline API'siyle önişleme ve sınıflandırma adımları zincirlenebilir.