Çapraz doğrulama, bir makine öğrenimi modelinin performansını değerlendirmek ve genelleme yeteneğini tahmin etmek için kullanılan bir tekniktir. Özellikle sınırlı veri setleri ile çalışırken, modelin eğitim verisine aşırı uyum sağlamasını (overfitting) engellemek ve daha güvenilir sonuçlar elde etmek amacıyla yaygın olarak kullanılır.
Çapraz doğrulama, veri setini birden fazla bölüme ayırarak, bu bölümlerin bazılarını eğitim verisi, bazılarını ise test verisi olarak kullanır. Bu işlem, farklı kombinasyonlarla tekrar edilerek, modelin farklı veri alt kümelerindeki performansı ölçülür ve ortalama bir performans tahmini elde edilir.
Amaç:
Farklı veri setlerine ve modelleme problemlerine uygun çeşitli çapraz doğrulama teknikleri bulunmaktadır. En yaygın kullanılanlardan bazıları şunlardır:
K-Katlı Çapraz Doğrulama (K-Fold Cross-Validation): Veri seti k eşit parçaya (katmana) bölünür. Her bir katman sırayla test verisi olarak kullanılırken, geri kalan k-1 katman eğitim verisi olarak kullanılır. Bu işlem k kez tekrar edilir ve her iterasyonda model farklı bir test veri seti üzerinde değerlendirilir. Sonuç olarak, k adet performans metriği elde edilir ve bunların ortalaması alınarak modelin genel performansı tahmin edilir.
Stratified K-Fold Cross-Validation: Özellikle dengesiz veri setlerinde (örneğin, bir sınıfa ait örnek sayısının diğer sınıflara göre çok daha az olduğu durumlarda) kullanılır. Veri setinin katmanlara ayrılması sırasında, her katmanda her bir sınıfın oranı korunur. Bu sayede, test veri setlerinin her birinde sınıfların temsili dengeli olur ve modelin performansı daha doğru bir şekilde değerlendirilir.
Leave-One-Out Cross-Validation (LOOCV): Her bir veri noktası sırayla test verisi olarak kullanılırken, geri kalan tüm veri noktaları eğitim verisi olarak kullanılır. Bu, n veri noktası için n iterasyon anlamına gelir.
ShuffleSplit Cross-Validation: Veri seti, her iterasyonda rastgele bir şekilde eğitim ve test veri setlerine bölünür. Bu, her bir veri noktasının farklı iterasyonlarda hem eğitim hem de test verisi olarak kullanılabilmesini sağlar.
Group K-Fold Cross-Validation: Veri setinde gruplar (örneğin, hastalar, deneyler) varsa ve aynı gruba ait veri noktalarının hem eğitim hem de test veri setinde bulunması istenmiyorsa kullanılır. Bu teknikte, veri seti gruplara ayrılır ve her bir grup sırayla test verisi olarak kullanılırken, geri kalan gruplar eğitim verisi olarak kullanılır.
Time Series Cross-Validation: Zaman serisi verileri için kullanılır. Veri seti, zaman sırasına göre artan şekilde eğitim ve test veri setlerine bölünür. Örneğin, ilk n veri noktası eğitim, sonraki m veri noktası test verisi olarak kullanılır. Bu işlem, zaman içinde kaydırılarak tekrar edilir. Amaç, modelin gelecekteki verileri ne kadar iyi tahmin ettiğini değerlendirmektir.
Çapraz doğrulama, farklı modelleri veya aynı modelin farklı hiperparametrelerini karşılaştırmak için kullanılabilir. Bu işlem, genellikle grid search veya random search gibi tekniklerle birlikte kullanılır. Amaç, çapraz doğrulama sonucunda en iyi performansı veren modeli ve hiperparametreleri belirlemektir.
from sklearn.model_selection import KFold, cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# Veri setini yükle
iris = load_iris()
X, y = iris.data, iris.target
# K-katlı çapraz doğrulama nesnesi oluştur
kf = KFold(n_splits=5, shuffle=True, random_state=42)
# Lojistik regresyon modeli oluştur
model = LogisticRegression(solver='liblinear', multi_class='ovr', random_state=42)
# Çapraz doğrulama ile modeli değerlendir
scores = cross_val_score(model, X, y, cv=kf, scoring='accuracy')
# Sonuçları yazdır
print("Doğruluk skorları:", scores)
print("Ortalama doğruluk skoru:", scores.mean())
Bu örnekte, KFold
sınıfı ile 5-katlı çapraz doğrulama uygulanmaktadır. cross_val_score
fonksiyonu, modeli her bir katmanda eğitip değerlendirerek doğruluk skorlarını hesaplar. Son olarak, ortalama doğruluk skoru yazdırılır.
Çapraz doğrulama, makine öğrenimi modellerinin performansını değerlendirmek ve genelleme yeteneğini tahmin etmek için güçlü bir araçtır. Doğru teknik seçimi ve dikkatli uygulama ile, daha güvenilir ve sağlam modeller oluşturulabilir. Aşırı uyum riskini azaltarak, modelin yeni veriler üzerindeki başarısını artırmaya yardımcı olur.