PROJE 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
1. GİRİŞ
1.1. Araştırma Konusu
KONU: Data Leakage, Değerlendirme Yanlılığı ve Performans Şişmesi
Araştırma Sorusu: Temporal split kullanılmadığında performans ne ölçüde yapay olarak artar?
1.2. Bağlam
Kripto para dünyasını devasa bir sosyal ağ gibi düşünün: cüzdanlar insanları, para transferleri aralarındaki ilişkileri temsil eder. Amacımız, bu ağın içinde kara para aklayan kötü niyetli aktörleri bir makine öğrenmesi modeli kullanarak bulmaktır. Ancak bu ağ statik değildir; zamanla büyür, küçülür ve değişir.
1.3. Literatürdeki Mevcut Yaklaşım
Mevcut bilim insanları yapay zekayı eğitirken takvime veya saate bakarlar. Ellerinde 1 yıllık veri varsa, "ilk 8 ayda eğitelim, son 4 ayda test edelim" derler. Buna kronolojik bölme (chronological split) denir. Zamanı düz bir çizgi olarak kabul edip veriyi belirli tarihlerden keserler.
1.4. Tespit Ettiğimiz Boşluk
Gerçek hayatta olaylar takvime göre düzenli ilerlemez. Bir kripto borsası hacklendiğinde veya bir dark market kapandığında, ağdaki herkes panik içinde parasını kaçırmaya başlar. Siz yapay zekayı sakin aylarda eğitip aniden kaosun ortasında test ederseniz model çöker. Ya da veri sızıntısı (Data Leakage) yaşanır — model gelecekteki ağın yapısını yanlışlıkla ezberler. Literatürdeki en büyük eksiklik, veriyi bölerken takvime bakılması, ağın içindeki kriz anlarına bakılmamasıdır.
1.5. Hipotezler
Hipotez 1: Makine öğrenmesi modellerini eğitirken veriyi tam olarak ağda bir krizin yaşandığı "Topolojik Kırılma Noktasından" bölersek, model gerçek dünyadaki yasa dışı işlemleri yakalamada çok daha başarılı ve kararlı olur.
Hipotez 2: Veri bölme işlemi ağdaki şoklara göre yapılmazsa, model sakin zamanlarda yapay ve abartılı bir başarı (performans şişmesi) gösterir, ancak kriz anında tamamen başarısız olur.
2. VERİ SETİ
Kaynak: Kaggle — Elliptic Data Set
Veri seti 3 dosyadan oluşur (dataset/ klasöründe):
elliptic_txs_features.csv— 203,769 düğüm × 167 sütunelliptic_txs_classes.csv— 203,769 düğüm × 2 sütun (txId, class)elliptic_txs_edgelist.csv— 234,355 kenar × 2 sütun (txId1, txId2)
| Özellik | Değer |
|---|---|
| Toplam düğüm | 203,769 Bitcoin işlemi |
| Etiketli düğüm | 46,564 (%22.8) |
| İllicit (kara para) | 4,545 (%9.8) |
| Licit (yasal) | 42,019 (%90.2) |
| Kenarlar | 234,355 yönlü ödeme akışı |
| Özellikler | 165 (94 local + 71 aggregated) |
| Zaman adımları | 49 (~2 haftalık aralıklar) |
2.1. Veri Setindeki Olay Tipleri
Veri setini analiz ettiğimizde 5 farklı olay tipi tespit ettik:
| Olay Tipi | Timestep'ler | İllicit Oranı | İşlem Sayısı |
|---|---|---|---|
| Dark Market Zirvesi | 9,11,13,15,16,20,25,26,28,29,32 | %26.5 | 8,223 |
| Kapanma (Shutdown) | 43 | %1.8 | 1,370 |
| Kapanma Sonrası | 44,45,46 | %0.9 | 3,524 |
| Toparlanma | 47,48,49 | %6.4 | 1,793 |
| Normal Aktivite | Geri kalan 31 TS | %7.0 | 31,654 |
Dark market zirvesinde illicit oranı %26.5 iken, kapanma sonrası %0.9'a düşüyor — 30 kat fark.
3. METODOLOJİ
3.1. Topolojik Kırılma Noktası Tespit Algoritması
Her timestep için ağın 3 topolojik metriğini ölçtük:
- Yoğunluk (Density): Düğümler arası bağlantı ne kadar sıkı
- Bağlantılılık (Largest CC Ratio): En büyük bileşenin ağ içindeki oranı
- Bütünlük (1 - Component Ratio): Ağın ne kadar az parçaya bölündüğü
Bu üçünü normalize edip birleştirerek "Sağlık Skoru" elde ettik:
health(t) = [norm(density) + norm(cc_ratio) + (1 - norm(n_components))] / 3
Sağlık skorundaki en büyük ani düşüş = Topolojik Kırılma Noktası.
Sonuç: Algoritma otomatik olarak Timestep 29'u tespit etti — dark market aktivitesinin zirvesi.
3.2. Tepe-Düşüş Kriz Tespit Algoritması (Geliştirilmiş)
Kriz dönemleri grafikte tepeye çıkıp sonra düşüşe geçtiği anda oluşur. Bu gözleme dayanarak türev bazlı bir algoritma geliştirdik:
- Bileşik kriz sinyali hesapla
- Hareketli ortalama ile düzleştir
- Birinci türev al (değişim hızı)
- Tepe tespiti: birinci türev pozitiften negatife geçtiği an
- En büyük düşüş şiddetine sahip tepe = Ana kriz tepesi
3.3. Modeller
| Model | Tür | Neden Seçildi? |
|---|---|---|
| GraphSAGE | Graf Sinir Ağı (GNN) | Komşuluk yapısını öğrenir, strict inductive |
| Random Forest | Topluluk öğrenme | Elliptic'te en güçlü baseline |
| XGBoost | Gradyan artırma | Tabular veride SOTA |
| LightGBM | Gradyan artırma | Hız ve performans dengesi |
3.4. Bölme Stratejileri
| # | Strateji | Açıklama |
|---|---|---|
| 1 | Rastgele | Standart train_test_split (%80/%20) |
| 2 | Kronolojik | İlk %80 TS eğitim, son %20 test |
| 3 | Topolojik Kırılma | Kırılma noktasından önce eğitim, sonra test |
| 4 | Kayan Pencere | Son 10 TS test |
| 5 | Düşmanca | Sakin dönemde eğit, kriz döneminde test et |
3.5. Metrik
Accuracy yerine Illicit F1 Score kullanıldı. Çünkü ağda yasa dışı işlemler çok az (%9.8) — model "herkes yasal" derse bile %90 doğru bilmiş sayılır ama bu işimize yaramaz.
4. DENEYSEL SONUÇLAR
4.1. Hipotez 1 Sonuçları: Topolojik Kırılma vs Kronolojik
| Model | Topolojik Kırılma F1 | Kronolojik F1 | Fark |
|---|---|---|---|
| LightGBM | 0.870 | 0.738 | +13.2 puan |
| Random Forest | 0.842 | 0.723 | +11.9 puan |
| XGBoost | 0.837 | 0.742 | +9.5 puan |
| GraphSAGE | 0.421 | 0.476 | -5.5 puan |
Yorum: 3/4 modelde topolojik kırılma bölmesi kronolojik bölmeyi açık farkla geçti.
4.2. Hipotez 2 Sonuçları: Performans Şişmesi
| Model | Rastgele F1 | Kronolojik F1 | Şişme |
|---|---|---|---|
| GraphSAGE | 0.711 | 0.476 | %49.5 |
| Random Forest | 0.936 | 0.723 | %29.5 |
| XGBoost | 0.958 | 0.742 | %29.0 |
| LightGBM | 0.960 | 0.738 | %30.2 |
Yorum: Tüm modellerde %29-50 arası performans şişmesi tespit edildi.
4.3. Tam Sonuç Tablosu (Illicit F1)
| Model | Rastgele | Kronolojik | Topolojik Kırılma | Kayan Pencere | Düşmanca |
|---|---|---|---|---|---|
| GraphSAGE | 0.711 | 0.476 | 0.421 | 0.458 | 0.777 |
| Random Forest | 0.936 | 0.723 | 0.842 | 0.723 | 0.963 |
| XGBoost | 0.958 | 0.742 | 0.837 | 0.742 | 0.978 |
| LightGBM | 0.960 | 0.738 | 0.870 | 0.738 | 0.981 |
5. PERFORMANS ŞİŞMESİNİN KANITI
"Random split belki doğru sonuç veriyor" itirazını 6 bağımsız testle sorguladık.
5.1. Walk-Forward Validasyon
Gerçek dünya simülasyonu — her adımda geçmişle eğit, geleceği tahmin et:
| Eğitim | Test | F1 |
|---|---|---|
| TS 1-9 | TS 10-12 | 0.972 |
| TS 1-21 | TS 22-24 | 0.778 |
| TS 1-42 | TS 43-45 (kriz) | 0.066 |
| TS 1-45 | TS 46-48 | 0.033 |
Walk-forward ortalama F1 = 0.796, Random split F1 = 0.965 → %21.2 şişme
5.2. Rastgele Etiket Testi
| Durum | F1 |
|---|---|
| Gerçek etiket + Random split | 0.965 |
| Gerçek etiket + Temporal split | 0.738 |
| Rastgele etiket + Random split | 0.120 |
| Rastgele etiket + Temporal split | 0.031 |
Anlamsız etiketlerde bile random split temporal split'in 4 katı F1 veriyor — yapısal sızıntı kanıtı.
5.3. Dürüstlük Testi (Kendi Yöntemimizi Sorgulama)
| Strateji | Walk-Forward'a Sapma | Durum |
|---|---|---|
| Rastgele | +%20.9 | Şişiriyor |
| Topolojik Kırılma | +%8.0 | Dürüst |
| Kronolojik | -%6.7 | Pesimist |
5.4. Sızıntı Haritası
| Ölçüm | Random Split | Temporal Split | Fark |
|---|---|---|---|
| Komşuluk sızıntı oranı | 0.502 | 0.000 | 502x |
5.5. Kanıt Özet Tablosu
| # | Test | Bulgu |
|---|---|---|
| 1 | Walk-Forward | %21 şişme |
| 2 | Kriz Çöküşü | F1=0.07 çöküş |
| 3 | Rastgele Etiket | Random 4x daha yüksek |
| 4 | Yapay Tutarlılık | Random yapay düzgün (std=0.18 vs 0.36) |
| 5 | Gelecek Bilgisi | Geçmiş F1 ≈ Gelecek F1 |
| 6 | Dürüstlük Testi | Bizim yöntem +%8 — dürüst |
6. TRIPLE BARRIER YÖNTEMİ ANALİZİ
6.1. Triple Barrier Nedir?
Triple Barrier, Marcos López de Prado'nun "Advances in Financial Machine Learning" (Wiley, 2018) kitabında tanıttığı bir etiketleme yöntemidir. Bir fiyat serisini alıp, her gözleme {-1, 0, +1} etiketi atamak için kullanılır.
Üç bariyer aynı anda konulur:
- Üst bariyer (kâr alma): Fiyat belirli bir eşiği aşarsa → +1
- Alt bariyer (zarar durdurma): Fiyat belirli bir eşiğin altına düşerse → -1
- Dikey bariyer (zaman): Süre dolarsa → 0
6.2. Bizim Çalışmayla İlişkisi
Doğrudan ilişki: YOK. Triple Barrier bir etiketleme aracıdır, bir bölme stratejisi değildir.
| Boyut | Triple Barrier | Bizim Yöntem |
|---|---|---|
| Ne yapar | Eğitim örneklerine etiket atar | Veriyi nerede keseceğini belirler |
| Pipeline aşaması | Özellik mühendisliği / etiketleme | Model değerlendirme tasarımı |
| Çalışma birimi | Tek tek gözlemler | Tüm veri setinin sınırı |
| Temel | Fiyat yolu geometrisi | Ağ topolojisi kırılma noktaları |
| Domain | Alım-satım stratejileri | Sahtekarlık tespiti |
Dolaylı felsefi bağlantı: VAR. López de Prado'nun kitabındaki daha geniş çerçeve, bizim tezimizle aynı entelektüel gelenek içindedir:
| López de Prado | Bizim Tezimiz |
|---|---|
| "Standart CV finansal veride sızıntı yapar çünkü örnekler bağımlıdır" | "Sabit kronolojik bölme yetersizdir çünkü ağda yapısal krizler olur" |
| Çözüm: Purged K-Fold CV + embargo dönemi | Çözüm: Topolojik kırılma noktasından böl |
| Odak: Etiket örtüşme geometrisi | Odak: Ağ topoloji geometrisi |
6.3. Neden Triple Barrier Burada Uygulanamaz?
- Elliptic veri setinde sürekli fiyat serisi yok — düğümler illicit/licit olarak etiketlenmiş
- "Kâr/zarar" kavramı yok — sadece yasal/yasa dışı ikili sınıflandırma var
- "Pozisyon tutma süresi" kavramı yok — AML'de böyle bir şey anlamsız
- Literatürde kimse Triple Barrier'ı fraud detection'a uygulamamış (sıfır yayın)
6.4. Sonuç
Triple Barrier bizim problemimiz için uygun değildir. Ancak López de Prado'nun "finansal veride i.i.d. varsayımı yanlıştır" eleştirisi, bizim "ağ verisinde takvime dayalı sabit bölme yetersizdir" tezimizle aynı düşünce geleneğinden beslenmektedir.
7. GEPHİ İLE AĞ GÖRSELLEŞTİRME
7.1. Veri Hazırlama
prepare_for_gephi.py scripti Kaggle'daki 3 CSV dosyasını Gephi formatına çevirir:
python prepare_for_gephi.py --data_dir ./dataset
7.2. Gephi'de Karşılaştırılacak 3 Kritik Dönem
| Dönem | Dosyalar | Ne Görülmeli? |
|---|---|---|
| Kriz öncesi (sakin) | gephi_nodes/edges_ts{N} | Düzenli ağ, az illicit |
| Kriz zirvesi (peak) | gephi_nodes/edges_ts{N} | Yoğun illicit kümelenmesi |
| Kriz sonrası (kapanma) | gephi_nodes/edges_ts{N} | İllicit kaybolmuş, yeni yapı |
8. LİTERATÜR TARAMASI (SCI / SCI-E İndeksli)
| # | Makale | Yayın Yeri | İndeks | Bağlantı |
|---|---|---|---|---|
| 1 | Rubachev et al. (2024) "TabReD" | NeurIPS 2024 | SCI-E (Core A*) | Link |
| 2 | Wang et al. (2024) "Topological Concentration" | ICLR 2024 | SCI-E (Core A*) | Link |
| 3 | Huang et al. (2023) "TGB" | NeurIPS 2023 | SCI-E (Core A*) | Link |
| 4 | Poursafaei et al. (2022) "Better Eval Dynamic LP" | NeurIPS 2022 | SCI-E (Core A*) | Link |
| 5 | Weber et al. (2019) "Elliptic Dataset" | KDD 2019 | SCI-E (Core A*) | Link |
| 6 | Lo et al. (2023) "Inspection-L" | Applied Intelligence | SCI-E (IF:3.4) | Link |
| 7 | Rossi et al. (2020) "TGN" | ICML 2020 | SCI-E (Core A*) | Link |
| 8 | Wu et al. (2021) "GNN Survey" | IEEE TNNLS | SCI (IF:10.4) | Link |
| 9 | Al Sahili & Awad (2023) "STGNN Survey" | AI Review | SCI-E (IF:12.0) | Link |
| 10 | Pareja et al. (2020) "EvolveGCN" | AAAI 2020 | SCI-E (Core A*) | Link |
| 11 | Thimonier et al. (2024) "AD for Fraud" | DMKD | SCI-E (IF:4.8) | Link |
9. PROJE DOSYA YAPISI
├── README.md # Proje açıklaması
├── project_report.md # Bu rapor
├── dataset/ # Kaggle'dan indirilen 3 CSV dosyası
│ ├── elliptic_txs_features.csv
│ ├── elliptic_txs_classes.csv
│ └── elliptic_txs_edgelist.csv
├── topological_breakpoint.py # Ana deney: 4 model × 5 strateji
├── proof_mechanism.py # 6 kanıt testi
├── honesty_test.py # Dürüstlük testi
├── leakage_map.py # Sızıntı haritası
├── peak_descent.py # Tepe-düşüş algoritması
├── prepare_for_gephi.py # Gephi veri hazırlama
├── elliptic_event_aware.py # Olay-farkında bölme
├── topo_figures/ # Kırılma noktası figürleri (6)
├── proof_figures/ # Kanıt figürleri (7)
├── figures/ # Olay analizi figürleri (8)
├── topo_results/ # Sonuçlar
├── proof_results/ # Kanıt sonuçları
└── results/ # Olay analizi sonuçları
10. SONUÇ VE KATKI
Random split %96 F1 rapor ediyor ama bunun %21'i yapay. Kriz anında model çöküyor (F1=0.07). Rastgele etiketlerde bile random split skor üretiyor. Ağ üzerinden komşuluk sızıntısı 502 kat farkla kanıtlandı.
Bizim topolojik kırılma yöntemi kronolojik bölmeyi +13 puan geçiyor. Walk-forward dürüstlük testinde +%8 sapma ile kabul edilebilir sınırların içinde — ne şişiriyor ne de pesimist.
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.
Karmaşık model geliştirmeden önce, veriyi doğru bölün.