Sz
Sıfır Gecikme
veri bilimi · türkçe
Hakkımda🗺️ Haritam
Tümü
İnteraktif📖Rehber🛠Araç📊Vaka💼Kariyer🐍PY Playground🗄️SQL Playground🔍Regex📚Öğren🚀Proje
Ana sayfainteraktif

Naive Bayes: spam filtresi kendi kendine nasıl öğrenir?

2026 · makine öğrenmesi · olasılık · 12 dakika

E-posta kutuna düşen her spam, bir olasılık hesabının sonucudur. Naive Bayes, kelimelerin geçmiş örüntülerine bakarak "bu mesaj spam mı?" sorusuna saniyeler içinde cevap üretir. Aşağıda sen de kendi mesajını oluştur — algoritma gerçek zamanlı hesaplasın.

Bayes teoremi nedir?

Temel fikir: bir gözlem yaptığında, önceki bilgini bu gözlemle güncelle. E-posta örneğinde:

P(spam | kelimeler)P(spam) × P(kelime₁|spam) × P(kelime₂|spam) × ···

"Naive" (saf) ismini şuradan alır: her kelimenin birbirinden bağımsız olduğunu varsayar. Gerçekte "acele et" ve "bedava" birlikte daha anlamlı olsa da, model bunu görmezden gelir — ve yine de놀랄 derecede iyi çalışır.

Eğitim verisi

Model, 120 e-postadan öğrendi. Her kelime için spam ve normal e-postalardaki geçme sıklıkları hesaplandı.

120
e-posta
eğitim seti
48
spam
%40 oranında
72
normal
%60 oranında
⚡ Spam Filtresi — Mesaj OluşturKelimelere tıklayarak mesaja ekle
KELİME HAVUZU
kırmızı = spam yanlı kelime yeşil = normal e-posta kelimesi
Yukarıdan kelime seç…
Normal %60
🤔 NÖTR
Spam %40

Formülü açalım

Birden fazla kelime seçtiğinde model bunların olasılıklarını çarpar. "bedava" ve "kazandınız" aynı mesajda görünüyorsa:

P(spam) = 0.40
× P("bedava" | spam) = 0.84
× P("kazandınız" | spam) = 0.91
= 0.306 → normalize → %98 spam

Aynı şeyi normal e-posta için de hesaplar, ikisini toplar ve normalize eder (oranlarının toplama bölünmesi). Sonuç her zaman 0-1 arasında bir olasılık.

Neden "Naive"?

Model kelimelerin birbirinden bağımsız olduğunu varsayar — oysa gerçekte değiller. "Para" ve "kazan" birlikte geldiğinde spam sinyali çok daha güçlü olur, ama Naive Bayes her birini ayrı ayrı değerlendirir.

Bu varsayım teknik olarak yanlış, ama pratikte iyi çalışır. 1990'larda spam filtrelerinde ilk kez büyük ölçekte kullanıldı ve onlarca yıl standart yöntem olarak kaldı.

Güçlü yönleri

Zayıf yönleri

Python'da 10 satırda

from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

# Eğitim verisi
emailler = ["bedava kazan", "toplantı raporu", "ücretsiz tıkla", "proje analiz"]
etiketler = [1, 0, 1, 0]  # 1=spam, 0=normal

# Metin → sayı matrisi
vek = CountVectorizer()
X = vek.fit_transform(emailler)

# Model eğit
model = MultinomialNB()
model.fit(X, etiketler)

# Yeni e-postayı sınıflandır
yeni = vek.transform(["bedava fırsat"])
print(model.predict(yeni))          # [1] → spam
print(model.predict_proba(yeni))    # [[0.03, 0.97]] → %97 spam

Özet

Sonraki: Decision tree: ağacı sen büyüt →

Bunları da beğenebilirsin

interaktif

Linear regression: çizgiyi sen çiz

8 dakika

interaktif

Gradient descent: top yuvarlama oyunu

10 dakika

interaktif

K-Means: müşterilerini kümele

10 dakika

Faydalı bulduysan paylaş

X'te paylaşLinkedIn'de paylaş

💬 Yorumlar