Naive Bayes (Naif Bayes Sınıflandırıcı)

Bayes teoremi ve koşullu bağımsızlık varsayımına dayanan, metin sınıflandırma ve spam tespitinde yaygın kullanılan olasılıksal makine öğrenmesi algoritması.

Naive Bayes, Bayes teoremini temel alan olasılıksal bir makine öğrenmesi sınıflandırma algoritmasıdır. "Naive" (saf/naif) adı, algoritmanın tüm özellikler arasında koşullu bağımsızlık varsayımından gelir; bir özelliğin değerinin diğer özelliklerden bağımsız olduğu kabul edilir. Bu güçlü varsayım gerçek dünyada nadiren tam olarak geçerlidir; ancak Naive Bayes pek çok uygulamada şaşırtıcı derecede yüksek performans gösterir. Algoritmanın matematiksel temeli Bayes teoremidir: P(sınıf | özellikler) ∝ P(sınıf) × ∏ P(özellik_i | sınıf). Burada P(sınıf) öncül (prior) olasılık, P(özellik | sınıf) koşullu olasılıktır ve eğitim verisinden doğrudan tahmin edilir. Bu oran en yüksek olan sınıf tahmin olarak döndürülür. Üç temel Naive Bayes türü bulunur. Gaussian Naive Bayes, sürekli sayısal özelliklerin normal dağılım izlediğini varsayar; tıbbi veri sınıflandırma ve bilimsel ölçümler için uygundur. Multinomial Naive Bayes, metin sınıflandırma ve spam tespitinde yaygın olarak kullanılan türdür; belgede kaç kez geçtiği önemli olan kelime sayım verisiyle çalışır. Bernoulli Naive Bayes ise bir kelimenin belgede bulunup bulunmadığını ikili (0/1) özellik olarak modeller ve kısa metinlerde avantaj sağlar. Naive Bayes'in belirgin avantajları şunlardır: eğitim hızı son derece yüksektir, küçük veri setlerinde de iyi genelleme sağlar, sıfır frekans sorununu Laplace düzeltmesiyle aşar ve olasılıksal çıktısı sayesinde belirsizlik tahmini sunar. Metin sınıflandırma, spam filtresi, duygu analizi ve tıbbi teşhis alanlarında on yıllardır endüstriyel ölçekte kullanılmaktadır; erken dönem Gmail spam filtresi Naive Bayes tabanlı sistemlere dayanmaktaydı. Sınırlamalar açısından, özellikler arasındaki güçlü korelasyon performansı düşürür. Ayrıca eğitim verisinde hiç görülmemiş özellik kombinasyonları zero-probability sorununa yol açar. Bu kısıtlamalar nedeniyle karmaşık yapısal ilişkilerin kritik olduğu görevlerde gradient boosting veya derin öğrenme yöntemleri tercih edilmektedir. Buna karşın Naive Bayes, hızı, yorumlanabilirliği ve az veriyle çalışabilmesi nedeniyle temel bir başlangıç çizgisi (baseline) olarak modern makine öğrenmesi iş akışlarında yerini korumaktadır.

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.