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.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Pratik örnek:

1from sklearn.model_selection import cross_val_score
2from sklearn.ensemble import RandomForestClassifier
3from sklearn.datasets import load_iris
4
5# Veri yükle
6iris = load_iris()
7X, y = iris.data, iris.target
8
9# Model oluştur
10model = RandomForestClassifier(random_state=42)
11
12# 5-fold cross-validation yap
13scores = cross_val_score(model, X, y, cv=5)
14
15print(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.9667
3Standart sapma: 0.0211

Gö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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz