Cross-Validation Neden Tek Test Setinden Daha İyi Sonuç Verir
# Cross-Validation Neden Tek Test Setinden Daha İyi Sonuç Verir
Makine öğrenmesinde modeli eğittikten sonra performansını ölçersin. Çoğu başlangıç projesi verileri eğitim ve test olmak üzere iki parçaya böler, sonra tek test seti üzerinde başarı oranını hesaplar. Ama bu yöntem seni aldatabilir.
Düşün: 100 satırlık verin var. 80'ini eğitim, 20'sini test olarak ayırdın. Test setindeki 20 örnek tamamen şanslı seçilmiş olabilir, hepsi kolay durumlardır. Modelinin başarı oranı %95 çıkar, ama gerçek hayatta %70 başarısız olur. Bunun nedeni, tek test seti verinin tamamını temsil etmeyebilmesidir.
Cross-validation bu sorunu çözer. Veriyi k parçaya böler (örneğin 5 parça), her seferinde bir parçayı test, geri kalanını eğitim olarak kullanırsın. Bunu k defa tekrarlarsın. Sonunda k tane performans değerin olur. Ortalaması, modelin gerçek başarısına daha yakındır.
Pratik örnek:
1from sklearn.model_selection import cross_val_score2from sklearn.ensemble import RandomForestClassifier3from sklearn.datasets import load_iris45# Veri yükle6iris = load_iris()7X, y = iris.data, iris.target89# Model oluştur10model = RandomForestClassifier(random_state=42)1112# 5-fold cross-validation yap13scores = cross_val_score(model, X, y, cv=5)1415print(f"Her fold'un başarı oranı: {scores}")16print(f"Ortalama başarı oranı: {scores.mean():.4f}")17print(f"Standart sapma: {scores.std():.4f}")Beklenen çıktı:
1Her fold'un başarı oranı: [0.96666667 0.96666667 0.93333333 0.96666667 1. ]2Ortalama başarı oranı: 0.96673Standart sapma: 0.0211Gördüğün gibi, her fold'da farklı sonuç alıyorsun (0.93 ile 1.0 arasında değişiyor). Ortalama 0.9667 sana gerçek performansın hakkında daha iyi fikir verir. Standart sapma (0.0211) ise verinin farklı bölümlerindeki tutarlılığı gösterir, düşük sapma, modelin stabil çalıştığı anlamına gelir.
Eğer tek test seti kullanmış olsaydın, sadece bir sayı alırdın. Belki o test seti şanslı seçilmiş, belki de değil. Cross-validation ile bu riski azaltırsın ve modeline daha fazla güvenebilirsin.
0 yorum