Lojistik Regresyon
Logistic Regression
Adında 'regresyon' geçse de aslında bir sınıflandırma algoritmasıdır — bir sınıfa ait olma olasılığını sigmoid fonksiyonu ile modeller.
Lojistik regresyon, doğrusal regresyonun ürettiği sınırsız sayısal çıktıyı sigmoid (logistik) fonksiyonundan geçirerek 0–1 arası bir olasılığa dönüştürür. Bu olasılık, örneğin "spam olma" ihtimalidir. Bir eşik (genelde 0.5) konularak ikili sınıflandırmaya geçilir. Çok sınıflı versiyonu (multinomial logistic) softmax fonksiyonu ile aynı işi N sınıf üzerinde yapar.
Eğitim, doğrusal regresyondaki en küçük karelerin yerine log-likelihood maksimizasyonu (ya da denk şekilde, çapraz entropi minimizasyonu) ile yapılır. Bu, olasılık tahminlerini kalibre etmeye çok daha uygundur.
Lojistik regresyon, açıklanabilirlik gerektiren her sahanın bel kemiğidir: kredi skoru, sigorta risk değerlendirmesi, klinik karar destek sistemleri. Katsayıların yorumu odds ratio üzerinden yapılır — "bu özellikteki bir birimlik artış olayın olma odds'unu şu kadar katlar."
Bir doktorun "bu hastanın kalp krizi geçirme olasılığı yüksek mi?" diye düşünme şekli gibi. Yaşa, tansiyona, kolesterole, sigara geçmişine, aile öyküsüne bakar; her biri için kafasında bir "ağırlık" vardır. Bunları toplar ve bir olasılık üretir. %20'nin altıysa rahat, üstündeyse ek tetkik. Lojistik regresyon doktorun bu sezgisinin matematiksel hâlidir; ağırlıkları veriden öğrenir, yorum kapısı insana açıktır.
Bir e-ticaret sitesinin sepetini terk eden kullanıcılarına indirim e-postası göndermek için bir model lazım. Model çıktısı: "bu kullanıcı 24 saat içinde geri dönüp alışverişi tamamlama olasılığı". Olasılık düşükse e-posta gönderilir, yüksekse e-posta gönderilmez (zaten dönecek, indirim ziyan olur).
Lojistik regresyon kullanıcının cihazı, gezdiği ürün sayısı, sepet tutarı, geçmiş alışveriş sayısı gibi 18 özellikten olasılık üretir. Eşik 0.35'in altındakilere e-posta gönderilir. Modelin katsayıları pazarlama ekibine gösterildiğinde "premium kategoride alışveriş yapmış olmak dönüş olasılığını 2.4 kat artırıyor" gibi yorumlar çıkarılır — sadece tahmin değil, içgörü de üretir.
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import roc_auc_score
import numpy as np
pipe = Pipeline([
("scaler", StandardScaler()),
("clf", LogisticRegression(max_iter=500, C=1.0)),
])
pipe.fit(X_train, y_train)
# Olasılıkları al
probs = pipe.predict_proba(X_test)[:, 1]
# ROC-AUC eşikten bağımsız olarak modeli değerlendirir
print(f"ROC-AUC: {roc_auc_score(y_test, probs):.3f}")
# Odds ratio yorumu
coefs = pipe.named_steps["clf"].coef_[0]
for name, c in zip(feature_names, coefs):
print(f"{name}: katsayı={c:+.3f}, odds ratio={np.exp(c):.3f}")- İkili sınıflandırma için hızlı, açıklanabilir bir baseline gerekiyorsa
- Olasılık değeri (sadece sınıf değil) iş için değer taşıyorsa
- Düzenleyici/kurumsal ortamda model kararlarının açıklanması zorunluysa
- Veri görece doğrusal şekilde ayrılabiliyorsa
- Sınıflar doğrusal olmayan bir sınırla ayrılıyorsa — ağaç tabanlı veya çekirdek SVM dene
- Çok yüksek boyutlu, ilişkilerin karmaşık olduğu veride doğruluk öncelikse
- Eğitim verisi çok dengesizse ve sınıf ağırlığı ayarlamadan kullanırsan
Ölçeklendirmeyi atlama
Lojistik regresyon gradient tabanlı çözüldüğünde özellik ölçekleri çok farklıysa yakınsama yavaşlar ve düzenleyici (regularizer) bazı özellikleri haksızca cezalandırır. StandardScaler şart.
Olasılığı kullanmadan eşiği 0.5'te bırakmak
Dengesiz sınıflarda 0.5 eşik mantıksız olabilir. Pozitif sınıf %5 ise eşik genelde çok daha düşük seçilir. ROC-AUC ve precision-recall eğrisinden uygun eşiği tartış.
Doğrusal sınır varsayımına aldanmak
Lojistik regresyon doğrusal bir sınıf sınırı çizer. Veride iç içe geçmiş gruplar varsa doğal olarak başarısız olur — modelin altında yatan varsayımı her zaman doğrula.