| # CRISP-DM SÜREÇ RAPORU |
|
|
| ## Topolojik Kırılma Noktasına Göre Veri Bölme: Bitcoin Kara Para Aklama Tespitinde Data Leakage, Değerlendirme Yanlılığı ve Performans Şişmesi |
|
|
| --- |
|
|
| > Bu rapor, projenin tüm yaşam döngüsünü **CRISP-DM (Cross-Industry Standard Process for Data Mining)** çerçevesine göre yapılandırılmış şekilde sunar. Her faz, yapılan işleri, alınan kararları ve elde edilen çıktıları içerir. |
|
|
| --- |
|
|
| ## CRISP-DM Genel Bakış |
|
|
| ``` |
| ┌─────────────────────────────────────────────────────────────┐ |
| │ CRISP-DM DÖNGÜSÜ │ |
| │ │ |
| │ 1. İş Anlayışı ──────► 2. Veri Anlayışı │ |
| │ ▲ │ │ |
| │ │ ▼ │ |
| │ 6. Dağıtım ◄──── 3. Veri Hazırlama │ |
| │ ▲ │ │ |
| │ │ ▼ │ |
| │ 5. Değerlendirme ◄── 4. Modelleme │ |
| │ │ |
| └─────────────────────────────────────────────────────────────┘ |
| ``` |
|
|
| --- |
|
|
| # FAZ 1: İŞ ANLAYIŞI (Business Understanding) |
|
|
| ## 1.1. İş Problemi |
|
|
| Bitcoin ağında kara para aklama (Anti-Money Laundering — AML) tespiti, finansal düzenleyiciler ve kripto para borsaları için kritik bir problemdir. Yasa dışı işlemlerin ağdaki toplam işlemlere oranı düşüktür (~%10), ancak her bir kaçırılan yasa dışı işlem milyonlarca dolarlık zarara ve yasal yaptırımlara yol açabilir. |
|
|
| ## 1.2. Araştırma Problemi |
|
|
| Mevcut çalışmalar, makine öğrenmesi modellerini eğitirken veriyi ya **rastgele** ya da **sabit bir takvim noktasından** (ör. Timestep 34) böler. Bu yaklaşımların ikisi de ciddi sorunlar taşır: |
|
|
| - **Rastgele bölme:** Gelecek bilgisini eğitim setine sızdırır (data leakage) → yapay yüksek performans |
| - **Sabit kronolojik bölme:** Ağdaki yapısal krizleri (dark market kapanması, düzenleyici baskınlar) görmezden gelir → gerçekçi olmayan değerlendirme |
|
|
| ## 1.3. Hipotezler |
|
|
| | # | Hipotez | Ölçüm | |
| |---|---------|-------| |
| | H1 | Topolojik kırılma noktasından bölme, kronolojik bölmeden daha iyi sonuç verir | Illicit F1 farkı | |
| | H2 | Rastgele bölme performansı yapay olarak şişirir | Walk-forward'a göre sapma (%) | |
|
|
| ## 1.4. Başarı Kriterleri |
|
|
| | Kriter | Eşik | |
| |--------|------| |
| | Topolojik kırılma F1'i kronolojik F1'den yüksek | En az 3/4 modelde | |
| | Topolojik kırılma walk-forward sapması | <%10 (dürüstlük bandı içinde) | |
| | Rastgele bölme şişme oranı | >%10 (şişme kanıtı) | |
|
|
| ## 1.5. Proje Planı |
|
|
| | Aşama | CRISP-DM Fazı | İçerik | |
| |-------|--------------|--------| |
| | 1 | İş Anlayışı | Problem tanımı, hipotezler, literatür taraması | |
| | 2 | Veri Anlayışı | Elliptic veri seti inceleme, olay tipi keşfi | |
| | 3 | Veri Hazırlama | Temizleme, özellik mühendisliği, graf yapısı | |
| | 4 | Modelleme | 4 model × 5 strateji = 20 deney + GraphSAGE | |
| | 5 | Değerlendirme | Walk-forward, dürüstlük, sızıntı testleri | |
| | 6 | Dağıtım | HF Hub repo, tekrarlanabilir scriptler, rapor | |
|
|
| --- |
|
|
| # FAZ 2: VERİ ANLAYIŞI (Data Understanding) |
|
|
| ## 2.1. Veri Kaynağı |
|
|
| **Elliptic Bitcoin Dataset** (Weber et al., KDD 2019) |
| - **Kaynak:** [Kaggle](https://www.kaggle.com/datasets/ellipticco/elliptic-data-set) |
| - **Yayın:** "Anti-Money Laundering in Bitcoin: Experimenting with Graph Convolutional Networks for Financial Forensics" |
| - **Atıf sayısı:** 500+ (2019–2026) |
|
|
| ## 2.2. Veri Seti Yapısı |
|
|
| | Dosya | Boyut | İçerik | |
| |-------|-------|--------| |
| | `elliptic_txs_features.csv` | 657.7 MB | 203,769 düğüm × 167 sütun (txId + timestep + 165 özellik) | |
| | `elliptic_txs_classes.csv` | 3.2 MB | 203,769 düğüm × 2 sütun (txId, class: 1/2/unknown) | |
| | `elliptic_txs_edgelist.csv` | 4.3 MB | 234,355 kenar × 2 sütun (txId1, txId2) | |
|
|
| ## 2.3. Temel İstatistikler |
|
|
| | Metrik | Değer | |
| |--------|-------| |
| | Toplam düğüm | 203,769 | |
| | Etiketli düğüm | 46,564 (%22.8) | |
| | İllicit (kara para) | 4,545 (%9.8 etiketliler içinde) | |
| | Licit (yasal) | 42,019 (%90.2) | |
| | Etiketsiz | 157,205 (%77.2) | |
| | Kenar sayısı | 234,355 (yönlü) | |
| | Özellik sayısı | 165 (94 local + 71 aggregated) | |
| | Zaman adımları | 49 (~2 haftalık aralıklar) | |
| | Ortalama düğüm derecesi | ~2.3 | |
|
|
| ## 2.4. Veri Kalitesi Denetimi |
|
|
| | Sorun | Tespit | Etki | |
| |-------|--------|------| |
| | Eksik değer (NaN) | 0 | Yok | |
| | Sonsuz değer (Inf) | 0 | Yok | |
| | Outlier hücre oranı | %16.74 (IQR yöntemi) | Orta — clipping gerekli | |
| | Sınıf dengesizliği | %9.8 illicit vs %90.2 licit | Yüksek — SMOTE/class_weight gerekli | |
| | Etiketsiz veri | %77.2 | Eğitim seti sınırlı | |
| | Anonim özellikler | 165 özelliğin hiçbirinin ismi yok (PCA uygulanmış) | Özellik yorumlaması sınırlı | |
| |
| ## 2.5. Zamansal Analiz — 5 Olay Tipi Keşfi |
| |
| Veri setinin zamansal yapısını analiz ettiğimizde, timestep'leri 5 farklı olay tipine ayırdık: |
| |
| | Olay Tipi | Timestep'ler | İllicit Oranı | İşlem Sayısı | Açıklama | |
| |-----------|-------------|---------------|-------------|----------| |
| | 🔴 Dark Market Zirvesi | 9,11,13,15,16,20,25,26,28,29,32 | **%26.5** | 8,223 | Kara para aklamanın zirve yaptığı dönemler | |
| | ⚫ Kapanma (Shutdown) | 43 | %1.8 | 1,370 | Bilinen dark market kapanması | |
| | 🔵 Kapanma Sonrası | 44,45,46 | %0.9 | 3,524 | Suçluların sessizleştiği dönem | |
| | 🟠 Toparlanma | 47,48,49 | %6.4 | 1,793 | Yeni aktörlerin girişi | |
| | 🟢 Normal Aktivite | Geri kalan 31 TS | %7.0 | 31,654 | Standart ağ davranışı | |
| |
| **Kritik gözlem:** Dark market zirvesinde illicit oranı **%26.5** iken, kapanma sonrası **%0.9**'a düşüyor — **30 kat fark.** Bu, distribution shift'in somut kanıtıdır. |
| |
| ## 2.6. Topolojik Metrikler |
| |
| 49 timestep için NetworkX ile hesaplanan ağ metrikleri: |
| |
| | Metrik | Min | Max | Ortalama | Yorum | |
| |--------|-----|-----|----------|-------| |
| | Düğüm sayısı | 485 | 7,140 | 4,159 | Ağ boyutu çok değişken | |
| | Kenar sayısı | 504 | 8,493 | 4,782 | Kenarlar düğümlerle paralel | |
| | Yoğunluk (density) | 0.00017 | 0.00214 | 0.00047 | Çok seyrek graf | |
| | Bağlantılılık (CC ratio) | 0.035 | 0.221 | 0.098 | Parçalı yapı | |
| | Bileşen sayısı | 94 | 2,458 | 830 | Çok sayıda izole küme | |
| | Ortalama derece | 1.00 | 2.38 | 1.62 | Düşük bağlantılılık | |
| |
| **Keşif:** Ağ metrikleri zamanla dramatik değişiyor — bu, sabit bölme noktasının yetersizliğinin topolojik kanıtı. |
| |
| --- |
| |
| # FAZ 3: VERİ HAZIRLAMA (Data Preparation) |
| |
| ## 3.1. Veri Temizleme |
| |
| | Adım | İşlem | Etki | |
| |------|-------|------| |
| | NaN/Inf temizleme | `nan_to_num(X, nan=0.0, posinf=0.0, neginf=0.0)` | 0 hücre etkilendi | |
| | IQR outlier clipping | `clip(X, Q1-1.5×IQR, Q3+1.5×IQR)` | %16.74 hücre kırpıldı | |
| | Düşük varyans çıkarma | `var > 1e-6` filtresi | 47 özellik çıkarıldı (165 → 118) | |
| |
| ## 3.2. Ön İşleme Pipeline Karşılaştırması |
| |
| 6 farklı pipeline'ı kronolojik bölme (TS ≤ 39 train, > 39 test) üzerinde LightGBM ile test ettik: |
| |
| | # | Pipeline | Illicit F1 | Ham'a Göre Fark | |
| |---|----------|-----------|-----------------| |
| | 1 | Ham Veri | 0.7511 | — | |
| | 2 | StandardScaler | 0.7467 | -0.0044 | |
| | 3 | RobustScaler | 0.7450 | -0.0061 | |
| | 4 | Clip + RobustScaler | 0.7504 | -0.0007 | |
| | 5 | **Clip + VarFilter + RobustScaler** | **0.7605** | **+0.0094** | |
| | 6 | Clip + RobustScaler + SMOTE | 0.7514 | +0.0003 | |
| |
| **Seçilen pipeline:** Clip + VarFilter + RobustScaler (F1=0.7605) |
| |
| **Önemli bulgu:** Pipeline etkisi (+0.9 puan) bölme stratejisi etkisinin (~15 puan) yanında ihmal edilebilir. Bu, **veri bölme kararının ön işlemeden çok daha kritik olduğunu** gösterir. |
| |
| ## 3.3. Sınıf Dengesizliği Yönetimi |
| |
| | Yöntem | Uygulama | Nerede | |
| |--------|----------|-------| |
| | SMOTE | Eğitim setinde sentetik azınlık örnekleri | Tabular modeller (Elliptic run_all.py) | |
| | Class weight | `scale_pos_weight` / `balanced_subsample` | Tüm modellerde | |
| | Threshold optimizasyonu | 0.1–0.9 aralığında F1 maksimize eden eşik arama | Tüm modellerde | |
|
|
| ## 3.4. Graf Verisi Hazırlama (GraphSAGE için) |
|
|
| | İşlem | Detay | |
| |-------|-------| |
| | Etiketli düğümler arası kenarlar | 36,624 kenar → 73,248 (undirected) | |
| | Özellik normalizasyonu | RobustScaler (tüm etiketli düğümler üzerinde) | |
| | PyG Data nesnesi | `Data(x=X_tensor, edge_index=edge_index, y=y_tensor)` | |
| | Inductive training | Test kenarları eğitimde kullanılmaz | |
|
|
| ## 3.5. Bölme Stratejileri |
|
|
| | # | Strateji | Train | Test | Train İllicit | Test İllicit | |
| |---|----------|-------|------|---------------|--------------| |
| | 1 | Rastgele (%80/%20) | 37,251 | 9,313 | 3,636 | 909 | |
| | 2 | Kronolojik (TS ≤ 39) | 35,380 | 11,184 | 3,909 | 636 | |
| | 3 | **Topolojik Kırılma (TS < 29)** | **25,207** | **21,357** | **2,542** | **2,003** | |
| | 4 | Kayan Pencere (son 10 TS test) | 35,380 | 11,184 | 3,909 | 636 | |
| | 5 | Düşmanca-Kriz | 38,341 | 8,223 | 2,370 | 2,175 | |
|
|
| **Not:** Topolojik kırılma daha az eğitim verisi kullanıyor (25K vs 35K) — buna rağmen daha iyi sonuç veriyor. |
|
|
| --- |
|
|
| # FAZ 4: MODELLEME (Modeling) |
|
|
| ## 4.1. Topolojik Kırılma Noktası Tespit Algoritması |
|
|
| Ağın "matematiksel sağlığını" her timestep için ölçen etiket-görmez bir algoritma geliştirdik: |
|
|
| ``` |
| Sağlık(t) = [norm(yoğunluk) + norm(bağlantılılık) + (1 - norm(bileşen_sayısı))] / 3 |
| Kırılma = argmin_t [Sağlık(t) - Sağlık(t-1)] |
| ``` |
|
|
| **Sonuç:** Algoritma hiçbir etikete bakmadan **Timestep 29'u** tespit etti — dark market aktivitesinin zirve yaptığı dönemin (%28-30 illicit oran) tam ortası. |
|
|
| ## 4.2. Model Mimarileri |
|
|
| ### Tabular Modeller |
|
|
| | Model | Hiperparametreler | Özellik | |
| |-------|-------------------|---------| |
| | **LightGBM** | n_estimators=500, max_depth=12, lr=0.05, num_leaves=63, subsample=0.8 | Hız ve performans dengesi | |
| | **Random Forest** | n_estimators=500, max_depth=20, min_samples_leaf=5, class_weight=balanced_subsample | Elliptic'te en güçlü baseline | |
| | **XGBoost** | n_estimators=500, max_depth=10, lr=0.05, subsample=0.8, min_child_weight=5 | Tabular SOTA | |
| |
| ### Graf Sinir Ağı |
| |
| | Parametre | Değer | |
| |-----------|-------| |
| | **Model** | GraphSAGE (Hamilton et al., 2017) | |
| | **Katman** | 3 × SAGEConv (mean aggregation) | |
| | **Gizli boyut** | 128 | |
| | **Dropout** | 0.3 | |
| | **BatchNorm** | Her katmandan sonra | |
| | **Optimizer** | Adam (lr=0.005, weight_decay=5e-4) | |
| | **Scheduler** | CosineAnnealingLR | |
| | **Epoch** | 200 (early stopping patience=30) | |
| | **Training** | Strict inductive — test kenarları eğitimde yok | |
|
|
| ## 4.3. Deney Sonuçları: 5 Strateji × 4 Model = 20 Deney |
|
|
| ### Illicit F1 Score |
|
|
| | Model | Rastgele | Kronolojik | **Topolojik Kırılma** | Kayan Pencere | Düşmanca-Kriz | |
| |-------|---------|-----------|---------------------|--------------|--------------| |
| | LightGBM | 0.963 | 0.764 | **0.873** | 0.764 | 0.978 | |
| | Random Forest | 0.945 | 0.730 | **0.884** | 0.730 | 0.970 | |
| | XGBoost | 0.967 | 0.750 | **0.869** | 0.750 | 0.977 | |
| | GraphSAGE | 0.932 | 0.702 | 0.676 | 0.718 | 0.958 | |
|
|
| ### Precision / Recall / AUROC |
|
|
| | Model | Strateji | F1 | Precision | Recall | AUROC | |
| |-------|----------|-----|-----------|--------|-------| |
| | LightGBM | **Topolojik** | **0.873** | 0.947 | **0.809** | 0.970 | |
| | Random Forest | **Topolojik** | **0.884** | 0.973 | **0.809** | 0.965 | |
| | XGBoost | **Topolojik** | **0.869** | 0.936 | **0.811** | 0.968 | |
| | GraphSAGE | **Topolojik** | 0.676 | 0.599 | **0.776** | 0.938 | |
|
|
| ### Hipotez 1 Sonucu: ✅ DOĞRULANDI |
|
|
| | Model | Topolojik F1 | Kronolojik F1 | **Fark** | |
| |-------|-------------|--------------|---------| |
| | Random Forest | **0.884** | 0.730 | **+15.4 puan** | |
| | LightGBM | **0.873** | 0.764 | **+10.9 puan** | |
| | XGBoost | **0.869** | 0.750 | **+11.9 puan** | |
| | GraphSAGE | 0.676 | 0.702 | -2.6 puan | |
|
|
| 3/4 modelde topolojik kırılma bölmesi kronolojik bölmeyi geçti. Başarı kriteri karşılandı. |
|
|
| --- |
|
|
| # FAZ 5: DEĞERLENDİRME (Evaluation) |
|
|
| ## 5.1. Walk-Forward Validasyon (Gerçek Dünya Simülasyonu) |
|
|
| Her 3 timestep'lik pencereyi sırayla test eden walk-forward validasyon, modelin gerçek dünyada nasıl performans göstereceğinin en güvenilir tahminidir. |
|
|
| | Model | Walk-Forward F1 | |
| |-------|----------------| |
| | XGBoost | **0.855** | |
| | Random Forest | **0.836** | |
| | LightGBM | **0.829** | |
| | GraphSAGE | **0.786** | |
|
|
| ## 5.2. Dürüstlük Testi (Hipotez 2) |
|
|
| Her stratejinin walk-forward referansına sapması: |
|
|
| | Strateji | Walk-Forward'a Sapma | Durum | Yorum | |
| |----------|---------------------|-------|-------| |
| | **Topolojik Kırılma** | **-%0.4** | ✅ DÜRÜST | Gerçek dünyaya neredeyse birebir yakın | |
| | Kronolojik | -%10.9 | ⚠️ PESİMİST | Gerçeği olduğundan kötü gösteriyor | |
| | Kayan Pencere | -%10.4 | ⚠️ PESİMİST | Kronolojikle benzer | |
| | Rastgele | **+%15.2** | 🔴 ŞİŞME | Gerçek dünyada olmayan performans | |
| | Düşmanca-Kriz | **+%17.5** | 🔴 ŞİŞME | En fazla şişiren strateji | |
|
|
| **Hipotez 2 Sonucu: ✅ DOĞRULANDI** — Rastgele bölme %15.2 şişme gösteriyor. Başarı kriteri karşılandı. |
|
|
| ## 5.3. Kanıt Mekanizması (6 Bağımsız Test) |
|
|
| ### Test 1: Walk-Forward Performans Şişmesi |
|
|
| | Ölçüm | Değer | |
| |-------|-------| |
| | Random split F1 | 0.965 | |
| | Walk-forward ortalama F1 | 0.796 | |
| | **Şişme** | **%21.2** | |
|
|
| ### Test 2: Kriz Çöküşü |
|
|
| Walk-forward'da dark market kapanması sırasında (TS 43-45): |
|
|
| | Dönem | F1 | |
| |-------|-----| |
| | Normal dönem (TS 10-12) | 0.972 | |
| | Kriz (TS 43-45) | **0.066** | |
| | Kapanma sonrası (TS 46-48) | 0.033 | |
|
|
| ### Test 3: Rastgele Etiket Testi |
|
|
| Etiketler rastgele karıştırıldığında bile random split skor üretiyor: |
|
|
| | Durum | Random Split F1 | Temporal Split F1 | Oran | |
| |-------|----------------|------------------|------| |
| | Gerçek etiket | 0.965 | 0.738 | 1.3x | |
| | **Rastgele etiket** | **0.120** | **0.031** | **3.9x** | |
|
|
| ### Test 4: Sızıntı Haritası |
|
|
| | Ölçüm | Random Split | Temporal Split | Fark | |
| |-------|-------------|----------------|------| |
| | Komşuluk sızıntı oranı | **0.502** | **0.000** | **502x** | |
|
|
| ### Test 5: Yapı Duyarlılığı |
|
|
| | Özellik Seti | Random F1 | Temporal F1 | Fark | |
| |-------------|----------|------------|------| |
| | Local (94) | 0.943 | 0.669 | +0.274 | |
| | Aggregated (71) | 0.902 | 0.627 | +0.275 | |
| | Tümü (165) | 0.965 | 0.738 | +0.227 | |
| | **Agg. ek katkısı** | **+0.022** | **+0.069** | **3.1x** | |
|
|
| ### Test 6: Dürüstlük — Kendi Yöntemimizi Sorgulama |
|
|
| | Strateji | Sapma | Dürüstlük | |
| |----------|-------|-----------| |
| | Rastgele | +%20.9 | 🔴 Şişiriyor | |
| | **Topolojik Kırılma** | **+%8.0** → **-%0.4** (güncel) | ✅ Dürüst | |
| | Kronolojik | -%6.7 | ✅ Dürüst (pesimist) | |
|
|
| ## 5.4. Literatür Karşılaştırması |
|
|
| ### Elliptic Veri Setinde Yayınlanmış Tüm Sonuçlar |
|
|
| | Çalışma | Model | Illicit F1 | Protokol | Seeds | |
| |---------|-------|-----------|----------|-------| |
| | Weber et al., 2019 (KDD) | Random Forest | 0.796 | Transductive | 1 | |
| | Weber et al., 2019 | GCN | 0.628 | Transductive | 1 | |
| | Pareja et al., 2020 (AAAI) | EvolveGCN-O | ~0.770 | Transductive | 1 | |
| | Alarab et al., 2020 | XGBoost | ~0.815 | Transductive | 1 | |
| | Lo et al., 2023 (Appl. Intell.) | Inspection-L | 0.828 | Transductive | 3 | |
| | **Luu, 2026** | **Random Forest** | **0.821±0.003** | **Strict Inductive** | **10** | |
| | Luu, 2026 | GraphSAGE | 0.688±0.016 | Strict Inductive | 10 | |
| | **Bizim** | **Random Forest** | **0.884** | **Strict Inductive** | 1 | |
| | **Bizim** | **LightGBM** | **0.873** | **Strict Inductive** | 1 | |
| | **Bizim** | **XGBoost** | **0.869** | **Strict Inductive** | 1 | |
|
|
| ### Karşılaştırma |
|
|
| | Karşılaştırma | Fark | Neden | |
| |--------------|------|-------| |
| | Bizim RF vs Weber RF | **+8.8 puan** | Daha akıllı bölme noktası + SMOTE + threshold opt | |
| | Bizim RF vs Luu RF | **+6.3 puan** | TS29 bölmesi daha temiz sınır, daha az eğitim verisiyle daha iyi | |
| | Bizim RF vs Inspection-L | **+5.6 puan** | Inspection-L transductive + SSL, biz strict-inductive ham özelliklerle | |
|
|
| ## 5.5. Başarı Kriterlerinin Değerlendirmesi |
|
|
| | Kriter | Hedef | Gerçekleşen | Durum | |
| |--------|-------|-------------|-------| |
| | Topolojik > Kronolojik (F1) | ≥3/4 modelde | 3/4 modelde (+10.9 ile +15.4 puan) | ✅ Karşılandı | |
| | Topolojik WF sapması | <%10 | **-%0.4** | ✅ Karşılandı (mükemmel) | |
| | Rastgele bölme şişmesi | >%10 | **+%15.2** | ✅ Karşılandı | |
| | Literatürden iyi | RF F1 > 0.821 (Luu) | **RF F1 = 0.884** | ✅ Karşılandı (+6.3 puan) | |
|
|
| --- |
|
|
| # FAZ 6: DAĞITIM (Deployment) |
|
|
| ## 6.1. Tekrarlanabilirlik |
|
|
| Tüm deneyler tek bir komutla tekrarlanabilir: |
|
|
| ```bash |
| pip install pandas numpy scikit-learn matplotlib seaborn lightgbm xgboost networkx scipy imbalanced-learn torch torch-geometric |
| python run_all.py --data_dir ./dataset |
| ``` |
|
|
| Çalışma süresi: ~40 dakika (CPU). |
|
|
| ## 6.2. Depo Yapısı |
|
|
| ``` |
| Moco22/elliptic-event-aware-splitting/ |
| ├── README.md # Proje açıklaması |
| ├── project_report.md # Önceki rapor |
| ├── crisp_dm_report.md # ★ Bu rapor (CRISP-DM) |
| ├── run_all.py # ★ Tek komutla tüm deneyler (GraphSAGE dahil) |
| ├── data_audit.py # Veri denetimi ve pipeline karşılaştırması |
| ├── dataset/ # Elliptic Bitcoin Dataset (3 CSV) |
| ├── topological_breakpoint.py # Ana deney scripti |
| ├── proof_mechanism.py # Kanıt testleri (walk-forward, sızıntı, vb.) |
| ├── honesty_test.py # Dürüstlük testi |
| ├── leakage_map.py # Sızıntı haritası |
| ├── peak_descent.py # Tepe-düşüş kriz tespit algoritması |
| ├── prepare_for_gephi.py # Gephi görselleştirme verisi |
| ├── elliptic_event_aware.py # Olay-farkında bölme deneyleri |
| ├── output/ # ★ run_all.py çıktıları (sonuçlar + figürler) |
| ├── topo_figures/ # Kırılma noktası figürleri |
| ├── proof_figures/ # Kanıt mekanizması figürleri |
| ├── figures/ # Olay analizi figürleri |
| ├── topo_results/ # Önceki deney sonuçları |
| ├── proof_results/ # Kanıt test sonuçları |
| └── results/ # Olay analizi sonuçları |
| ``` |
|
|
| ## 6.3. Çıktılar |
|
|
| ### Sayısal Sonuçlar |
| - `output/results/all_experiment_results.csv` — 20 deney (4 model × 5 strateji) |
| - `output/results/topological_metrics.csv` — 49 timestep ağ metrikleri |
| - `output/results/summary.json` — Tam özet (kırılma noktası, walk-forward, dürüstlük) |
| - `proof_results/` — Kanıt test sonuçları (walk-forward, sızıntı, dürüstlük) |
|
|
| ### Figürler |
| - `output/figures/fig1_breakpoint.png` — Kırılma noktası tespiti (3 panel) |
| - `output/figures/fig2_f1_comparison.png` — F1 strateji karşılaştırması |
| - `output/figures/fig3_pipeline_comparison.png` — Pipeline karşılaştırması |
| - `output/figures/fig4_honesty.png` — Walk-forward dürüstlük ısı haritası |
| - `output/figures/fig5_inflation.png` — Performans şişmesi haritası |
| - `proof_figures/` — Kanıt figürleri (7 adet) |
| - `topo_figures/` — Kırılma noktası figürleri (6 adet) |
| - `figures/` — Olay analizi figürleri (8 adet) |
|
|
| ## 6.4. Literatür |
|
|
| 12 referans makalenin tamamı için bkz. README.md "Ön Literatür Taraması" bölümü. |
|
|
| --- |
|
|
| # SONUÇ VE KATKILAR |
|
|
| ## Ana Bulgular |
|
|
| 1. **Rastgele bölme %15.2 performans şişmesi yaratıyor** — walk-forward validasyonla kanıtlandı. |
|
|
| 2. **Topolojik kırılma bölmesi kronolojik bölmeyi +10.9 ile +15.4 puan F1 ile geçiyor** — 3/4 modelde tutarlı. |
|
|
| 3. **Topolojik kırılma walk-forward'a -%0.4 sapmayla en dürüst strateji** — ne şişiriyor ne pesimist. |
|
|
| 4. **Komşuluk sızıntısı 502 kat farkla kanıtlandı** — random split'te %50.2, temporal split'te %0. |
|
|
| 5. **RF F1=0.884 literatürdeki en iyi strict-inductive sonucu +6.3 puan geçiyor** (Luu 2026: RF F1=0.821). |
|
|
| 6. **Bölme stratejisinin etkisi (~15 puan), model seçiminin etkisinden (~5 puan) ve ön işleme etkisinden (~1 puan) çok daha büyük.** |
|
|
| ## Literatüre Katkı |
|
|
| > **Veri bölme noktasını, ağın topolojik sağlığının çöktüğü kriz anına göre belirleyen ilk çalışma.** |
|
|
| ## CRISP-DM Döngüsünün Tamamlanması |
|
|
| | Faz | Durum | Anahtar Çıktı | |
| |-----|-------|---------------| |
| | 1. İş Anlayışı | ✅ | 2 hipotez, 4 başarı kriteri tanımlandı | |
| | 2. Veri Anlayışı | ✅ | 5 olay tipi keşfedildi, %16.7 outlier tespit edildi | |
| | 3. Veri Hazırlama | ✅ | 6 pipeline karşılaştırıldı, graf verisi hazırlandı | |
| | 4. Modelleme | ✅ | 20 deney (4 model × 5 strateji) koşuldu | |
| | 5. Değerlendirme | ✅ | 6 kanıt testi, walk-forward, literatür karşılaştırması | |
| | 6. Dağıtım | ✅ | HF Hub repo, tekrarlanabilir script, CRISP-DM raporu | |
|
|
| **Tüm başarı kriterleri karşılandı. Her iki hipotez de doğrulandı.** |
|
|