Random_state Knn.score Değerini Nasıl Arttırıyor

Mantığını bir türlü anlayamadım. Random_state değerini değiştirdikçe hassasiyette artıp azalıyor. Kısaca açıklayabilecek biri olursa çok memnun olurum

scikit-learn kullanıyorsunuz değil mi?

train_test_split'in random_state'inden bahsediyorsunuz değil mi?

kodunuzu paylaşabilir misiniz?

İkisinde evet


Kodum burada ama daha yeni öğrenmeye başladığım için biraz karışık ve gereksiz şeyler var.
Şimdiden çok teşekkürler

KNN algoritmasının training kısmında yaptığı kayda değer tek şey veriyi daha sonra hatırlayabilmek adına bir kenarda tutmaktır. Algoritmanın işleyişi aşağı yukarı şu şekilde:

Girdiler:
    training_verileri: eğitim için ayrılmış veriler
    k: kaç tane komşuya bakılacağı
    test_verisi: sınıflandırılmak istenen eleman

Algoritma:
    en_yakın_k_komşu =  komşuları_bul(test_verisi, training_verileri, kaç_tane=k)
    sınıf = çoğunluk_ne_diyor(en_yakın_k_komşu)

Çıktı:
    test_verisi'ne komşuların oy çokluğuyla  atanan değer
    (veya ortalamasıyla eğer regresyon ise)

Dolayısıyla train_test_split'in elimizdeki tüm veriyi nasıl bir biçimde train ve test alt kümelerine ayırdığı önem arz ediyor.

Regresyon üzerinden bir örnek:

Amacımız regresyon olduğunda en yakın k komşunun değerinin ortalamasını atayabiliriz. Şimdi k = 1 olsun. Dolayısıyla ortalama yok direkt en yakın değer ne ise onu atıyoruz.

  • İlk figürde, kırmızı ile gösterilen 4 adet test verisinin her birine “en sol üstteki” mavi training verisinin değeri atanır. Yaklaşık -2.1. Ama gerçek değerler -3, -4 civarlarında: performans kötü olacaktır.

  • İkinci figürde, yine kırmızı ile gösterilen 4 adet test verisine en yakın komşuları atanır yine. Komşular gerçek değerlere hayli yakın; sırf talihli bir train/test ayrımı yaptık diye performans yüksek olacaktır.

Bu durum sizin ele aldığınız sınıflandırma olayında da geçerli (görselleştirmesi biraz daha zor o kadar).

Velhasıl, train_test_split'in random_state parametresi aha da bu ayrımı gerçekleştirmeyi kontrol ettiği için, farklı performanslar alıyorsunuz.

Peki ne yapmak gerekir? Cross-validation'a göz atmak isteyebilirsiniz: https://scikit-learn.org/stable/modules/cross_validation.html

2 Beğeni