İçeriğe geç

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ıç
Anomaly Detection Pipeline Anatomisi: Ingestion'dan Alarm'a Uçtan Uca 7 Katman
🏗️ 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?
Uçtan uca anomaly detection pipeline mimarisi — 7 katman.
Production anomaly detection pipeline anatomisi.

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#

KriterBatch tercihStreaming 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, dashboardAnında blok, rate limit
ComplianceStandard reportingReal-time fraud holding
MaliyetDüşük (CPU saatlik)Orta-yüksek (sürekli)
Ingestion'da Anomaly Detection için 4 Kritik Şey:
  1. Schema kontrolü — gelen veride beklenmedik alanlar var mı? (drift'in ilk sinyali burada)
  2. Replay capability — anomali yakalanan kayıtları yeniden işlemek için raw veri saklamak şart
  3. Ordering guarantee — collective anomaly için doğru sıra önemli (Kafka partition strategy)
  4. 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#

AileAçıklamaÖrnek
VelocityBirim zamanda sayı/tutar"Son 1 saatte 5 transaction"
CumulativeBirikim ölçüsü"Bu ay toplam 12.000 TL"
RatioOran karşılaştırma"Bu işlem / ortalama günlük işlem"
TemporalZaman-bağımlı"Saat 03:00", "Cumartesi", "yılbaşı haftası"
Profile-relativeKullanı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ı"
EmbeddingYüksek-boyut vektör"Merchant ID embedding (32-d)"
StatisticalWindow ü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ı#

  1. Online çıkarılabilir mi? — bir feature offline (eğitim) hesaplanabilir ama online (gerçek zaman) hesaplanamıyorsa, kullanılamaz
  2. Latency bütçen var mı? — bir velocity feature için 100ms aralık lookback gerekiyorsa, redis cache şart
  3. 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 latencyMemoryAçıklanabilirlik
Isolation Forest0.5-2msDüşükYüksek (SHAP)
LOF5-30msOrta (kNN endex)Orta
OCSVM1-5msDüşükDüşük (kernel)
Autoencoder3-15msOrta-yüksekDüşük (reconstruction)
LSTM-AE10-50msYüksekDüşük
XGBoost1-3msDüşükYüksek (SHAP)

Serving infrastructure#

Serving altyapısıLatencyThroughputKullanım
FastAPI + ONNX1-10ms5-50K rpsGenel amaçlı
NVIDIA Triton0.5-5ms10-200K rpsGPU intensive (vision)
Ray Serve2-20ms10-100K rpsAuto-scaling
TensorFlow Serving1-10ms10-50K rpsTF modelleri
Modal / BentoML5-30msSı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şımNasıl çalışırAvantajDezavantaj
ManualDomain expert eşik söylerHızlı, açıklanabilirKalibre edilmemiş
Percentile"Top %X anomali olarak işaretle"Stabil hacimGerçek anomali oranı bilinemez
POT (Peak Over Threshold)EVT ile uç dağılımİstatistiksel sağlamKompleks
DynamicZamanla değişen eşikTrafik volümüne uyarHyperparameter çok
Cost-sensitiveFN cost / FP cost oranıİş kararına bağlıMaliyet rakamı şart
Multi-armed banditCanlıda eşik ayarıOtomatik optimalRisk: 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:
  1. Dedup — aynı entity için ardışık alarmları birleştir (deduplikasyon)
  2. Grouping — ilişkili alarmları tek incident olarak topla
  3. Intelligent silencing — bilinen "noise" pattern'leri otomatik sustur
  4. Suppression windows — bakım pencerelerinde alarm üretme
  5. 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ürKim üretirSıklıkModele etkisi
ExplicitAnalist "fraud / not fraud" işaretlerDüşük volümYüksek kalite, supervised retraining
ImplicitMüşteri çağrı atmaz / iade etmezYüksek volümDüşük kalite, weak signal
ChargebackBanka chargeback alırÇok düşükÇok yüksek kalite, ground truth
Action outcomeBloklanmış işlem nasıl sonuçlandıOrtaCounterfactual 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#

BoyutAraç önerisi
OperationalPrometheus + Grafana
Data qualityGreat Expectations, Soda
PerformanceEvidently, NannyML
Drift detectionAlibi Detect, Evidently
CentralizedWhyLabs (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?#

KatmanEsas modüllerCapstone
Ingestion3 (Data prep), 27 (Streaming)Capstone 1, 7
Feature engineering3, 19 (Fraud), 23 (IoT)Capstone 1, 4
Scoring (model)5-18 (tüm model modülleri)Hepsi
Thresholding4 (Eval), 29 (Threshold)Capstone 1, 2
Alerting33 (Alerting)Capstone 3, 7
Feedback19, 28 (Causal), 31 (Drift)Capstone 1, 8
Monitoring31 (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