Makine Öğrenmesi
Cross-validation nedir?
Cross-validation, veriyi k katmana bölerek modeli k kez değerlendirir.
Çapraz doğrulama ne çözer?
Tek bir eğitim/test bölmesinin skoru, hangi örneklerin teste düştüğüne bağlıdır. Çapraz doğrulama (CV) bu şansı ortadan kaldırır: veri katmanlara bölünür ve her katman sırayla doğrulama olur. Sonuç bir skor dağılımıdır.
for rs in range(5):
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=rs)
print(rs, round(model.fit(X_tr, y_tr).score(X_te, y_te), 3))
# skor bölmeden bölmeye birkaç puan oynar
CV ayrıca veriyi verimli kullanır: her örnek hem eğitimde hem doğrulamada yer alır.
Bölmeye bağlı oynaklık
Bölme oynaklığını ölçmek için skorların standart sapmasına bakılır. Küçük veri setlerinde oynaklık büyüktür ve tek bölmeye dayanan kararlar yanıltıcı olur:
skorlar = cross_val_score(model, X, y, cv=10)
print(f"{skorlar.mean():.3f} ± {skorlar.std():.3f}")
print(skorlar.min(), skorlar.max()) # en kötü ve en iyi katman
İki modelin farkı, skorların standart sapmasından küçükse "eşit" kabul etmek daha güvenlidir.
Uygulama Bölme oynaklığı
5 farklı random_state (0-4) ile test_size=0.2 bölmeleri yap ve her birinde modeli eğitip test doğruluğunu topla. En küçük ve en büyük skoru round(..., 3) ile aynı satırda yazdır.
Örnek çözümü göster
from sklearn.datasets import load_breast_cancer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = load_breast_cancer(return_X_y=True)
model = make_pipeline(StandardScaler(), LogisticRegression())
from sklearn.model_selection import train_test_split
skorlar = []
for rs in range(5):
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=rs)
skorlar.append(model.fit(X_tr, y_tr).score(X_te, y_te))
print(round(min(skorlar), 3), round(max(skorlar), 3))
Kendini test et
-
Çapraz doğrulama test kümesinin yerini tutar mı?
- Hayır; model seçimi CV ile, son ölçüm ayrı test kümesiyle yapılır
- Evet, her zaman
- Yalnızca regresyonda
- Test kümesi gereksizdir
Cevabı göster
Hayır; model seçimi CV ile, son ölçüm ayrı test kümesiyle yapılır — CV skoru seçim için kullanıldıkça iyimserleşir; bağımsız bir test hâlâ gerekir.
-
Tek bölmenin skorunu farklı tohumlarla tekrarla.
for rs in ____(5):
Cevabı göster
for rs in range(5):
-
Kavramları eşleştir.
- katman (fold)
- Verinin bir parçası
- skorlar.std()
- Bölme oynaklığı
- test kümesi
- Son bağımsız ölçüm
- CV ortalaması
- Seçim ölçütü
Sıradaki ders: K-fold