KNN/ K-En Yakın Komşuluk Algoritması — Machine Learning
Bu yazımızda makine öğrenmesindeki sınıflandırma modellerinden biri olan KNN algoritmasından bahsedeceğiz.
Sınıflandırma, elimizdeki veri setinde bulunan bağımlı değişkenin sınıflardan oluştuğu durumlarda kullanılan modelleme türüdür. K-En yakın komşu algoritması da sınıflandırma modelleri arasında yer alan algoritmalardandır.
Bu algoritmayı gözlemlerin birbirine olan uzaklıkları üzerinden tahmin yapılması olarak tanımlayabiliriz.
Elimizde kırmızı yıldızlar ve yeşil üçgenler bulunan bir veri seti olsun. Bu kümeye yeni bir veri eklendiğinde eklenen veriyi kendine en yakın mesafedeki diğer gruba dahil edilir. Mesafe hesaplanırken genelde Öklid Uzaklığı yöntemi kullanılır.
Bazen sadece en yakındaki veriyi kontrol etmek yetmeyebilir. Örneğin yeni eklenen verinin en yakınında kırmızı yıldız var ancak yakınlarda çok sayıda da yeşil üçgenler var. Böyle bir durumda o bölgede yeşil üçgenler daha baskın olur. Bu sefer “k” yani en yakındaki kaç verinin kontrol edileceğine bakılarak sınıflandırma yapılır.
Sonuç olarak bu örneğin yeşil üçgen sınıfında yer alıcağı görülmüş olur. Algoritma kullanılırken veriler 0 ve 1 olarak gruplandırılır. Böylece matamatiksel olarak da sınıflandırmayı ifade edebiliriz.
Şimdi örnek bir Python kodu yazalım.
Elimizdeki verilerden yola çıkarak hastaneye gelen bir kişinin şeker hastası olup olmadığını tahmin etmeye çalışalım.
X ve Y olarak veriler sınıflandırıldıktan sonra random_state=42 algoritması kullanılarak rastgelelik sağlanmıştır.
Sonraki aşamada, knn_model komutu ile model nesnemiz oluşturulmuştur.
Kurduğumuz model ile tahmin etme işlemi gerçekleştirelim. Bunun için predict() fonksiyonunu kullandık. Ardından accuracy() hesaplamamız gerekiyor.
Doğru sınıflandırma oranımız 0.68 olarak verilmiştir. Şimdi tunning bölümüne geçelim.
Bu kısımda 1 -50 aralığındaki k değerlerini oluşturduk. knn model nesnemiz knn_params ise aranacak parametremizdir. 0.74 k değerlerine karşılık gelen best skorudur.
Komşu sayımızı 11 olarak verdik ve final modelimizde gerçek y değeri ile tahmin edilen y değerlerini karşılaştırdık. y_pred işlemi yerine knn_tunned ile de skoru elde edebiliriz.
Sonraki yazımızda görüşmek üzere…