MAKİNE ÖĞRENMESİNDE EN TEHLİKELİ HATA: MODELİN CEVABI ZATEN BİLİYOR OLMASI

Model sonuçları geldiğinde ekip kısa bir süre ne diyeceğini bilemedi. Accuracy %98’di, precision neredeyse kusursuzdu, recall ise beklentilerin çok ötesindeydi. Bu sadece “iyi” değildi—fazlasıyla iyiydi ve bu durum başta heyecan vericiydi.

Sunum hızlıca hazırlandı, grafikler pırıl pırıldı. Model açıkça state-of-the-art seviyesindeydi ve hatta ekipten biri bunun yayınlanabilir olduğunu söyledi. Tam her şey yolunda görünürken biri durdu ve basit ama kritik bir soru sordu: “Bu kadar iyi olması normal mi?”

O an odada kısa bir sessizlik oldu. Çünkü bu, çoğu insanın sormaktan kaçındığı türden bir soruydu. Herkes sonuçların tadını çıkarmak ister, ama kimse o başarıyı sorgulamak istemez.

Yine de inceleme başladı. Pipeline adım adım açıldı, feature’lar tek tek kontrol edildi, veri akışı baştan sona gözden geçirildi. Ve sonunda gerçek ortaya çıktı: Model aslında tahmin yapmıyordu—cevabı zaten görüyordu.

Sorunun kaynağı küçük gibi görünen ama etkisi büyük olan bir detaydı. Normalizasyon işlemi eğitim ve test verisini birlikte kullanıyordu. Üstelik bazı feature’lar hedef değişkenle dolaylı bir bağlantıya sahipti. Yani model öğrenmemişti; sadece ezberlemişti.

İşin yanıltıcı kısmı şuydu: Her şey teknik olarak “çalışıyordu.” Kod hatasızdı, pipeline düzgündü, sonuçlar ise mükemmeldi. Ama gerçeklik bambaşkaydı. Model doğruyu bulmamıştı—ona doğru zaten gösterilmişti.

Peki, bu neden en tehlikeli hata? Çünkü sessizdir. Alarm vermez, sistemi bozmaz, hatta seni ödüllendirir. Daha iyi skorlar alırsın, daha hızlı ilerlersin ve modele daha çok güvenirsin. Tam da bu yüzden fark edilmesi en zor hatadır.

Makine öğrenmesinde bu duruma data leakage, yani veri sızıntısı denir. Modelin tahmin yaparken aslında erişmemesi gereken bilgilere ulaşmasıdır. Bazen açık olur—örneğin, test verisinin eğitime karışması gibi. Ama çoğu zaman daha sinsidir: feature engineering sırasında hedef bilgisi sızar, aynı varlığa ait kayıtlar train ve test arasında bölünür ya da zaman bilgisi yanlış kullanılır.

Sonuç hep aynıdır: Model gerçeği öğrenmez, sadece ipuçlarını yakalar.

Peki insanlar bunu neden kaçırır? Çünkü her şey doğru görünür. Kod temizdir, pipeline sorunsuz çalışır ve metrikler yüksektir. Beynimiz de otomatik olarak şu hataya düşer: “İyi sonuç = doğru sistem.” Oysa makine öğrenmesinde bu denklem çoğu zaman işlemez.

Bu noktada sadece bakmak yetmez—aktif olarak sorgulamak gerekir. Kendine yüksek sesle sorular sormalısın: “Bu feature hedefle bağlantılı mı?”, “Model aslında görmemesi gereken bir bilgiye erişiyor olabilir mi?”, “Train ve test gerçekten ayrık mı?” Bu sorular sorulmadığında, genellikle hiç sorulmaz.

İşte bu yüzden checklistler hayati önem taşır. REFORMS ve TECHVER gibi sistemler insan hafızasının açıklarını kapatır ve süreci disipline eder. İyi bir ML checklisti, veri ayrımını doğrulamayı, veri sızıntısı ihtimalini sorgulamayı, feature bağımsızlığını kontrol etmeyi ve değerlendirme yöntemini netleştirmeyi zorunlu kılar. Ama unutma: checklist sadece işaretlemek için değil, gerçekten uygulamak içindir.

Makine öğrenmesinde en tehlikeli an, modelin başarısız olduğu an değildir. Aksine, aşırı başarılı göründüğü andır. Çünkü o noktada daha az sorgular, daha az kontrol eder ve daha hızlı ilerlersin. Ve hata tam o sırada sistemin içine yerleşir.

Sonuç olarak, o model gerçekten etkileyiciydi. Ama doğru değildi. Hiçbir şey bozuk değildi, hiçbir şey eksik değildi. Eksik olan tek şey vardı: gerçekten sorgulamak.

Sonuçlar mükemmeldi. Ama gerçek değildi.

Yorum bırakın