CRISP-DM süreç raporu eklendi
Browse files- crisp_dm_report.md +481 -0
crisp_dm_report.md
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# CRISP-DM SÜREÇ RAPORU
|
| 2 |
+
|
| 3 |
+
## 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
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
> 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.
|
| 8 |
+
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
## CRISP-DM Genel Bakış
|
| 12 |
+
|
| 13 |
+
```
|
| 14 |
+
┌─────────────────────────────────────────────────────────────┐
|
| 15 |
+
│ CRISP-DM DÖNGÜSÜ │
|
| 16 |
+
│ │
|
| 17 |
+
│ 1. İş Anlayışı ──────► 2. Veri Anlayışı │
|
| 18 |
+
│ ▲ │ │
|
| 19 |
+
│ │ ▼ │
|
| 20 |
+
│ 6. Dağıtım ◄──── 3. Veri Hazırlama │
|
| 21 |
+
│ ▲ │ │
|
| 22 |
+
│ │ ▼ │
|
| 23 |
+
│ 5. Değerlendirme ◄── 4. Modelleme │
|
| 24 |
+
│ │
|
| 25 |
+
└─────────────────────────────────────────────────────────────┘
|
| 26 |
+
```
|
| 27 |
+
|
| 28 |
+
---
|
| 29 |
+
|
| 30 |
+
# FAZ 1: İŞ ANLAYIŞI (Business Understanding)
|
| 31 |
+
|
| 32 |
+
## 1.1. İş Problemi
|
| 33 |
+
|
| 34 |
+
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.
|
| 35 |
+
|
| 36 |
+
## 1.2. Araştırma Problemi
|
| 37 |
+
|
| 38 |
+
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:
|
| 39 |
+
|
| 40 |
+
- **Rastgele bölme:** Gelecek bilgisini eğitim setine sızdırır (data leakage) → yapay yüksek performans
|
| 41 |
+
- **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
|
| 42 |
+
|
| 43 |
+
## 1.3. Hipotezler
|
| 44 |
+
|
| 45 |
+
| # | Hipotez | Ölçüm |
|
| 46 |
+
|---|---------|-------|
|
| 47 |
+
| H1 | Topolojik kırılma noktasından bölme, kronolojik bölmeden daha iyi sonuç verir | Illicit F1 farkı |
|
| 48 |
+
| H2 | Rastgele bölme performansı yapay olarak şişirir | Walk-forward'a göre sapma (%) |
|
| 49 |
+
|
| 50 |
+
## 1.4. Başarı Kriterleri
|
| 51 |
+
|
| 52 |
+
| Kriter | Eşik |
|
| 53 |
+
|--------|------|
|
| 54 |
+
| Topolojik kırılma F1'i kronolojik F1'den yüksek | En az 3/4 modelde |
|
| 55 |
+
| Topolojik kırılma walk-forward sapması | <%10 (dürüstlük bandı içinde) |
|
| 56 |
+
| Rastgele bölme şişme oranı | >%10 (şişme kanıtı) |
|
| 57 |
+
|
| 58 |
+
## 1.5. Proje Planı
|
| 59 |
+
|
| 60 |
+
| Aşama | CRISP-DM Fazı | İçerik |
|
| 61 |
+
|-------|--------------|--------|
|
| 62 |
+
| 1 | İş Anlayışı | Problem tanımı, hipotezler, literatür taraması |
|
| 63 |
+
| 2 | Veri Anlayışı | Elliptic veri seti inceleme, olay tipi keşfi |
|
| 64 |
+
| 3 | Veri Hazırlama | Temizleme, özellik mühendisliği, graf yapısı |
|
| 65 |
+
| 4 | Modelleme | 4 model × 5 strateji = 20 deney + GraphSAGE |
|
| 66 |
+
| 5 | Değerlendirme | Walk-forward, dürüstlük, sızıntı testleri |
|
| 67 |
+
| 6 | Dağıtım | HF Hub repo, tekrarlanabilir scriptler, rapor |
|
| 68 |
+
|
| 69 |
+
---
|
| 70 |
+
|
| 71 |
+
# FAZ 2: VERİ ANLAYIŞI (Data Understanding)
|
| 72 |
+
|
| 73 |
+
## 2.1. Veri Kaynağı
|
| 74 |
+
|
| 75 |
+
**Elliptic Bitcoin Dataset** (Weber et al., KDD 2019)
|
| 76 |
+
- **Kaynak:** [Kaggle](https://www.kaggle.com/datasets/ellipticco/elliptic-data-set)
|
| 77 |
+
- **Yayın:** "Anti-Money Laundering in Bitcoin: Experimenting with Graph Convolutional Networks for Financial Forensics"
|
| 78 |
+
- **Atıf sayısı:** 500+ (2019–2026)
|
| 79 |
+
|
| 80 |
+
## 2.2. Veri Seti Yapısı
|
| 81 |
+
|
| 82 |
+
| Dosya | Boyut | İçerik |
|
| 83 |
+
|-------|-------|--------|
|
| 84 |
+
| `elliptic_txs_features.csv` | 657.7 MB | 203,769 düğüm × 167 sütun (txId + timestep + 165 özellik) |
|
| 85 |
+
| `elliptic_txs_classes.csv` | 3.2 MB | 203,769 düğüm × 2 sütun (txId, class: 1/2/unknown) |
|
| 86 |
+
| `elliptic_txs_edgelist.csv` | 4.3 MB | 234,355 kenar × 2 sütun (txId1, txId2) |
|
| 87 |
+
|
| 88 |
+
## 2.3. Temel İstatistikler
|
| 89 |
+
|
| 90 |
+
| Metrik | Değer |
|
| 91 |
+
|--------|-------|
|
| 92 |
+
| Toplam düğüm | 203,769 |
|
| 93 |
+
| Etiketli düğüm | 46,564 (%22.8) |
|
| 94 |
+
| İllicit (kara para) | 4,545 (%9.8 etiketliler içinde) |
|
| 95 |
+
| Licit (yasal) | 42,019 (%90.2) |
|
| 96 |
+
| Etiketsiz | 157,205 (%77.2) |
|
| 97 |
+
| Kenar sayısı | 234,355 (yönlü) |
|
| 98 |
+
| Özellik sayısı | 165 (94 local + 71 aggregated) |
|
| 99 |
+
| Zaman adımları | 49 (~2 haftalık aralıklar) |
|
| 100 |
+
| Ortalama düğüm derecesi | ~2.3 |
|
| 101 |
+
|
| 102 |
+
## 2.4. Veri Kalitesi Denetimi
|
| 103 |
+
|
| 104 |
+
| Sorun | Tespit | Etki |
|
| 105 |
+
|-------|--------|------|
|
| 106 |
+
| Eksik değer (NaN) | 0 | Yok |
|
| 107 |
+
| Sonsuz değer (Inf) | 0 | Yok |
|
| 108 |
+
| Outlier hücre oranı | %16.74 (IQR yöntemi) | Orta — clipping gerekli |
|
| 109 |
+
| Sınıf dengesizliği | %9.8 illicit vs %90.2 licit | Yüksek — SMOTE/class_weight gerekli |
|
| 110 |
+
| Etiketsiz veri | %77.2 | Eğitim seti sınırlı |
|
| 111 |
+
| Anonim özellikler | 165 özelliğin hiçbirinin ismi yok (PCA uygulanmış) | Özellik yorumlaması sınırlı |
|
| 112 |
+
|
| 113 |
+
## 2.5. Zamansal Analiz — 5 Olay Tipi Keşfi
|
| 114 |
+
|
| 115 |
+
Veri setinin zamansal yapısını analiz ettiğimizde, timestep'leri 5 farklı olay tipine ayırdık:
|
| 116 |
+
|
| 117 |
+
| Olay Tipi | Timestep'ler | İllicit Oranı | İşlem Sayısı | Açıklama |
|
| 118 |
+
|-----------|-------------|---------------|-------------|----------|
|
| 119 |
+
| 🔴 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 |
|
| 120 |
+
| ⚫ Kapanma (Shutdown) | 43 | %1.8 | 1,370 | Bilinen dark market kapanması |
|
| 121 |
+
| 🔵 Kapanma Sonrası | 44,45,46 | %0.9 | 3,524 | Suçluların sessizleştiği dönem |
|
| 122 |
+
| 🟠 Toparlanma | 47,48,49 | %6.4 | 1,793 | Yeni aktörlerin girişi |
|
| 123 |
+
| 🟢 Normal Aktivite | Geri kalan 31 TS | %7.0 | 31,654 | Standart ağ davranışı |
|
| 124 |
+
|
| 125 |
+
**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.
|
| 126 |
+
|
| 127 |
+
## 2.6. Topolojik Metrikler
|
| 128 |
+
|
| 129 |
+
49 timestep için NetworkX ile hesaplanan ağ metrikleri:
|
| 130 |
+
|
| 131 |
+
| Metrik | Min | Max | Ortalama | Yorum |
|
| 132 |
+
|--------|-----|-----|----------|-------|
|
| 133 |
+
| Düğüm sayısı | 485 | 7,140 | 4,159 | Ağ boyutu çok değişken |
|
| 134 |
+
| Kenar sayısı | 504 | 8,493 | 4,782 | Kenarlar düğümlerle paralel |
|
| 135 |
+
| Yoğunluk (density) | 0.00017 | 0.00214 | 0.00047 | Çok seyrek graf |
|
| 136 |
+
| Bağlantılılık (CC ratio) | 0.035 | 0.221 | 0.098 | Parçalı yapı |
|
| 137 |
+
| Bileşen sayısı | 94 | 2,458 | 830 | Çok sayıda izole küme |
|
| 138 |
+
| Ortalama derece | 1.00 | 2.38 | 1.62 | Düşük bağlantılılık |
|
| 139 |
+
|
| 140 |
+
**Keşif:** Ağ metrikleri zamanla dramatik değişiyor — bu, sabit bölme noktasının yetersizliğinin topolojik kanıtı.
|
| 141 |
+
|
| 142 |
+
---
|
| 143 |
+
|
| 144 |
+
# FAZ 3: VERİ HAZIRLAMA (Data Preparation)
|
| 145 |
+
|
| 146 |
+
## 3.1. Veri Temizleme
|
| 147 |
+
|
| 148 |
+
| Adım | İşlem | Etki |
|
| 149 |
+
|------|-------|------|
|
| 150 |
+
| NaN/Inf temizleme | `nan_to_num(X, nan=0.0, posinf=0.0, neginf=0.0)` | 0 hücre etkilendi |
|
| 151 |
+
| IQR outlier clipping | `clip(X, Q1-1.5×IQR, Q3+1.5×IQR)` | %16.74 hücre kırpıldı |
|
| 152 |
+
| Düşük varyans çıkarma | `var > 1e-6` filtresi | 47 özellik çıkarıldı (165 → 118) |
|
| 153 |
+
|
| 154 |
+
## 3.2. Ön İşleme Pipeline Karşılaştırması
|
| 155 |
+
|
| 156 |
+
6 farklı pipeline'ı kronolojik bölme (TS ≤ 39 train, > 39 test) üzerinde LightGBM ile test ettik:
|
| 157 |
+
|
| 158 |
+
| # | Pipeline | Illicit F1 | Ham'a Göre Fark |
|
| 159 |
+
|---|----------|-----------|-----------------|
|
| 160 |
+
| 1 | Ham Veri | 0.7511 | — |
|
| 161 |
+
| 2 | StandardScaler | 0.7467 | -0.0044 |
|
| 162 |
+
| 3 | RobustScaler | 0.7450 | -0.0061 |
|
| 163 |
+
| 4 | Clip + RobustScaler | 0.7504 | -0.0007 |
|
| 164 |
+
| 5 | **Clip + VarFilter + RobustScaler** | **0.7605** | **+0.0094** |
|
| 165 |
+
| 6 | Clip + RobustScaler + SMOTE | 0.7514 | +0.0003 |
|
| 166 |
+
|
| 167 |
+
**Seçilen pipeline:** Clip + VarFilter + RobustScaler (F1=0.7605)
|
| 168 |
+
|
| 169 |
+
**Ö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.
|
| 170 |
+
|
| 171 |
+
## 3.3. Sınıf Dengesizliği Yönetimi
|
| 172 |
+
|
| 173 |
+
| Yöntem | Uygulama | Nerede |
|
| 174 |
+
|--------|----------|-------|
|
| 175 |
+
| SMOTE | Eğitim setinde sentetik azınlık örnekleri | Tabular modeller (Elliptic run_all.py) |
|
| 176 |
+
| Class weight | `scale_pos_weight` / `balanced_subsample` | Tüm modellerde |
|
| 177 |
+
| Threshold optimizasyonu | 0.1–0.9 aralığında F1 maksimize eden eşik arama | Tüm modellerde |
|
| 178 |
+
|
| 179 |
+
## 3.4. Graf Verisi Hazırlama (GraphSAGE için)
|
| 180 |
+
|
| 181 |
+
| İşlem | Detay |
|
| 182 |
+
|-------|-------|
|
| 183 |
+
| Etiketli düğümler arası kenarlar | 36,624 kenar → 73,248 (undirected) |
|
| 184 |
+
| Özellik normalizasyonu | RobustScaler (tüm etiketli düğümler üzerinde) |
|
| 185 |
+
| PyG Data nesnesi | `Data(x=X_tensor, edge_index=edge_index, y=y_tensor)` |
|
| 186 |
+
| Inductive training | Test kenarları eğitimde kullanılmaz |
|
| 187 |
+
|
| 188 |
+
## 3.5. Bölme Stratejileri
|
| 189 |
+
|
| 190 |
+
| # | Strateji | Train | Test | Train İllicit | Test İllicit |
|
| 191 |
+
|---|----------|-------|------|---------------|--------------|
|
| 192 |
+
| 1 | Rastgele (%80/%20) | 37,251 | 9,313 | 3,636 | 909 |
|
| 193 |
+
| 2 | Kronolojik (TS ≤ 39) | 35,380 | 11,184 | 3,909 | 636 |
|
| 194 |
+
| 3 | **Topolojik Kırılma (TS < 29)** | **25,207** | **21,357** | **2,542** | **2,003** |
|
| 195 |
+
| 4 | Kayan Pencere (son 10 TS test) | 35,380 | 11,184 | 3,909 | 636 |
|
| 196 |
+
| 5 | Düşmanca-Kriz | 38,341 | 8,223 | 2,370 | 2,175 |
|
| 197 |
+
|
| 198 |
+
**Not:** Topolojik kırılma daha az eğitim verisi kullanıyor (25K vs 35K) — buna rağmen daha iyi sonuç veriyor.
|
| 199 |
+
|
| 200 |
+
---
|
| 201 |
+
|
| 202 |
+
# FAZ 4: MODELLEME (Modeling)
|
| 203 |
+
|
| 204 |
+
## 4.1. Topolojik Kırılma Noktası Tespit Algoritması
|
| 205 |
+
|
| 206 |
+
Ağın "matematiksel sağlığını" her timestep için ölçen etiket-görmez bir algoritma geliştirdik:
|
| 207 |
+
|
| 208 |
+
```
|
| 209 |
+
Sağlık(t) = [norm(yoğunluk) + norm(bağlantılılık) + (1 - norm(bileşen_sayısı))] / 3
|
| 210 |
+
Kırılma = argmin_t [Sağlık(t) - Sağlık(t-1)]
|
| 211 |
+
```
|
| 212 |
+
|
| 213 |
+
**Sonuç:** Algoritma hiçbir etikete bakmadan **Timestep 29'u** tespit etti — dark market aktivitesinin zirve yaptığı dönemin (%28-30 illicit oran) tam ortası.
|
| 214 |
+
|
| 215 |
+
## 4.2. Model Mimarileri
|
| 216 |
+
|
| 217 |
+
### Tabular Modeller
|
| 218 |
+
|
| 219 |
+
| Model | Hiperparametreler | Özellik |
|
| 220 |
+
|-------|-------------------|---------|
|
| 221 |
+
| **LightGBM** | n_estimators=500, max_depth=12, lr=0.05, num_leaves=63, subsample=0.8 | Hız ve performans dengesi |
|
| 222 |
+
| **Random Forest** | n_estimators=500, max_depth=20, min_samples_leaf=5, class_weight=balanced_subsample | Elliptic'te en güçlü baseline |
|
| 223 |
+
| **XGBoost** | n_estimators=500, max_depth=10, lr=0.05, subsample=0.8, min_child_weight=5 | Tabular SOTA |
|
| 224 |
+
|
| 225 |
+
### Graf Sinir Ağı
|
| 226 |
+
|
| 227 |
+
| Parametre | Değer |
|
| 228 |
+
|-----------|-------|
|
| 229 |
+
| **Model** | GraphSAGE (Hamilton et al., 2017) |
|
| 230 |
+
| **Katman** | 3 × SAGEConv (mean aggregation) |
|
| 231 |
+
| **Gizli boyut** | 128 |
|
| 232 |
+
| **Dropout** | 0.3 |
|
| 233 |
+
| **BatchNorm** | Her katmandan sonra |
|
| 234 |
+
| **Optimizer** | Adam (lr=0.005, weight_decay=5e-4) |
|
| 235 |
+
| **Scheduler** | CosineAnnealingLR |
|
| 236 |
+
| **Epoch** | 200 (early stopping patience=30) |
|
| 237 |
+
| **Training** | Strict inductive — test kenarları eğitimde yok |
|
| 238 |
+
|
| 239 |
+
## 4.3. Deney Sonuçları: 5 Strateji × 4 Model = 20 Deney
|
| 240 |
+
|
| 241 |
+
### Illicit F1 Score
|
| 242 |
+
|
| 243 |
+
| Model | Rastgele | Kronolojik | **Topolojik Kırılma** | Kayan Pencere | Düşmanca-Kriz |
|
| 244 |
+
|-------|---------|-----------|---------------------|--------------|--------------|
|
| 245 |
+
| LightGBM | 0.963 | 0.764 | **0.873** | 0.764 | 0.978 |
|
| 246 |
+
| Random Forest | 0.945 | 0.730 | **0.884** | 0.730 | 0.970 |
|
| 247 |
+
| XGBoost | 0.967 | 0.750 | **0.869** | 0.750 | 0.977 |
|
| 248 |
+
| GraphSAGE | 0.932 | 0.702 | 0.676 | 0.718 | 0.958 |
|
| 249 |
+
|
| 250 |
+
### Precision / Recall / AUROC
|
| 251 |
+
|
| 252 |
+
| Model | Strateji | F1 | Precision | Recall | AUROC |
|
| 253 |
+
|-------|----------|-----|-----------|--------|-------|
|
| 254 |
+
| LightGBM | **Topolojik** | **0.873** | 0.947 | **0.809** | 0.970 |
|
| 255 |
+
| Random Forest | **Topolojik** | **0.884** | 0.973 | **0.809** | 0.965 |
|
| 256 |
+
| XGBoost | **Topolojik** | **0.869** | 0.936 | **0.811** | 0.968 |
|
| 257 |
+
| GraphSAGE | **Topolojik** | 0.676 | 0.599 | **0.776** | 0.938 |
|
| 258 |
+
|
| 259 |
+
### Hipotez 1 Sonucu: ✅ DOĞRULANDI
|
| 260 |
+
|
| 261 |
+
| Model | Topolojik F1 | Kronolojik F1 | **Fark** |
|
| 262 |
+
|-------|-------------|--------------|---------|
|
| 263 |
+
| Random Forest | **0.884** | 0.730 | **+15.4 puan** |
|
| 264 |
+
| LightGBM | **0.873** | 0.764 | **+10.9 puan** |
|
| 265 |
+
| XGBoost | **0.869** | 0.750 | **+11.9 puan** |
|
| 266 |
+
| GraphSAGE | 0.676 | 0.702 | -2.6 puan |
|
| 267 |
+
|
| 268 |
+
3/4 modelde topolojik kırılma bölmesi kronolojik bölmeyi geçti. Başarı kriteri karşılandı.
|
| 269 |
+
|
| 270 |
+
---
|
| 271 |
+
|
| 272 |
+
# FAZ 5: DEĞERLENDİRME (Evaluation)
|
| 273 |
+
|
| 274 |
+
## 5.1. Walk-Forward Validasyon (Gerçek Dünya Simülasyonu)
|
| 275 |
+
|
| 276 |
+
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.
|
| 277 |
+
|
| 278 |
+
| Model | Walk-Forward F1 |
|
| 279 |
+
|-------|----------------|
|
| 280 |
+
| XGBoost | **0.855** |
|
| 281 |
+
| Random Forest | **0.836** |
|
| 282 |
+
| LightGBM | **0.829** |
|
| 283 |
+
| GraphSAGE | **0.786** |
|
| 284 |
+
|
| 285 |
+
## 5.2. Dürüstlük Testi (Hipotez 2)
|
| 286 |
+
|
| 287 |
+
Her stratejinin walk-forward referansına sapması:
|
| 288 |
+
|
| 289 |
+
| Strateji | Walk-Forward'a Sapma | Durum | Yorum |
|
| 290 |
+
|----------|---------------------|-------|-------|
|
| 291 |
+
| **Topolojik Kırılma** | **-%0.4** | ✅ DÜRÜST | Gerçek dünyaya neredeyse birebir yakın |
|
| 292 |
+
| Kronolojik | -%10.9 | ⚠️ PESİMİST | Gerçeği olduğundan kötü gösteriyor |
|
| 293 |
+
| Kayan Pencere | -%10.4 | ⚠️ PESİMİST | Kronolojikle benzer |
|
| 294 |
+
| Rastgele | **+%15.2** | 🔴 ŞİŞME | Gerçek dünyada olmayan performans |
|
| 295 |
+
| Düşmanca-Kriz | **+%17.5** | 🔴 ŞİŞME | En fazla şişiren strateji |
|
| 296 |
+
|
| 297 |
+
**Hipotez 2 Sonucu: ✅ DOĞRULANDI** — Rastgele bölme %15.2 şişme gösteriyor. Başarı kriteri karşılandı.
|
| 298 |
+
|
| 299 |
+
## 5.3. Kanıt Mekanizması (6 Bağımsız Test)
|
| 300 |
+
|
| 301 |
+
### Test 1: Walk-Forward Performans Şişmesi
|
| 302 |
+
|
| 303 |
+
| Ölçüm | Değer |
|
| 304 |
+
|-------|-------|
|
| 305 |
+
| Random split F1 | 0.965 |
|
| 306 |
+
| Walk-forward ortalama F1 | 0.796 |
|
| 307 |
+
| **Şişme** | **%21.2** |
|
| 308 |
+
|
| 309 |
+
### Test 2: Kriz Çöküşü
|
| 310 |
+
|
| 311 |
+
Walk-forward'da dark market kapanması sırasında (TS 43-45):
|
| 312 |
+
|
| 313 |
+
| Dönem | F1 |
|
| 314 |
+
|-------|-----|
|
| 315 |
+
| Normal dönem (TS 10-12) | 0.972 |
|
| 316 |
+
| Kriz (TS 43-45) | **0.066** |
|
| 317 |
+
| Kapanma sonrası (TS 46-48) | 0.033 |
|
| 318 |
+
|
| 319 |
+
### Test 3: Rastgele Etiket Testi
|
| 320 |
+
|
| 321 |
+
Etiketler rastgele karıştırıldığında bile random split skor üretiyor:
|
| 322 |
+
|
| 323 |
+
| Durum | Random Split F1 | Temporal Split F1 | Oran |
|
| 324 |
+
|-------|----------------|------------------|------|
|
| 325 |
+
| Gerçek etiket | 0.965 | 0.738 | 1.3x |
|
| 326 |
+
| **Rastgele etiket** | **0.120** | **0.031** | **3.9x** |
|
| 327 |
+
|
| 328 |
+
### Test 4: Sızıntı Haritası
|
| 329 |
+
|
| 330 |
+
| Ölçüm | Random Split | Temporal Split | Fark |
|
| 331 |
+
|-------|-------------|----------------|------|
|
| 332 |
+
| Komşuluk sızıntı oranı | **0.502** | **0.000** | **502x** |
|
| 333 |
+
|
| 334 |
+
### Test 5: Yapı Duyarlılığı
|
| 335 |
+
|
| 336 |
+
| Özellik Seti | Random F1 | Temporal F1 | Fark |
|
| 337 |
+
|-------------|----------|------------|------|
|
| 338 |
+
| Local (94) | 0.943 | 0.669 | +0.274 |
|
| 339 |
+
| Aggregated (71) | 0.902 | 0.627 | +0.275 |
|
| 340 |
+
| Tümü (165) | 0.965 | 0.738 | +0.227 |
|
| 341 |
+
| **Agg. ek katkısı** | **+0.022** | **+0.069** | **3.1x** |
|
| 342 |
+
|
| 343 |
+
### Test 6: Dürüstlük — Kendi Yöntemimizi Sorgulama
|
| 344 |
+
|
| 345 |
+
| Strateji | Sapma | Dürüstlük |
|
| 346 |
+
|----------|-------|-----------|
|
| 347 |
+
| Rastgele | +%20.9 | 🔴 Şişiriyor |
|
| 348 |
+
| **Topolojik Kırılma** | **+%8.0** → **-%0.4** (güncel) | ✅ Dürüst |
|
| 349 |
+
| Kronolojik | -%6.7 | ✅ Dürüst (pesimist) |
|
| 350 |
+
|
| 351 |
+
## 5.4. Literatür Karşılaştırması
|
| 352 |
+
|
| 353 |
+
### Elliptic Veri Setinde Yayınlanmış Tüm Sonuçlar
|
| 354 |
+
|
| 355 |
+
| Çalışma | Model | Illicit F1 | Protokol | Seeds |
|
| 356 |
+
|---------|-------|-----------|----------|-------|
|
| 357 |
+
| Weber et al., 2019 (KDD) | Random Forest | 0.796 | Transductive | 1 |
|
| 358 |
+
| Weber et al., 2019 | GCN | 0.628 | Transductive | 1 |
|
| 359 |
+
| Pareja et al., 2020 (AAAI) | EvolveGCN-O | ~0.770 | Transductive | 1 |
|
| 360 |
+
| Alarab et al., 2020 | XGBoost | ~0.815 | Transductive | 1 |
|
| 361 |
+
| Lo et al., 2023 (Appl. Intell.) | Inspection-L | 0.828 | Transductive | 3 |
|
| 362 |
+
| **Luu, 2026** | **Random Forest** | **0.821±0.003** | **Strict Inductive** | **10** |
|
| 363 |
+
| Luu, 2026 | GraphSAGE | 0.688±0.016 | Strict Inductive | 10 |
|
| 364 |
+
| **Bizim** | **Random Forest** | **0.884** | **Strict Inductive** | 1 |
|
| 365 |
+
| **Bizim** | **LightGBM** | **0.873** | **Strict Inductive** | 1 |
|
| 366 |
+
| **Bizim** | **XGBoost** | **0.869** | **Strict Inductive** | 1 |
|
| 367 |
+
|
| 368 |
+
### Karşılaştırma
|
| 369 |
+
|
| 370 |
+
| Karşılaştırma | Fark | Neden |
|
| 371 |
+
|--------------|------|-------|
|
| 372 |
+
| Bizim RF vs Weber RF | **+8.8 puan** | Daha akıllı bölme noktası + SMOTE + threshold opt |
|
| 373 |
+
| Bizim RF vs Luu RF | **+6.3 puan** | TS29 bölmesi daha temiz sınır, daha az eğitim verisiyle daha iyi |
|
| 374 |
+
| Bizim RF vs Inspection-L | **+5.6 puan** | Inspection-L transductive + SSL, biz strict-inductive ham özelliklerle |
|
| 375 |
+
|
| 376 |
+
## 5.5. Başarı Kriterlerinin Değerlendirmesi
|
| 377 |
+
|
| 378 |
+
| Kriter | Hedef | Gerçekleşen | Durum |
|
| 379 |
+
|--------|-------|-------------|-------|
|
| 380 |
+
| Topolojik > Kronolojik (F1) | ≥3/4 modelde | 3/4 modelde (+10.9 ile +15.4 puan) | ✅ Karşılandı |
|
| 381 |
+
| Topolojik WF sapması | <%10 | **-%0.4** | ✅ Karşılandı (mükemmel) |
|
| 382 |
+
| Rastgele bölme şişmesi | >%10 | **+%15.2** | ✅ Karşılandı |
|
| 383 |
+
| Literatürden iyi | RF F1 > 0.821 (Luu) | **RF F1 = 0.884** | ✅ Karşılandı (+6.3 puan) |
|
| 384 |
+
|
| 385 |
+
---
|
| 386 |
+
|
| 387 |
+
# FAZ 6: DAĞITIM (Deployment)
|
| 388 |
+
|
| 389 |
+
## 6.1. Tekrarlanabilirlik
|
| 390 |
+
|
| 391 |
+
Tüm deneyler tek bir komutla tekrarlanabilir:
|
| 392 |
+
|
| 393 |
+
```bash
|
| 394 |
+
pip install pandas numpy scikit-learn matplotlib seaborn lightgbm xgboost networkx scipy imbalanced-learn torch torch-geometric
|
| 395 |
+
python run_all.py --data_dir ./dataset
|
| 396 |
+
```
|
| 397 |
+
|
| 398 |
+
Çalışma süresi: ~40 dakika (CPU).
|
| 399 |
+
|
| 400 |
+
## 6.2. Depo Yapısı
|
| 401 |
+
|
| 402 |
+
```
|
| 403 |
+
Moco22/elliptic-event-aware-splitting/
|
| 404 |
+
├── README.md # Proje açıklaması
|
| 405 |
+
├── project_report.md # Önceki rapor
|
| 406 |
+
├── crisp_dm_report.md # ★ Bu rapor (CRISP-DM)
|
| 407 |
+
├── run_all.py # ★ Tek komutla tüm deneyler (GraphSAGE dahil)
|
| 408 |
+
├── data_audit.py # Veri denetimi ve pipeline karşılaştırması
|
| 409 |
+
├── dataset/ # Elliptic Bitcoin Dataset (3 CSV)
|
| 410 |
+
├── topological_breakpoint.py # Ana deney scripti
|
| 411 |
+
├── proof_mechanism.py # Kanıt testleri (walk-forward, sızıntı, vb.)
|
| 412 |
+
├── honesty_test.py # Dürüstlük testi
|
| 413 |
+
├── leakage_map.py # Sızıntı haritası
|
| 414 |
+
├── peak_descent.py # Tepe-düşüş kriz tespit algoritması
|
| 415 |
+
├── prepare_for_gephi.py # Gephi görselleştirme verisi
|
| 416 |
+
├── elliptic_event_aware.py # Olay-farkında bölme deneyleri
|
| 417 |
+
├── output/ # ★ run_all.py çıktıları (sonuçlar + figürler)
|
| 418 |
+
├── topo_figures/ # Kırılma noktası figürleri
|
| 419 |
+
├── proof_figures/ # Kanıt mekanizması figürleri
|
| 420 |
+
├── figures/ # Olay analizi figürleri
|
| 421 |
+
├── topo_results/ # Önceki deney sonuçları
|
| 422 |
+
├── proof_results/ # Kanıt test sonuçları
|
| 423 |
+
└── results/ # Olay analizi sonuçları
|
| 424 |
+
```
|
| 425 |
+
|
| 426 |
+
## 6.3. Çıktılar
|
| 427 |
+
|
| 428 |
+
### Sayısal Sonuçlar
|
| 429 |
+
- `output/results/all_experiment_results.csv` — 20 deney (4 model × 5 strateji)
|
| 430 |
+
- `output/results/topological_metrics.csv` — 49 timestep ağ metrikleri
|
| 431 |
+
- `output/results/summary.json` — Tam özet (kırılma noktası, walk-forward, dürüstlük)
|
| 432 |
+
- `proof_results/` — Kanıt test sonuçları (walk-forward, sızıntı, dürüstlük)
|
| 433 |
+
|
| 434 |
+
### Figürler
|
| 435 |
+
- `output/figures/fig1_breakpoint.png` — Kırılma noktası tespiti (3 panel)
|
| 436 |
+
- `output/figures/fig2_f1_comparison.png` — F1 strateji karşılaştırması
|
| 437 |
+
- `output/figures/fig3_pipeline_comparison.png` — Pipeline karşılaştırması
|
| 438 |
+
- `output/figures/fig4_honesty.png` — Walk-forward dürüstlük ısı haritası
|
| 439 |
+
- `output/figures/fig5_inflation.png` — Performans şişmesi haritası
|
| 440 |
+
- `proof_figures/` — Kanıt figürleri (7 adet)
|
| 441 |
+
- `topo_figures/` — Kırılma noktası figürleri (6 adet)
|
| 442 |
+
- `figures/` — Olay analizi figürleri (8 adet)
|
| 443 |
+
|
| 444 |
+
## 6.4. Literatür
|
| 445 |
+
|
| 446 |
+
12 referans makalenin tamamı için bkz. README.md "Ön Literatür Taraması" bölümü.
|
| 447 |
+
|
| 448 |
+
---
|
| 449 |
+
|
| 450 |
+
# SONUÇ VE KATKILAR
|
| 451 |
+
|
| 452 |
+
## Ana Bulgular
|
| 453 |
+
|
| 454 |
+
1. **Rastgele bölme %15.2 performans şişmesi yaratıyor** — walk-forward validasyonla kanıtlandı.
|
| 455 |
+
|
| 456 |
+
2. **Topolojik kırılma bölmesi kronolojik bölmeyi +10.9 ile +15.4 puan F1 ile geçiyor** — 3/4 modelde tutarlı.
|
| 457 |
+
|
| 458 |
+
3. **Topolojik kırılma walk-forward'a -%0.4 sapmayla en dürüst strateji** — ne şişiriyor ne pesimist.
|
| 459 |
+
|
| 460 |
+
4. **Komşuluk sızıntısı 502 kat farkla kanıtlandı** — random split'te %50.2, temporal split'te %0.
|
| 461 |
+
|
| 462 |
+
5. **RF F1=0.884 literatürdeki en iyi strict-inductive sonucu +6.3 puan geçiyor** (Luu 2026: RF F1=0.821).
|
| 463 |
+
|
| 464 |
+
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.**
|
| 465 |
+
|
| 466 |
+
## Literatüre Katkı
|
| 467 |
+
|
| 468 |
+
> **Veri bölme noktasını, ağın topolojik sağlığının çöktüğü kriz anına göre belirleyen ilk çalışma.**
|
| 469 |
+
|
| 470 |
+
## CRISP-DM Döngüsünün Tamamlanması
|
| 471 |
+
|
| 472 |
+
| Faz | Durum | Anahtar Çıktı |
|
| 473 |
+
|-----|-------|---------------|
|
| 474 |
+
| 1. İş Anlayışı | ✅ | 2 hipotez, 4 başarı kriteri tanımlandı |
|
| 475 |
+
| 2. Veri Anlayışı | ✅ | 5 olay tipi keşfedildi, %16.7 outlier tespit edildi |
|
| 476 |
+
| 3. Veri Hazırlama | ✅ | 6 pipeline karşılaştırıldı, graf verisi hazırlandı |
|
| 477 |
+
| 4. Modelleme | ✅ | 20 deney (4 model × 5 strateji) koşuldu |
|
| 478 |
+
| 5. Değerlendirme | ✅ | 6 kanıt testi, walk-forward, literatür karşılaştırması |
|
| 479 |
+
| 6. Dağıtım | ✅ | HF Hub repo, tekrarlanabilir script, CRISP-DM raporu |
|
| 480 |
+
|
| 481 |
+
**Tüm başarı kriterleri karşılandı. Her iki hipotez de doğrulandı.**
|