Lojistik regresyon: olasılık sınıflandırıcı
26 Mayıs 2026 · 12 dakika okuma
E-posta kutuna gelen her mesajı tek tek okuyup "spam mı, değil mi?" diye ayrıştıran bir müdür hayal et. Her gün 500 e-posta, her e-postayı 2 saniyede değerlendirse bile günde 17 dakika harcar. Buna bir de tatil günleri, hasta günleri ekle — sistem çöker.
1990'ların sonunda Gmail'in atası olan Hotmail'in mühendisleri bu sorunu çözmek için lojistik regresyona başvurdu. Model, bir e-postanın spam olup olmadığını olasılıkla ifade etti: "Bu mesaj %94 ihtimalle spam." Ve bu ihtimal eşiği aşarsa — örneğin %50'nin üstündeyse — otomatik olarak çöpe gitti.
İşte tam bu yüzden lojistik regresyon, makine öğrenmesinin en temel sınıflandırma araçlarından biri. Adında "regresyon" yazan ama aslında sınıflandırma yapan bu algoritma, sigmoid fonksiyonu sayesinde herhangi bir sayıyı 0 ile 1 arasına sıkıştırır — ve bunu bir olasılık olarak yorumlar.
Sigmoid: her şeyi olasılığa çeviren eğri
Linear regression'dan hatırlarsın: bir denklem w₀ + w₁x₁ + w₂x₂ + ... biçiminde herhangi bir sayı üretir. Ama biz 0–1 arasında bir olasılık istiyoruz. İşte sigmoid fonksiyonu tam burada devreye girer:
σ(z) = 1 / (1 + e^(-z))
z sıfır olduğunda σ(0) = 0.5 — tam belirsizlik. z büyüdükçe 1'e, küçüldükçe 0'a yaklaşır. Aşağıda dene:
Slider'ı hareket ettir: z = 0'da tam belirsizlik (σ = 0.5), z > 0'da pozitif sınıf olasılığı artar.
Gördüğün gibi z değerini sürüklediğinde olasılık anlık değişiyor. z = +3 civarında neredeyse kesin pozitif (%95), z = −3'te neredeyse kesin negatif (%5). Bu S şekilli eğri, lojistik regresyonun kalbinde yer alır.
Karar sınırı nedir?
İki özelliği olan bir veri setini düşün — örneğin "e-posta uzunluğu" ve "büyük harf oranı". Her e-posta bu iki özellik uzayında bir nokta. Lojistik regresyon, bu uzayda bir karar sınırı çizer: sınırın bir tarafındaki noktalar sınıf 1 (spam), diğer tarafındakiler sınıf 0 (spam değil).
Bu sınır, modelin öğrendiği ağırlıklarla (w₀, w₁, w₂) belirlenir. Gradient descent ile bu ağırlıklar iteratif olarak güncellenir — her adımda hata azalır, sınır iki kümeyi daha iyi ayırır.
Kırmızı halka = yanlış sınıflandırılan nokta. Mor kesikli çizgi = karar sınırı. Threshold'u kaydır: eşik yükseldikçe mor çizgi kayar, metrikler değişir.
Threshold: hassasiyet dengesi
Yukarıdaki demoda fark etmişsindir: threshold slider'ı kaydırdıkça karar sınırı kayıyor ve metrikler değişiyor.
Threshold'u yükseltirsen — diyelim %80 — model çok daha az noktayı "sınıf 1" olarak sınıflandırır. Bu kesinliği artırır: sınıf 1 dediğinde gerçekten 1'dir. Ama bir sürü gerçek sınıf 1 noktasını kaçırırsın — duyarlılık düşer.
Threshold'u düşürürsen — diyelim %30 — model çok daha cömert olur, neredeyse her şeyi sınıf 1 sayar. Duyarlılık yükselir, ama kesinlik düşer: yanlış alarmlar çoğalır.
Bu denge precision-recall trade-off olarak bilinir. Spam filtresinde yanlış alarm (gerçek e-postanın spam sayılması) çok kötüdür — o zaman threshold'u yüksek tut. Kanser teşhisinde ise gerçek vakayı kaçırmak (düşük recall) daha tehlikeli — threshold'u düşür.
Python ile uygulama
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
import numpy as np
# Özellikler: e-posta uzunluğu, büyük harf oranı
X = np.array([
[120, 0.05], # normal
[45, 0.02], # normal
[310, 0.42], # spam
[280, 0.38], # spam
[90, 0.08], # normal
[400, 0.55], # spam
])
y = [0, 0, 1, 1, 0, 1]
model = LogisticRegression()
model.fit(X, y)
# Olasılıklar
probs = model.predict_proba(X)[:, 1]
print("Spam olasılıkları:", probs.round(2))
# Farklı threshold dene
threshold = 0.4
preds = (probs >= threshold).astype(int)
print(classification_report(y, preds, target_names=['Normal', 'Spam']))
# Karar sınırı eğimi
# w0*x0 + w1*x1 + b = 0 → x1 = -(w0*x0 + b) / w1
w = model.coef_[0]
b = model.intercept_[0]
print(f"Ağırlıklar: {w.round(3)}, bias: {b:.3f}")Doğrusal olmayan durumlar
Lojistik regresyon yalnızca doğrusal karar sınırı çizebilir — düz bir çizgi (veya 3D'de düzlem). Verinin iki kümesi iç içe geçmişse ya da halka biçimindeyse bu yetmez. O zaman feature engineering (özellik dönüşümü), kernel yöntemleri veya derin öğrenme devreye girer. Ama pek çok gerçek dünya probleminde veriler yeterince ayrışıktır ve lojistik regresyon hızlı, yorumlanabilir ve güvenilir bir baseline sunar.
Özet
- Lojistik regresyon, sigmoid fonksiyonu ile herhangi bir sayıyı 0–1 arası olasılığa çevirir
- Öğrenilen ağırlıklar, özellik uzayında doğrusal bir karar sınırı tanımlar
- Threshold seçimi, kesinlik ve duyarlılık arasındaki dengeyi belirler — iş problemine göre optimize edilmeli
- Basit, hızlı ve yorumlanabilir: yeni bir sınıflandırma probleminde her zaman ilk denenen model olmalı
Sıradaki yazıda SVM (Destek Vektör Makineleri): margin'i maksimize eden karar sınırı ve kernel hilesi.