Makine Öğrenimi Bölüm-2 (k-En Yakın Komşuluk)

E. Kaan Ulgen
2 min readOct 16, 2017

--

En çok kullanılan gözetimli öğrenme algoritmalarını ele alacağız.

Şekil-1: Gözetimli Öğrenme Algoritmaları

2.1 k-En Yakın Komşuluk — k Nearest Neighbours

k-en yakın komşuluk (KNN) algoritması, uygulaması kolay gözetimli öğrenme algoritmalarındandır. Hem sınıflandırma hem de regresyon problemlerinin çözümünde kullanılıyor olmakla birlikte, endüstride çoğunlukla sınıflandırma problemlerinin çözümünde kullanılmaktadır.

KNN algoritmaları, 1967 yılında T. M. Cover ve P. E. Hart tarafından önerilmiştir. Algoritma, sınıfları belli olan bir örnek kümesindeki verilerden yararlanılarak kullanılmaktadır. Örnek veri setine katılacak olan yeni verinin, mevcut verilere göre uzaklığı hesaplanıp, k sayıda yakın komşuluğuna bakılır. Uzaklık hesapları için genelde 3 tip uzaklık fonksiyonu kullanılmaktadır:

  • “Euclidean” Uzaklık
  • “Manhattan” Uzaklık
  • “Minkowski” Uzaklığı’dır.
Şekil-2: KNN Örnek Çizim

KNN; eski, basit ve gürültülü eğitim verilerine karşı dirençli olması sebebiyle en popüler makine öğrenme algoritmalarından biridir. Fakat bunun yanında dezavantajı da mevcuttur. Örneğin, uzaklık hesabı yaparken bütün durumları sakladığından, büyük veriler için kullanıldığında çok sayıda bellek alanına gereksinim duymaktadır.

Şekil-3: KNN Adımları

KNN algoritmasının adımları:

  • İlk olarak k parametresi belirlenir. Bu parametre verilen bir noktaya en yakın komşuların sayısıdır. Örneğin: k=2 olsun. Bu durumda en yakın 2 komşuya göre sınıflandırma yapılacaktır.
  • Örnek veri setine katılacak olan yeni verinin, mevcut verilere göre uzaklığı tek tek hesaplanır. İlgili uzaklık fonksiyonları yardımıyla.
  • İlgili uzaklılardan en yakın k komşu ele alınır. Öznitelik değerlerine göre k komşu veya komşuların sınıfına atanır.
  • Seçilen sınıf, tahmin edilmesi beklenen gözlem değerinin sınıfı olarak kabul edilir. Yani yeni veri etiketlenmiş (label) olur.

Python uygulaması:

  • Bu çalışma kapsamında python programlama dilinin “scikit-learn” modülünden yararlanılmıştır. “scikit-learn”, Numpy, SciPy ve Matplotlib modüllerinden oluşturulan bir makine öğrenme modülüdür. Scikit-learn, sınıflandırma, regresyon, kümeleme, boyut azaltma, model seçimi ve veri önişleme gibi veri analizinde de kullanılanan kısımlar için basit ve verimli araçlar sunar.
  • Veri seti olarak scikit-learn içerisinde mevcut olan iris verisinden yararlanılmıştır.
Şekil-4: KNN Uygulaması

Gelecek yazının konusu “yapay sinir ağları” üzerine olacak …

--

--