Model Doğrulama — False Positive / False Negative Dengesi
Model doğrulamada confusion matrix dört temel metriği ortaya koyar. SOC bağlamında FP analist yorgunluğuna, FN ise gözden kaçan tehdide yol açar: import numpy as np from sklearn.metrics import confusion_matrix, classification_report y_true = np.array([0,0,1,1,0,1,0,1,1,0]) y_pred = np.array([0,1,1,0,0,1,0,1,0,0]) print(f'TP: {TP}, FP: {FP}, TN: {TN}, FN: {FN}') print(classification_report(y_true, y_pred, target_names=['benign','malicious']))
Giris ve Temel Akis
Model doğrulamada confusion matrix dört temel metriği ortaya koyar. SOC bağlamında FP analist yorgunluğuna, FN ise gözden kaçan tehdide yol açar: import numpy as np from sklearn.metrics import confusion_matrix, classification_report y_true = np.array([0,0,1,1,0,1,0,1,1,0]) y_pred = np.array([0,1,1,0,0,1,0,1,0,0]) print(f'TP: {TP}, FP: {FP}, TN: {TN}, FN: {FN}') print(classification_report(y_true, y_pred, target_names=['benign','malicious']))
Bu bölümün pratik akışı şu sırayla ilerler:
- cm = confusion_matrix(y_true, y_pred)
- TN, FP, FN, TP = cm.ravel()
- print(f'Precision: {TP/(TP+FP):.3f}')
- print(f'Recall: {TP/(TP+FN):.3f}')
- print(f'F1: {2TP/(2TP+FP+FN):.3f}')
- print(classification_report(y_true, y_pred))
Temel Kavram Eslesmeleri
Confusion matrix dört hücresinin SOC bağlamındaki anlamı model tasarımını doğrudan etkiler. Her hücre farklı bir operasyonel riski temsil eder. Örnek senaryo: - IDS 1000 olay analiz etti - 50 gerçek saldırı vardı - Model 45 saldırıyı tespit etti - Model 80 normal olayı saldırı olarak işaretledi - 5 saldırı gözden kaçtı
- True Positive: Gerçek saldırı doğru tespit edildi
- False Positive: Normal olay yanlışlıkla alarm üretiyor
- False Negative: Gerçek saldırı gözden kaçtı
- True Negative: Normal olay doğru şekilde temiz olarak geçti
Ilk Cekirdek Kavram
Bu bölümde öne çıkan çekirdek kavram tpr - fpr olarak verilir. ROC eğrisi ve AUC skoru modelin tüm eşik değerlerindeki performansını gösterir. AUC 0.5 rastgele tahmin, 1.0 mükemmel model anlamına gelir: from sklearn.metrics import roc_curve, auc, RocCurveDisplay from sklearn.ensemble import RandomForestClassifier import numpy as np model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_train, y_train) y_prob = model.predict_proba(X_test)[:, 1] fpr, tpr, thresholds = roc_curve(y_test, y_prob) roc_auc = auc(fpr, tpr) print(f'AUC: {roc_auc:.3f}') optimal_idx = np.argmax(tpr - fpr) optimal_threshold = thresholds[optimal_idx] print(f'Optimal eşik: {optimal_threshold:.3f}')
Arac, Komut veya Inceleme Akisi
Precision-Recall eğrisi dengesiz veri setlerinde ROC'tan daha bilgilendiricidir. SOC modellerinde saldırı sınıfı azınlıkta olduğundan PR eğrisi tercih edilir: from sklearn.metrics import precision_recall_curve, average_precision_score import numpy as np print(f'Average Precision: {ap_score:.3f}') best_f1 = np.max(f1_scores) print(f'Best threshold: {best_threshold:.3f}, Best F1: {best_f1:.3f}')
Bu bölümün pratik akışı şu sırayla ilerler:
- y_prob = model.predict_proba(X_test)[:, 1]
- precision, recall, thresholds = precision_recall_curve(y_test, y_prob)
- ap_score = average_precision_score(y_test, y_prob)
- f1_scores = 2 * (precision * recall) / (precision + recall + 1e-8)
- best_threshold = thresholds[np.argmax(f1_scores[:-1])]
- print(f'Best threshold: {best_threshold:.3f}')
Kanit ve Bilesen Iliskileri
Karar eşiği (decision threshold) FP/FN dengesini doğrudan kontrol eder. SOC kullanım senaryosuna göre eşik bilinçli olarak ayarlanmalıdır. Örnek: Otomatik IP bloklama sisteminde eşik 0.95 olarak ayarlanır çünkü yanlış bloklama iş sürekliliğini etkiler. Threat hunting modelinde ise eşik 0.3'e düşürülerek hiçbir saldırı kaçırılmaz.
- Otomatik IP bloklama: Yüksek eşik (0.90+), FP toleransı düşük
- Threat hunting triage: Düşük eşik (0.30-), FN toleransı düşük
- SOC L1 alarm filtresi: Orta eşik (0.60-0.75), FP/FN dengeli
- APT erken uyarı: Çok düşük eşik, hiçbir sinyal kaçırılmaz
Ikincil Odak Noktasi
Bu bölümde öne çıkan çekirdek kavram TimeSeriesSplit olarak verilir. Cross-validation ile model doğrulama overfitting riskini azaltır. Güvenlik verisinde zaman bazlı bölümleme (TimeSeriesSplit) rastgele bölümlemeden daha gerçekçidir çünkü gelecekteki veri eğitimde kullanılmaz: from sklearn.model_selection import TimeSeriesSplit, cross_val_score from sklearn.ensemble import RandomForestClassifier import numpy as np tscv = TimeSeriesSplit(n_splits=5) model = RandomForestClassifier(n_estimators=100, random_state=42) scores = cross_val_score(model, X, y, cv=tscv, scoring='f1') print(f'F1 scores: {scores.round(3)}') print(f'Mean: {scores.mean():.3f} +/- {scores.std():.3f}')
Operasyonel Dogrulama ve Raporlama
Beta-F skoru precision ve recall arasındaki ağırlığı ayarlamaya yarar. SOC'ta FN'nin FP'den daha maliyetli olduğu senaryolarda F2 skoru kullanılır: from sklearn.model_selection import cross_val_score from sklearn.ensemble import RandomForestClassifier import numpy as np
F2: recall ağırlıklı (beta=2)
F0.5: precision ağırlıklı (beta=0.5)
print(f'F0.5 (precision ağırlıklı): {f05:.3f}')
Bu bölümün pratik akışı şu sırayla ilerler:
- from sklearn.metrics import fbeta_score, make_scorer
- f2 = fbeta_score(y_test, y_pred, beta=2)
- f05 = fbeta_score(y_test, y_pred, beta=0.5)
- print(f'F2 (recall ağırlıklı): {f2:.3f}')
- f2_scorer = make_scorer(fbeta_score, beta=2)
- scores = cross_val_score(model, X, y, cv=5, scoring=f2_scorer)
- print(f'CV F2: {scores.mean():.3f}')
Cikti ve Kullanım Amaci
Model doğrulamada karşılaşılan yaygın hatalar SOC modellerinin güvenilirliğini ciddi biçimde düşürür. Bu hataları tanımak ve önlemek L3 analistin temel yetkinliğidir. Örnek data leakage senaryosu: Normalizasyon tüm veri seti üzerinde yapılıp sonra train/test bölümlemesi yapılırsa test verisi eğitim sürecine sızmış olur.
- Data leakage: Test verisi bilgisi eğitime sızar, gerçekçi olmayan performans
- Overfitting: Model eğitim verisini ezberler, genelleme yapamaz
- Train-test contamination: Aynı kullanıcı hem eğitim hem test setinde
- Label noise: Yanlış etiketlenmiş veri modeli yanıltır
Son Kavram ve Cikis
Bu bölümde öne çıkan çekirdek kavram against olarak verilir. Splunk MLTK'da model doğrulama score komutu ile yapılır. Confusion matrix ve temel metrikler doğrudan SPL içinde hesaplanabilir: | inputlookup network_traffic_test.csv | apply attack_classifier | score accuracy_score predicted_label against actual_label | append [ | inputlookup network_traffic_test.csv | apply attack_classifier | score precision_score predicted_label against actual_label average=binary ] | append [ | inputlookup network_traffic_test.csv | apply attack_classifier | score recall_score predicted_label against actual_label average=binary ] | score f1_score predicted_label against actual_label average=binary Splunk MLTK'da gerçek etiketle karşılaştırma için against anahtar kelimesi kullanılır.
Bu Egitimden Ne Kazanirsiniz?
Bu icerik, Model Doğrulama — False Positive / False Negative Dengesi konusunu SOC L3 - İleri Tehdit Avcılığı - Veri Madenciliği ve Modelleme baglaminda parcali degil, butunlu bir ogrenme akisina donusturur. Yalnizca kavramlari ezberlemek yerine surec sirasini, bilesenler arasi iliskiyi ve hangi kanitin neden onemli oldugunu kavramayi hedefler.
Ozet
Bu ders kapsaminda one cikan basliklar: True Positive, False Positive, False Negative, True Negative, Otomatik IP bloklama, Threat hunting triage, SOC L1 alarm filtresi, APT erken uyarı, Data leakage, Overfitting. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.