Anomaly Detection Pipeline Anatomisi: Ingestion'dan Alarm'a Uçtan Uca 7 Katman
Production-grade anomaly detection pipeline'ının 7 katmanı: ingestion, feature engineering, scoring, thresholding, alerting, feedback loop, monitoring. Her katmanda kritik kararlar ve ölçüm noktaları.
Şükrü Yusuf KAYA
32 dakikalık okuma
Başlangıç🏗️ Modelin %15, sistemin %85
Çoğu öğrenci anomaly detection'ı 'doğru modeli bulmak' olarak görür. Ama production'da modelin sadece %15'lik bir parça olduğunu göreceksin. Geri kalan %85: ingestion, feature engineering, threshold, alarm routing, feedback ve monitoring. Bu derste 7 katmanı uçtan uca açıyoruz — kursun her capstone'unda bu iskelete dönecek olacaksın.
7 Katmanlı Anomaly Detection Pipeline#
Production AD sistemleri tipik olarak şu 7 katmandan oluşur:
1. INGESTION ↓ (raw events / metrics / logs) 2. FEATURE ENGINEERING ↓ (modele beslenecek vektör) 3. SCORING (MODEL) ↓ (sürekli skor) 4. THRESHOLDING ↓ (binary karar veya seviye) 5. ALERTING & ROUTING ↓ (alarmı doğru kişiye) 6. FEEDBACK LOOP ↓ (analist kararı geri model'e) 7. MONITORING ↓ (model & data drift)
Şimdi her katmanı tek tek açalım — hangi araçlar, hangi kararlar, nelere
dikkat?
1️⃣ Katman 1 — Ingestion#
Görev: Ham veriyi pipeline'a almak.
İki temel mod:
Batch ingestion#
Periyodik (saatlik, günlük) toplu işleme. Örnek: dün'ün tüm kart işlemlerini sabah 04:00'te işle.
Araçlar: Apache Airflow, Prefect, Dagster, dbt + cron.
Tipik kullanım: Insurance fraud, healthcare auditing, üretim hattı end-of-shift raporu.
Streaming ingestion#
Olay başına gerçek zamanlı. Örnek: her transaction Kafka topic'ine düşer, milisaniyede işlenir.
Araçlar: Apache Kafka, AWS Kinesis, Apache Pulsar, Redpanda, RabbitMQ.
Tipik kullanım: Banking fraud (gerçek zaman), DDoS detection, APM, IoT.
Karar matrisi#
| Kriter | Batch tercih | Streaming tercih |
|---|---|---|
| Latency hassasiyeti | > 1 saat OK | < 1 dakika şart |
| Veri volümü | Stabil günlük artış | Dalgalı, spike-burst |
| Aksiyon türü | Tablo refresh, dashboard | Anında blok, rate limit |
| Compliance | Standard reporting | Real-time fraud holding |
| Maliyet | Düşük (CPU saatlik) | Orta-yüksek (sürekli) |
Ingestion'da Anomaly Detection için 4 Kritik Şey:
- Schema kontrolü — gelen veride beklenmedik alanlar var mı? (drift'in ilk sinyali burada)
- Replay capability — anomali yakalanan kayıtları yeniden işlemek için raw veri saklamak şart
- Ordering guarantee — collective anomaly için doğru sıra önemli (Kafka partition strategy)
- Late data handling — gecikmiş kayıtlar gelirse modeline ne anlatacaksın
💎 Ingestion'da öğrenilen acı
Üretimdeki AD sistemlerinin %30'u 'model kötü' diye etiketleniyor ama gerçek sorun ingestion katmanında: stale Kafka offset, missed message, late arriving event, eksik schema migration. Modeli debug etmeden önce veriye bak.
2️⃣ Katman 2 — Feature Engineering#
Görev: Ham veriyi modele girecek vektöre dönüştürmek.
Bu katman, AD pipeline'ının canlı kalbı. Aynı model, farklı feature
mühendisliğiyle %50 daha iyi performans verebilir. Aksini düşünme.
Tipik feature aileleri#
| Aile | Açıklama | Örnek |
|---|---|---|
| Velocity | Birim zamanda sayı/tutar | "Son 1 saatte 5 transaction" |
| Cumulative | Birikim ölçüsü | "Bu ay toplam 12.000 TL" |
| Ratio | Oran karşılaştırma | "Bu işlem / ortalama günlük işlem" |
| Temporal | Zaman-bağımlı | "Saat 03:00", "Cumartesi", "yılbaşı haftası" |
| Profile-relative | Kullanıcı/varlık profiline göre | "z-score(işlem, müşteri tarihçesi)" |
| Network/graph | İlişkisel | "Bu hesabın 1-hop komşu fraud oranı" |
| Embedding | Yüksek-boyut vektör | "Merchant ID embedding (32-d)" |
| Statistical | Window üzerinde özet | "Son 30 dakikada std sapma" |
Feature store kullan#
Production'da feature'ları feature store'da sakla. Aksi takdirde:
- Aynı feature offline (training) ve online (inference) farklı hesaplanır (training-serving skew)
- Re-engineering eski capstone'da iki haftan gider
Önerilen araçlar:
- Open source: Feast, Hopsworks, Tecton OSS
- Managed: Databricks Feature Store, Vertex AI Feature Store
Feature engineering'in 3 altın kuralı#
- Online çıkarılabilir mi? — bir feature offline (eğitim) hesaplanabilir ama online (gerçek zaman) hesaplanamıyorsa, kullanılamaz
- Latency bütçen var mı? — bir velocity feature için 100ms aralık lookback gerekiyorsa, redis cache şart
- Versioning — feature tanımı değişirse model retraining gerekir; feature_v1 ve feature_v2 yan yana yaşamalı
Modül 3'te (Veri Hazırlığı) bunları detaylı işleyeceğiz.
3️⃣ Katman 3 — Scoring (Model)#
Görev: Feature vektörü → anomaly skoru.
Single model vs Ensemble#
Production'da nadiren tek model kullanılır. Ensemble norm:
Score_final = α * Score_iForest + β * Score_AE + γ * Score_classifier
α, β, γ ağırlıkları validation set üzerinde grid search ile bulunur.
Tipik production model türleri#
| Model türü | Tipik latency | Memory | Açıklanabilirlik |
|---|---|---|---|
| Isolation Forest | 0.5-2ms | Düşük | Yüksek (SHAP) |
| LOF | 5-30ms | Orta (kNN endex) | Orta |
| OCSVM | 1-5ms | Düşük | Düşük (kernel) |
| Autoencoder | 3-15ms | Orta-yüksek | Düşük (reconstruction) |
| LSTM-AE | 10-50ms | Yüksek | Düşük |
| XGBoost | 1-3ms | Düşük | Yüksek (SHAP) |
Serving infrastructure#
| Serving altyapısı | Latency | Throughput | Kullanım |
|---|---|---|---|
| FastAPI + ONNX | 1-10ms | 5-50K rps | Genel amaçlı |
| NVIDIA Triton | 0.5-5ms | 10-200K rps | GPU intensive (vision) |
| Ray Serve | 2-20ms | 10-100K rps | Auto-scaling |
| TensorFlow Serving | 1-10ms | 10-50K rps | TF modelleri |
| Modal / BentoML | 5-30ms | Sınırsız (serverless) | Spike-y traffic |
Modül 32'de (Deployment Patterns) bunları capstone'da kuracağız.
4️⃣ Katman 4 — Thresholding#
Görev: Sürekli skoru karar'a çevirmek.
Bu katman, en az çalışılan ama en kritik katmandır. Yanlış threshold seçimi
modelinin gücünü kaybetmesine yol açar.
Threshold seçim yaklaşımları#
| Yaklaşım | Nasıl çalışır | Avantaj | Dezavantaj |
|---|---|---|---|
| Manual | Domain expert eşik söyler | Hızlı, açıklanabilir | Kalibre edilmemiş |
| Percentile | "Top %X anomali olarak işaretle" | Stabil hacim | Gerçek anomali oranı bilinemez |
| POT (Peak Over Threshold) | EVT ile uç dağılım | İstatistiksel sağlam | Kompleks |
| Dynamic | Zamanla değişen eşik | Trafik volümüne uyar | Hyperparameter çok |
| Cost-sensitive | FN cost / FP cost oranı | İş kararına bağlı | Maliyet rakamı şart |
| Multi-armed bandit | Canlıda eşik ayarı | Otomatik optimal | Risk: explore döneminde hata |
Tek vs çok seviyeli karar#
Çoğu sistem 3 seviyeli kullanır:
Score < 0.3: GREEN — geç Score 0.3-0.7: YELLOW — ek inceleme (challenge, soft check) Score > 0.7: RED — blok / alarm
Bu, false positive yükünü azaltır ve "şüpheli ama emin değil" gri alanı yönetir.
Modül 29'da (Threshold Selection) bütüncül anlatacağız.
5️⃣ Katman 5 — Alerting & Routing#
Görev: Bir anomali skorunun alarm üretmesi ve doğru kişiye gitmesi.
Bu katman bilinçsiz mühendisin "model çalışıyor ama kimse cevap vermiyor"
şikayetini doğurur. Çünkü alarm sadece üretmek yetmez; doğru yere gitmesi
ve doğru zamanda harekete geçirmesi şart.
Alarm anatomi şablonu#
Her alarmda 5 öge olmalı:
alert: id: <uniq_id> severity: P1 | P2 | P3 | P4 source: <model_id> context: entity_id: <transaction_id / sensor_id / user_id> score: <0.0 - 1.0> threshold_breached: <eşik> explanation: top_features: [feature1, feature2, ...] similar_past_cases: [case_id1, case_id2, ...] action: suggested: "block_transaction" | "manual_review" | "escalate" runbook_url: <URL> routing: primary: @analyst-team / @sre-oncall fallback: @manager / @secondary-on-call
Alarm yorgunluğu (alert fatigue)#
Production AD sistemlerinin #1 öldürücüsü. Tipik öldürücü pattern:
- Günlük 500+ alarm
- %85'i false positive
- Analist sadece P1'lere bakar
- Gerçek P3 anomali kaçar
Anti-fatigue stratejileri:
- Dedup — aynı entity için ardışık alarmları birleştir (deduplikasyon)
- Grouping — ilişkili alarmları tek incident olarak topla
- Intelligent silencing — bilinen "noise" pattern'leri otomatik sustur
- Suppression windows — bakım pencerelerinde alarm üretme
- Severity-based routing — sadece P1-P2 gerçek alarma yol açar
Alarm araçları#
- Open source: Alertmanager (Prometheus), VictoriaMetrics alerting
- SaaS: PagerDuty, Opsgenie, Squadcast
- Chat: Slack webhook, Microsoft Teams, Discord webhook
- Türkiye: Çoğu ekip Slack + Telegram bot hibrit kullanır
Modül 33'te (Alerting & Incident Response) bütünleyici olarak ele alacağız.
📊 Alarm yorgunluğu ekonomisi
Bir Türk bankası fraud ekibinde tipik analist günde 6-8 saatte 90-130 alarm inceler. Her false positive 3-5 dakika alır. %85 false positive rate → günde 4-6 saat boşa harcanmış zaman → analist başına aylık ~120.000 TL atık. Threshold engineering bu maliyeti yarıya indirebilir.
6️⃣ Katman 6 — Feedback Loop#
Görev: Analist kararlarını modele geri vermek.
Bu katman kursun en sık atlanan ama en önemli katmanı. Bir AD modeli
feedback loop olmadan giderek kötüleşir çünkü:
- Adversarial aktörler pattern'i öğrenir, model'i atlatır
- Müşteri davranışı zamanla değişir (drift)
- Yeni anomali tipleri gelir (novelty)
Feedback türleri#
| Tür | Kim üretir | Sıklık | Modele etkisi |
|---|---|---|---|
| Explicit | Analist "fraud / not fraud" işaretler | Düşük volüm | Yüksek kalite, supervised retraining |
| Implicit | Müşteri çağrı atmaz / iade etmez | Yüksek volüm | Düşük kalite, weak signal |
| Chargeback | Banka chargeback alır | Çok düşük | Çok yüksek kalite, ground truth |
| Action outcome | Bloklanmış işlem nasıl sonuçlandı | Orta | Counterfactual zor |
Feedback nasıl uygulanır?#
1. Loop logging: Her alarm + analist karar + sonrasında olan ne (chargeback geldi mi, müşteri iade istedi mi) — hepsi loglanır.
2. Active learning: Modelin en belirsiz olduğu örnekler analist'e gönderilir, etiket alınır, retraining'e dahil edilir.
3. Retraining tetikleyici: Yeterli sayıda yeni etiket biriktiğinde (örn. haftada 500+ etiket) otomatik retraining tetiklenir.
4. Counterfactual analiz: Bloklanmış işlem chargeback gelmediği için "iyi karar mıydı" sorusu zor. Modül 28 (Causal AD) buna girer.
Pratik mimari#
[Alert] → [Analyst Decision] → [Feedback Queue (Kafka)] ↓ [Label Store (Postgres)] ↓ [Retraining DAG (Airflow)] ↓ [Model Registry (MLflow)] ↓ [Canary Deploy]
Modül 31'de (Drift) ve Modül 19'da (Fraud capstone) bu döngüyü kuracağız.
7️⃣ Katman 7 — Monitoring#
Görev: Modelin canlıda sağlıklı çalışıp çalışmadığını izlemek.
Monitoring'in 4 boyutu:
7.1 — Operational metrics#
- Latency p50, p95, p99
- Throughput (req/sec)
- Error rate
- Memory/CPU usage
7.2 — Data quality#
- Schema değişiklikleri
- Eksik feature oranı
- Outlier rate (girişte)
- Null/NaN oranı
7.3 — Model performance proxies#
- Anomaly score dağılımı (zamanla)
- Alarm rate (zamanla)
- Action rate (gerçekten kaç alarm aksiyona dönüşüyor)
- Calibration drift
7.4 — Drift detection#
- Input drift (Kolmogorov-Smirnov, PSI, MMD)
- Output drift (anomaly score dağılımı)
- Concept drift (label dağılımı zamanla)
- Prediction drift (model davranışı zamanla)
Önerilen stack#
| Boyut | Araç önerisi |
|---|---|
| Operational | Prometheus + Grafana |
| Data quality | Great Expectations, Soda |
| Performance | Evidently, NannyML |
| Drift detection | Alibi Detect, Evidently |
| Centralized | WhyLabs (SaaS), Arize (SaaS) |
Modül 31'de (Drift & Monitoring) bunu detaylı işleyeceğiz.
7 Anti-Pattern: Bu Hataları Yapma#
Production AD pipeline'larında en sık karşılaşılan 7 hata:
Anti-pattern 1: Model'i offline geliştir, online'a 'kopyala'#
Sonuç: training-serving skew. Online feature'lar offline ile aynı hesaplanmaz.
Çözüm: Feature store kullan.
Anti-pattern 2: Tek bir global threshold#
Sonuç: bazı segmentler için over-trigger, bazıları için under-trigger.
Çözüm: Segment-based threshold (örn. müşteri tipi başına ayrı eşik).
Anti-pattern 3: Alarm = log message#
Sonuç: alarmlar kayboluyor, kimse cevap vermiyor.
Çözüm: Routing katmanı şart. PagerDuty/Slack entegrasyonu.
Anti-pattern 4: Retraining yok#
Sonuç: model 3 ayda %20 PR-AUC kaybeder.
Çözüm: Drift tetiklemeli + periyodik retraining DAG.
Anti-pattern 5: Hyperparameter mağarası#
Sonuç: 47 hyperparameter, kimse hangi neyi yapıyor bilmiyor.
Çözüm: Hyperparameter tracking (MLflow), defaults documentation.
Anti-pattern 6: Manual deployment#
Sonuç: lansman gece 03:00, biri elle dosya kopyalıyor.
Çözüm: CI/CD + model registry + canary rollout.
Anti-pattern 7: Feedback yok#
Sonuç: adversarial actor 3 ayda modeli yener.
Çözüm: Explicit + implicit feedback loop'u baştan kur.
Gerçek Pipeline Örneği: Stripe Radar#
Stripe Radar (ödeme firması Stripe'ın fraud detection sistemi) 2024'te public
blog'da bazı detayları paylaştı. Pipeline anatomisi yaklaşık şöyle:
[Card transaction request] ↓ [Feature service] ├─ Velocity (15 sn pencerede tx sayısı) ├─ Cross-merchant pattern ├─ Device fingerprint ├─ Card BIN risk └─ ~1500 toplam feature ↓ [ML Scoring] ├─ XGBoost (supervised, etiketli geçmiş) ├─ Sparse Mixture of Experts (low-volume merchant'lar) └─ Multi-stage neural network ↓ [Threshold + Action Engine] ├─ Block (high risk) ├─ 3D Secure challenge (med risk) └─ Allow (low risk) ↓ [Feedback] ├─ Chargeback signal (60-90 gün gecikme) ├─ Merchant report └─ Active learning queue ↓ [Retraining] └─ Haftalık model güncellemesi ↓ [Monitoring] ├─ Real-time drift detection ├─ Per-merchant performance └─ Adversarial pattern detection
Stripe'ın açıkladığı performans: ~%99.9 transaction otomatik karara varır,
ortalama latency < 100ms. Bu seviyeye ulaşmak için pipeline her katmanda
özenli kurulmuş.
Bu sınıfta 8 capstone projesinde benzer iskeleti küçük ölçekte kuracağız.
🏗️ Build vs Buy kararı
Bazı şirketler her şeyi sıfırdan kurar (Stripe, Block, PayPal). Bazıları vendor alır (SAS, Featurespace, FICO, Forter). Türk bankaları çoğunlukla hibrit: çekirdek feature engineering ve scoring in-house, alert routing/case management vendor. Sen mühendis olarak iki dünyaya da hazır olmalısın. Modül 33'te vendor karşılaştırması da yapacağız.
Bu Katmanlar Hangi Modüllerde İşlenecek?#
| Katman | Esas modüller | Capstone |
|---|---|---|
| Ingestion | 3 (Data prep), 27 (Streaming) | Capstone 1, 7 |
| Feature engineering | 3, 19 (Fraud), 23 (IoT) | Capstone 1, 4 |
| Scoring (model) | 5-18 (tüm model modülleri) | Hepsi |
| Thresholding | 4 (Eval), 29 (Threshold) | Capstone 1, 2 |
| Alerting | 33 (Alerting) | Capstone 3, 7 |
| Feedback | 19, 28 (Causal), 31 (Drift) | Capstone 1, 8 |
| Monitoring | 31 (Drift), 22 (APM) | Capstone 7 |
Yani bu 7 katman kursun omurgası. Her modül en az bir katmanı derinleştiriyor.
👉 Bir sonraki ders
Ders 1.5 — Hands-on Lab. Bu modülün son dersi pratik. Üç anomali tipini (point, contextual, collective) sentetik veriyle üretip, matplotlib ve Plotly ile görselleştireceğiz. Bir Jupyter notebook'ta uçtan uca çalışma. Sonunda elinde 'üç tipi gerçek veride görme' yetisi olacak.
Sık Sorulan Sorular
Hayır. Erken aşama bir startup'ta basit bir AD MVP'si için 3-4 katman yeter: ingestion + feature + scoring + threshold. Feedback ve monitoring sonra eklenir. Ama production'a giden bir sistem yıl içinde hep 7 katmana evrilir.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
Modül 0: Kurs Çerçevesi ve Atölye Kurulumu
Anomaly Detection Engineer Kimdir? Fraud, SRE, Quality Engineer ile Farklar ve Türkiye Maaş Manzarası
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu
Kurs Felsefesi: Neden Bu Yol, Neden Bu Sıra — Anomaly Detection Öğrenme Nehri
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu