Ana içeriğe geç

K-Katlamalı Çapraz Doğrulamaya Kapsamlı Bir Rehber

K-Katlamalı Çapraz Doğrulamanın nasıl çalıştığını, avantaj ve dezavantajlarını öğrenin. Python'da scikit-learn ile K-Katlamalı Çapraz Doğrulamayı nasıl uygulayacağınızı keşfedin.
· 10 dk. oku

Yapay Zeka ile Keşfedin

Bir makine öğrenmesi modeli eğittiğinizi ve yeni, görülmemiş veriler üzerinde nasıl performans göstereceğinden emin olmadığınızı hayal edin. İşte bu noktada K-Katlamalı Çapraz Doğrulama devreye girer. Modelinizin gerçek dünyada nasıl sonuç verebileceğine dair bir ön izleme sunar. Bu teknik, tahminlerinizin yalnızca tek seferlik bir başarı değil, yeni ve görülmemiş veri kümelerinde de tutarlı biçimde güvenilir olmasını sağlar.

Bu rehberde, K-Katlamalı Çapraz Doğrulamanın temellerini açacağız ve bunu Train-Test Split gibi daha basit yöntemlerle karşılaştıracağız. Python kullanarak çeşitli çapraz doğrulama yöntemlerini keşfedecek ve doğru yöntemi seçmenin projelerinize neden büyük etki edebileceğini anlayacaksınız. Sonunda, bu stratejileri scikit-Learn ile uygulamaya hazır olacaksınız. 

Hadi başlayalım ve makine öğrenmesi çalışmalarınızı gerçekten güvenilir hale getirmeyi öğrenelim!

K-Katlamalı Çapraz Doğrulama nedir?

K-Katlamalı Çapraz Doğrulama, makine öğrenmesi modellerinin performansını değerlendirmek için kullanılan sağlam bir tekniktir. Modelin, veri kümesinin farklı bölümlerini çoklu yinelemelerde eğitim ve test için kullanarak görülmemiş verilere iyi genelleme yapmasını sağlamaya yardımcı olur. 

K-Katlamalı Çapraz Doğrulama vs. Train-Test Split

K-Katlamalı Çapraz Doğrulama veri kümesini modeli yinelemeli olarak eğitmek ve test etmek için birden çok alt kümeye ayırırken, Train-Test Split yöntemi veri kümesini yalnızca iki parçaya böler: biri eğitim, diğeri test için. Train-Test Split yöntemi basit ve hızlıdır, ancak performans tahmini belirli bölünmeye oldukça bağımlı olabilir ve sonuçlarda yüksek varyansa yol açabilir. 

Aşağıdaki görseller bu iki yöntem arasındaki yapısal farkları göstermektedir. İlk görsel, veri kümesinin %80 eğitim ve %20 test segmentlerine bölündüğü Train-Test Split yöntemini göstermektedir.

Bir veri kümesinin eğitim ve test bölümlerine ayrılmasını gösteren illüstrasyon. Veri kümesi %80 eğitim ve %20 teste bölünmüştür. Görsel yalnızca bir modelin puanlandığını vurgular.

Train/Test Split İllüstrasyonu. Görsel: Yazar

İkinci görsel, veri kümesinin beş parçaya bölündüğü ve her bir parçanın beş yinelemenin birinde test kümesi olarak hizmet ettiği, böylece her segmentin hem eğitim hem test için kullanıldığından emin olunduğu 5 Katlı Çapraz Doğrulamayı göstermektedir.

5 Katlı Çapraz Doğrulama Şeması

5 Katlı Çapraz Doğrulama Şeması. Görsel: Yazar

Görüyoruz ki K-Katlamalı Çapraz Doğrulama, veri değişkenliğinin etkisini azalttığı için daha sağlam ve güvenilir bir performans tahmini sunar. Birden fazla eğitim ve test döngüsü kullanarak belirli bir veri bölünmesine aşırı uyum riskini en aza indirir. Bu yöntem, her bir veri noktasının hem eğitim hem doğrulama için kullanılmasını sağlayarak model performansının daha kapsamlı bir değerlendirmesine yol açar. 

scikit-learn kullanarak Python'da K-Katlamalı Çapraz Doğrulama uygulama

Şimdi, doğrusal regresyon modelinin performansını değerlendirmek için California Housing veri kümesini kullanarak K-Katlamalı Çapraz Doğrulamayı gösterelim. Bu yöntem, veri kümesinin farklı alt kümelerinde yinelemeli olarak test ederek model doğruluğunun sağlam bir tahminini sağlar ve kapsamlı bir değerlendirme sunar.

California Housing veri kümesine genel bakış

California Housing Veri Kümesi, Pace ve Barry (1997) tarafından derlenmiş olup, 1990 ABD Nüfus Sayımı'ndan California'daki konutlara ilişkin verileri içerir. Konum, konut yaşı ve nüfus gibi özelliklere sahip 20.640 gözlem vardır. Hedef değişken, California bölgeleri için medyan konut değeridir. 

Veri kümesi; coğrafi, demografik ve ekonomik özelliklerin çeşitli bir setini sunar ve bu da onu veri bilimi ve makine öğrenmesi uygulamaları için son derece uygun kılar. Kod örneğimize, onu doğrudan scikit-Learn kütüphanesinden indirerek başlayacağız. 

Veri kümesini yükleme

Model eğitimine ve değerlendirmeye başlamadan önce veri kümesini yüklememiz gerekir. 

from sklearn.datasets import fetch_california_housing 
data = fetch_california_housing()

Bu kod, sklearn.datasets içinden fetch_california_housing fonksiyonunu içe aktarır ve California Housing veri kümesini yüklemek için çağırır. Bu veri kümesi, hem özellikleri hem de hedef değişkeni içeren data değişkeninde saklanır. 

Veriyi hazırlama

Veri kümesi yüklendikten sonra, bir sonraki adım veriyi analize hazırlamaktır. 

import pandas as pd 
X = pd.DataFrame(data.data, columns=data.feature_names) 
y = data.target

Burada, pandas kütüphanesini kullanarak data.data içindeki özellik verilerini barındıran X adlı bir DataFrame oluşturuyoruz. DataFrame'in sütunları data.feature_names kullanılarak etiketlenir. Medyan konut değerlerini temsil eden hedef değişkeni ise ayrı olarak y içinde saklanır. 

K-Katlamalı Çapraz Doğrulamayı kurma

Şimdi modelimizi kurma ve K için bir değer seçme zamanı. K için doğru değeri seçmek önemli bir adımdır ve bunu aşağıda ayrıntılı olarak ele alacağız. 

from sklearn.model_selection import KFold
k = 5 
kf = KFold(n_splits=k, shuffle=True, random_state=42)

Bu kod, sklearn.model_selection içindeki KFold sınıfını kullanarak K-Katlamalı Çapraz Doğrulamayı başlatır. kf örneğini 5 bölme ile kuruyoruz. shuffle=True seçeneği veri noktalarının sırasını rastgeleleştirir ve random_state=42 bu karıştırmanın birden çok çalıştırmada tutarlı olmasını sağlar. Bu kurulum, çapraz doğrulama ile bir modelin performansını değerlendirmeye başlamak için genellikle yeterlidir.  

Modeli başlatma

Verimiz hazır ve çapraz doğrulama kurulduğuna göre, sıradaki adım modeli seçmek ve başlatmaktır. 

from sklearn.linear_model import LinearRegression 
model = LinearRegression()

sklearn.linear_model içinden LinearRegression sınıfını içe aktarır ve bir model örneği oluştururuz. Bu model, veri kümesi üzerinde doğrusal regresyon yapmak için kullanılacaktır. 

Çapraz doğrulama uygulama

Model başlatıldığına göre, şimdi işin eğlenceli kısmına geçebilir ve verinin farklı alt kümeleri üzerindeki performansını değerlendirmek için çapraz doğrulamayı uygulayabiliriz.

from sklearn.model_selection import cross_val_score 
scores = cross_val_score(model, X, y, cv=kf, scoring='r2')

Bu satır, modeli X veri kümesi ve y hedefiyle değerlendirmek için cross_val_score fonksiyonunu kullanır. Çapraz doğrulama, Kfold örneği kf kullanılarak yürütülür ve modelin performansı R² skoru ile ölçülür. 

Ortalama R2 skorunu hesaplama

Bağımlı değişkendeki varyansın ne kadarının bağımsız değişkenlerle açıklanabildiğini değerlendirmek için bir metrik olarak R-kareyi kullanabiliriz; bu, regresyon modelinin uyum iyiliğine dair içgörü sağlar.

import numpy as np 

average_r2 = np.mean(scores) 

print(f"R² Score for each fold: {[round(score, 4) for score in scores]}")
print(f"Average R² across {k} folds: {average_r2:.2f}")

Bu kısım, tüm katlamalar için ortalama R² skorunu hesaplar. Her katlamanın skorları önce yazdırılır, ardından ortalama skor gelir. np.mean() kullanımı, çapraz doğrulama sırasında toplanan skorların ortalamasını hesaplar.

Nihai sonuçları görüntüleme

Şimdi modelin performansını kapsamlı bir şekilde anlamak için sonuçları bir araya getiriyoruz. Ortalama R² skoru, modelin etkililiğini gösteren tek bir metrik sağlar. 

R² Score for each fold: [0.5758, 0.6137, 0.6086, 0.6213, 0.5875]
Average R² across 5 folds: 0.60

Bu, önceki adımdaki kodun çıktısıdır. Her katlama için R² skorlarını ve ortalama R² skorunu gösterir.

K-Katlamalı Çapraz Doğrulamadaki ‘K’ neyi ifade eder?

K-Katlamalı Çapraz Doğrulamada ‘K’, veri kümesinin bölündüğü grup sayısını ifade eder. Bu sayı, modelin kaç tur testten geçeceğini belirler ve her segmentin bir kez test kümesi olarak kullanılmasını sağlar. 

İşte bir sezgisel yaklaşım: 

  • K = 2 veya 3: Hesaplama kaynakları sınırlı olduğunda veya daha hızlı bir değerlendirme gerektiğinde bu seçimler faydalı olabilir. Eğitim döngülerinin sayısını azaltarak zaman ve işlem gücü tasarrufu sağlarlar; yine de makul bir performans tahmini sunarlar. 
  • K = 5 veya 10: K = 5 veya K = 10 seçimi yaygındır; çünkü hesaplama verimliliği ile model performansı tahmini arasında iyi bir denge sağlarlar. 
  • K = 20: Daha büyük bir K değeri daha ayrıntılı bir performans değerlendirmesi sağlayabilir. Ancak hesaplama yükünü artırır ve alt kümeler çok küçükse daha yüksek varyansla sonuçlanabilir.

Model performansı tahmini hakkında daha fazlası için kapsamlı Python'da Model Doğrulama kursumuza göz atmayı düşünün.

K-Katlamalı Çapraz Doğrulama kullanırken temel hususlar

K-Katlamalı Çapraz Doğrulamadaki katlama sayısı veya 'K', hem doğrulama sürecinin ayrıntı düzeyini hem de hesaplama yükünü etkiler. Daha küçük bir K (ör. 3-5) daha hızlı olabilir ancak her katlama veri kümesinin daha büyük bir bölümünü temsil ettiği için daha az güvenilir tahminler verebilir; bu da çeşitli veri senaryolarını kaçırma riskini taşır. Daha büyük bir K (ör. 10) artan hesaplama maliyeti karşılığında daha ayrıntılı bir değerlendirme sunar. Yaygın bir başlangıç noktası, aşırı hesaplama olmadan güvenilir bir tahmin için genellikle yeterli olan K=5 veya K=10'dur.

K-Katlamalı Çapraz Doğrulamada veriyi karıştırmak, model değerlendirmesinin geçerliliğini artırmak için şiddetle tavsiye edilir. shuffle=True ayarlanarak yapılan karıştırma, doğrulama sürecinde önyargı oluşturabilecek veri kümesindeki herhangi bir doğal düzeni bozar. Bu, her katlamanın tüm veri kümesini temsil etmesini sağlar ki bu, modelin yeni verilere ne kadar iyi genelleştiğini değerlendirmek için kritik önemdedir. Ancak, zaman serileri gibi veri noktalarının sırasının anlamlı olduğu durumlarda, öğrenme sürecinin bütünlüğünü korumak için karıştırmaktan kaçınmak önemlidir. 

K-Katlamalı Çapraz Doğrulamanın sonuçlarının tekrarlanabilir olmasını sağlamak, modelin kararlılığını ve performansını doğrulamak için kritiktir. Bunu, verilerin farklı çalıştırmalarda tutarlı şekilde karıştırılmasını sağlayan random_state parametresini ayarlayarak başarabilirsiniz; bu da aynı veri bölünmelerine ve dolayısıyla tekrarlanabilir sonuçlara imkan tanır.  

Standart K-Katlamalı vs. Diğer Çapraz Doğrulama Yöntemleri

Güvenilir makine öğrenmesi modelleri oluştururken doğru çapraz doğrulama tekniğini seçmek çok önemlidir. Seçim, büyük ölçüde veri kümesinin özel özelliklerine ve eldeki makine öğrenmesi görevine bağlıdır. Farklı teknikler, dengesiz veriler veya gruplanmış veri yapıları gibi çeşitli zorluklarla başa çıkmak için tasarlanmıştır. 

Aşağıdaki tablo, en popüler çeşitli çapraz doğrulama yöntemlerinin kapsamlı bir karşılaştırmasını sunar; benzersiz özelliklerini ve en iyi kullanım alanlarını vurgulayarak, özel modelleme ihtiyaçlarınız için en etkili tekniği seçmenize yardımcı olur.

ÇD TürüKullanımAçıklamaNe Zaman Kullanılır
Standart K-Katlamalı Çapraz DoğrulamaHem regresyon hem sınıflandırmaVeri kümesini k eşit büyüklükte katlamaya böler. Her katlama bir kez test kümesi olarak kullanılır.Kapsamlı model değerlendirmesi için dengeli veri kümelerinde en iyisidir.
Tabakalı (Stratified) K-Katlamalı Çapraz DoğrulamaAğırlıklı olarak sınıflandırmaHer katlamada, orijinal veri kümesindeki sınıf etiketlerinin aynı oranını korur.Grupların oranlarını korumak için dengesiz sınıflara sahip sınıflandırma görevlerinde harikadır.
Leave-One-Out Çapraz Doğrulama (LOOCV)Hem regresyon hem sınıflandırmaHer bir veri noktası bir kez test kümesi olarak kullanılır, geri kalanı eğitimdir.Eğitim verisini en üst düzeye çıkarmak için küçük veri kümelerinde harikadır; ancak hesaplama açısından yoğundur.
Leave-P-Out Çapraz DoğrulamaHem regresyon hem sınıflandırmaLOOCV'ye benzer, ancak test kümesi için p veri noktasını dışarıda bırakır.Veri örneklerindeki değişimlerin model kararlılığını nasıl etkilediğini test etmek için küçük veri kümelerinde idealdir.
Grup K-Katlamalı Çapraz DoğrulamaGruplarla hem regresyon hem sınıflandırmaVeri noktalarının bağımsız olmadığı durumlarda yararlı olacak şekilde, hiçbir grubun hem eğitim hem test kümelerinde yer almamasını sağlar.Bağımsız gruplar üzerinde performansı test etmek için mantıksal gruplanmalar içeren veri kümelerinde harikadır.
Tabakalı Grup K-Katlamalı Çapraz DoğrulamaGruplandırılmış verilerle ağırlıklı olarak sınıflandırmaTabakalamayı ve grup bütünlüğünü birleştirir; grupların katlamalar arasında bölünmemesini sağlar.Hem sınıf hem grup bütünlüğünü korumak için gruplanmış ve dengesiz veri kümelerinde harikadır.

Sonuç

Bu rehber, K-Katlamalı Çapraz Doğrulamanın makine öğrenmesi modellerini değerlendirmek için güçlü bir araç olduğunu gösterdi. Verinin farklı bölümleri üzerinde modeli test ettiği için, basit Train-Test Split yönteminden daha iyidir ve görülmemiş verilerde de iyi çalışacağına güvenmenize yardımcı olur.

Makine öğrenmesine dalıyorsanız, size yardımcı olacak bazı harika kaynaklar şunlardır: 

  • DataCamp'in Scikit-Learn ile Denetimli Öğrenme Kursu: Bu kurs, öngörücü modellemeyi kavramanıza yardımcı olur. Uygulamalıdır ve pratiktir; yolculuğunuza başlamak için idealdir. Kursa buradan göz atın.
  • Python ile Makine Öğrenmesi Eğitimi: Bu eğitim, temel makine öğrenmesi fikirlerini açıklar ve nasıl uygulayacağınızı gösterir. Bildiklerinizi pekiştirmek için idealdir. Eğitimi buradan okuyun.
  • Scikit-Learn Cheat Sheet: Bunu elinizin altında tutun. Projeler üzerinde çalışırken makine öğrenmesi fonksiyonlarını nasıl kullanacağınıza dair hızlı bir hatırlatma için mükemmeldir. Cheat sheet'i buradan alın.
  • DataCamp'in Kaggle Yarışması Kursu: Yeteneklerinizi sınamak istiyorsanız bu kurs harikadır. Kaggle yarışmalarında nasıl parlayacağınızı öğretir; öğrendiklerinizi eğlenceli ve rekabetçi bir şekilde uygulayabilirsiniz. Kursa buradan başlayın.

Bu kaynaklar, ister yeni başlıyor olun ister becerilerinizi tazelemek isteyin, size rehberlik etmek için burada. Teori ve pratik ipuçlarının bir karışımını sunarlar; doğru modelleri oluşturup iyileştirmeye iyi hazırlanmanızı sağlarlar.

Sıkça Sorulan Sorular

K-Katlamalı Çapraz Doğrulamadan elde edilen çapraz doğrulama skorlarını nasıl yorumlarsınız?

Çapraz doğrulama skorları, modelin görülmemiş veriler üzerindeki performansının bir tahminini sunar. Katlamalar boyunca daha yüksek bir ortalama skor, daha iyi genelleme anlamına gelir. Ancak, katlamalar arasındaki skorların varyansını da dikkate almak önemlidir. Yüksek varyans, modelin performansının belirli veri bölünmesine duyarlı olduğunu, bunun da aşırı uyum veya daha fazla veriye ihtiyaç işareti olabileceğini gösterir. Sağlam ve güvenilir bir model için yüksek ortalama skor ve düşük varyans hedefleyin.

K-Katlamalı Çapraz Doğrulamayı zaman serisi verileri için kullanabilir misiniz?

Standart K-Katlamalı Çapraz Doğrulama, verinin bağımsız ve özdeş dağıtıldığını varsayar; bu varsayım, zaman serilerinde zamansal bağımlılıklar nedeniyle ihlal edilir. Zaman serileri için, yalnızca test setinden önce gerçekleşen veri noktalarını içeren Time Series Split veya ileri zincirleme gibi teknikler kullanılmalıdır.

K-Katlamalı Çapraz Doğrulamayı kurarken kaçınılması gereken yaygın tuzaklar nelerdir?

Bazı yaygın tuzaklar arasında, veri kümesi doğal bir düzene sahipse önyargı oluşturabilecek veriyi karıştırmamak ve katlama atamalarındaki rastgeleliği göz ardı etmek yer alır; bu, farklı çalıştırmalarda model performansında değişimlere yol açabilir. Uygun olduğunda verinin karıştırılmasını sağlamak ve tekrarlanabilirlik için sabit bir random_state ayarlamak, bu sorunlardan kaçınmak için temel uygulamalardır.

K-Katlamalı Çapraz Doğrulama, denetimsiz öğrenme görevleri için kullanılabilir mi?

K-Katlamalı Çapraz Doğrulama en çok, öngörücü performansı tahmin etmek için denetimli öğrenmede kullanılır; ancak, katlamalar boyunca küme atamalarının kararlılığını değerlendirerek kümeleme gibi bazı denetimsiz görevler için de uyarlanabilir. Yine de, denetimli ortamlardaki kadar doğrudan değildir.

K-Katlamalı Çapraz Doğrulama, birden çok özellik ölçeğine sahip veri kümelerini nasıl ele alır?

K-Katlamalı Çapraz Doğrulamanın kendisi, birden çok özellik ölçeğini doğrudan ele almaz. Çapraz doğrulamayı uygulamadan önce veri kümesini ön işlemek; genellikle normalizasyon veya standardizasyon kullanmak önemlidir. Bu, daha büyük ölçekli özelliklerin modelin öğrenme sürecine hakim olmasını önler ve daha genellenebilir ve adil bir model değerlendirmesine yol açar.

Vinod Chugani

Yazar

Vinod Chugani

Vinod Chugani kariyerine Tokyo'da JPMorgan'ın en genç Hedge Fund Sales Desk Lideri olarak başladı ve daha sonra Lehman Brothers'ta bireysel satış rekoru kırdı, ardından 30 ülkede faaliyet gösteren bir elektronik dağıtım işi kurdu ve veriye yönelmeden önce geliri SG$100 milyonun üzerine taşıdı. Duke Ekonomimezunu ve NYC Data Science Academy alum, Maven'de Hugo Bowne-Anderson'ın Building AI Applications kursu için 100+ başvuru arasından seçilen üç bursiyerden biriydi. Bugün, istatistikten ajan temelli yapay zekâya uzanan konularda DataCamp, KDnuggets, Machine Learning Mastery ve Statology için yazıyor ve adında 1.000'i aşkın bire bir oturum bulunan NYC Data Science Academy'de veri profesyonellerine mentorluk yapıyor.

 

Konular

İlgili