En Yakın Komşular (K-Nearest Neighbors)

K-En Yakın Komşular (KNN), veri noktalarının yakınlığına göre sonuçları tahmin eden, sınıflandırma ve regresyon için basit, parametrik olmayan bir algoritmadır.

k-en yakın komşular (KNN) algoritması, makine öğreniminde sınıflandırma ve regresyon görevlerinde kullanılan parametrik olmayan, denetimli bir öğrenme algoritmasıdır. Yakınlık kavramına dayanır ve benzer veri noktalarının birbirine yakın olduğu varsayılır. KNN bir tembel öğrenme algoritmasıdır; yani bir eğitim aşaması gerektirmez, tüm eğitim verisini saklayarak yeni veri noktalarının sınıfını veya değerini belirlemek için bu verileri kullanır. Algoritma, bir test veri noktası için ‘k’ eğitim veri noktasına en yakın olanları bulur ve bu komşulara göre çıktıyı tahmin eder. Bu yöntem oldukça sezgiseldir ve yeni verileri bilinen örneklerle karşılaştırmaya dayanan insan algısı stratejilerini taklit eder.

KNN Nasıl Çalışır?

KNN, verilen bir sorgu noktasına en yakın ‘k’ veri noktasını bulur ve bu komşuları kullanarak tahmin yapar.

  • Sınıflandırma görevlerinde algoritma, sorgu noktasını en yakın ‘k’ komşusu arasında en sık görülen sınıfa atar; buna çoğunluk oylaması denir. KNN’de çoğunluk oylaması, birden fazla sınıfla çalışılırken “çoğunluk oylaması” olarak da anlaşılabilir; burada sorgu noktası, en yakın komşuları arasında en fazla sayıya sahip olan sınıfa atanır, mutlak bir çoğunluk olmasa bile.
  • Regresyon görevlerinde ise değeri, en yakın ‘k’ komşunun değerlerinin ortalamasını alarak tahmin eder.

Yakınlık ve benzerlik ilkeleri, insan algısının temel taşları olduğu gibi, KNN’nin de temelini oluşturur; çünkü özellik uzayında birbirine yakın olan veri noktalarının daha benzer olduğu ve dolayısıyla benzer sonuçlara sahip olacağı varsayılır.

Mesafe Metrikleri

En yakın komşuları belirlemek için KNN, performansı açısından kritik olan çeşitli mesafe metriklerini kullanır:

  • Öklidyen Mesafe: Çok boyutlu bir uzaydaki iki nokta arasındaki doğru mesafesidir ve genellikle sürekli değişkenler için kullanılır. KNN için en yaygın mesafe metriğidir ve veri yoğun ve sürekli olduğunda özellikle faydalıdır.
  • Manhattan Mesafesi: Taksi mesafesi olarak da bilinir; iki noktanın koordinatları arasındaki mutlak farkların toplamı ile hesaplanır. Hareketlerin dikey ve yatayla sınırlı olduğu ızgara benzeri senaryolarda kullanışlıdır.
  • Minkowski Mesafesi: Hem Öklidyen hem de Manhattan mesafelerinin genelleştirilmiş bir şeklidir ve ‘p’ parametresine bağlıdır. p=1 ise Manhattan mesafesi, p=2 ise Öklidyen mesafesi olur. Bu mesafe metriği, seçilen ‘p’ değerine göre esneklik sağlar.
  • Hamming Mesafesi: Kategorik veriler için kullanılır ve iki ikili vektör arasındaki farklı bitlerin sayısını ölçer. Özellikle özniteliklerin ikili olduğu ikili sınıflandırma problemlerinde faydalıdır.

Doğru ‘k’ Değerini Seçmek

KNN’deki ‘k’ parametresi, dikkate alınacak komşu sayısını ifade eder. Doğru ‘k’ seçimi kritiktir:

  • Küçük bir ‘k’, modelin eğitim verisindeki gürültüye karşı fazla hassas olmasına yol açar ve genellemeyen, aşırı öğrenen modeller oluşturabilir.
  • Büyük bir ‘k’, modelin fazla genelleşmesine, önemli desenleri göz ardı etmesine ve düşük tahmin performansına neden olur.
  • Genellikle ‘k’, çapraz doğrulama ile seçilir ve sınıflandırmada eşitlikleri önlemek için tek sayı olmalıdır. ‘k’ seçiminin modelin doğruluğu üzerinde büyük etkisi olabilir ve çoğunlukla deneysel olarak belirlenir.

Avantajlar ve Dezavantajlar

Avantajlar

  • Basit ve Sezgisel: Anlaşılması ve uygulanması kolaydır, bu yüzden yeni başlayanlar için iyi bir tercihtir. KNN’nin sadeliği, test örneklerini saklanan örneklerle karşılaştırma yaklaşımında yatar.
  • Eğitim Aşaması Yok: KNN açık bir eğitim aşaması gerektirmez; tahminleri, saklanan veri kümesini kullanarak yapar. Bu, modele yeni veri noktaları eklenerek kolayca güncelleme yapılabileceği anlamına gelir.
  • Çok Yönlü: Hem sınıflandırma hem de regresyon görevlerinde kullanılabilir ve farklı alanlarda geniş uygulama alanına sahiptir. Çoklu etiketli sınıflandırma problemleri için de uygundur.

Dezavantajlar

  • Hesaplama Açısından Yoğun: Her yeni veri noktası için tüm veri kümesiyle karşılaştırma yapmayı gerektirir ve özellikle büyük veri setlerinde yavaş ve kaynak tüketici olabilir. KNN’nin zaman karmaşıklığı O(n)‘dir; burada n, eğitim örneklerinin sayısıdır.
  • Aykırı Değerlere Duyarlı: Aykırı değerlerin varlığı, özellikle ‘k’ küçük olduğunda tahminleri önemli ölçüde etkileyebilir; bu anormal noktalar sonuçları bozabilir.
  • Boyutların Laneti: Yüksek boyutlu alanlarda algoritmanın performansı, veri noktaları arasındaki mesafelerin anlamını yitirmesiyle düşer. Boyut arttıkça uzayın hacmi büyür ve veri seyrekleşir. Bu seyreklik, KNN’nin en yakın komşuları etkili bir şekilde bulmasını zorlaştırır.

Kullanım Alanları

KNN, sadeliği ve etkinliği sayesinde çeşitli alanlarda uygulanır:

  • Tavsiye Sistemleri: Kullanıcıların tercihleriyle benzer kullanıcıların tercihlerine bakarak ürün veya içerik önerilerinde kullanılır. KNN, öznitelik benzerliğini değerlendirerek benzer kullanıcıları veya nesneleri belirlemede yardımcı olur.
  • Desen Tanıma: El yazısı tanıma ve diğer desen tanıma görevlerinde kullanılır; örneğin, piksel değerlerinin benzerliğine göre resimleri sınıflandırabilir.
  • Veri Tamamlama: Eksik değerleri, benzer veri noktalarına göre tahmin ederek doldurmakta kullanılır ve veri setinin bütünlüğünü korur.
  • Finans ve Sağlık: Finansal piyasa tahminleri, risk değerlendirmesi ve tıbbi teşhislerde, geçmiş verilere dayalı benzerlik analizleriyle uygulanır. Sağlıkta, bilinen vakalarla semptomları karşılaştırarak hasta tanısı sunabilir.

Python ile Uygulama

KNN, Python’da scikit-learn gibi kütüphanelerle uygulanabilir. İşte sınıflandırma için KNN kullanımına dair temel bir örnek:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# Veri setini yükle
iris = load_iris()
X, y = iris.data, iris.target

# Veriyi eğitim ve test setlerine ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# KNN sınıflandırıcısını başlat (k=3)
knn = KNeighborsClassifier(n_neighbors=3)

# Modeli eğit
knn.fit(X_train, y_train)

# Tahmin yap
y_pred = knn.predict(X_test)

# Doğruluğu değerlendir
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

Bilimsel Araştırmalarda K-En Yakın Komşular (KNN)

K-En Yakın Komşular (KNN), özellikle büyük veri kümeleri bağlamında, çoklu ortam bilgi erişimi, veri madenciliği ve makine öğrenimi gibi çeşitli alanlarda temel bir algoritmadır.

Öne Çıkan Araştırma Makaleleri:

  • “Approximate k-NN Graph Construction: a Generic Online Approach” Wan-Lei Zhao ve ark.:
    Hem yaklaşık k-en yakın komşu arama hem de grafik oluşturma için etkili bir yöntem sunar. Makalede, çok çeşitli veri ölçekleri ve boyutlarında çalışabilen, çevrimiçi güncellemeleri destekleyen (birçok mevcut yöntemde mümkün olmayan) dinamik ve uygulanabilir bir çözüm gösterilmiştir. Daha fazlasını oku.

  • “Parallel Nearest Neighbors in Low Dimensions with Batch Updates” Magdalen Dobson ve Guy Blelloch:
    kd-ağacı ve Morton sıralamasını birleştirerek düşük boyutlu veriler için optimize edilmiş bir zd-ağacı yapısı sunan paralel algoritmalar tanıtır. Yazarlar, bu yaklaşımlarının mevcut algoritmalardan daha hızlı olduğunu ve paralel işlemeyle önemli hız artışları sağladığını göstermiştir. zd-ağacı, k-en yakın komşu veri yapılarında bir ilk olarak paralel toplu-dinamik güncellemeleri destekler. Daha fazlasını oku.

  • “Twin Neural Network Improved k-Nearest Neighbor Regression” Sebastian J. Wetzel:
    k-en yakın komşu regresyonunda ikiz sinir ağları kullanılarak yeni bir yaklaşımı araştırır. Bu yöntem, regresyon hedefleri arasındaki farkları tahmin etmeye odaklanır ve küçükten orta büyüklükteki veri setlerinde geleneksel sinir ağları ve k-en yakın komşu regresyon tekniklerine göre daha iyi performans sağlar. Daha fazlasını oku.

Sıkça sorulan sorular

K-En Yakın Komşular (KNN) algoritması nedir?

K-En Yakın Komşular (KNN), sınıflandırma ve regresyon için kullanılan parametrik olmayan, denetimli bir öğrenme algoritmasıdır. Sonuçları, bir sorguya en yakın 'k' veri noktasını belirleyerek ve bu komşulara dayanarak sonucu çıkararak tahmin eder.

KNN'nin başlıca avantajları nelerdir?

KNN, anlaşılması ve uygulanması kolaydır, açık bir eğitim aşaması gerektirmez ve hem sınıflandırma hem de regresyon görevlerinde kullanılabilir.

KNN'nin dezavantajları nelerdir?

KNN, büyük veri setlerinde hesaplama açısından yoğun olabilir, aykırı değerlere duyarlıdır ve boyutların laneti nedeniyle yüksek boyutlu verilerde performansı düşebilir.

'k' değeri KNN'de nasıl seçilir?

Optimal 'k' değeri genellikle çapraz doğrulama ile ampirik olarak belirlenir. Küçük bir 'k' aşırı öğrenmeye neden olabilirken, büyük bir 'k' az öğrenmeye yol açabilir; sınıflandırmada eşitliği önlemek için tek sayılar tercih edilir.

KNN'de hangi mesafe metrikleri kullanılır?

Yaygın mesafe metrikleri arasında, veri tipine ve problem gereksinimlerine bağlı olarak seçilen Öklidyen, Manhattan, Minkowski ve Hamming mesafeleri bulunur.

FlowHunt ile Akıllı Yapay Zeka Araçlarını Deneyin

FlowHunt’ın yapay zeka araçlarının ve sohbet botlarının veri analizinizi nasıl geliştirebileceğini ve iş akışlarını nasıl otomatikleştirebileceğini keşfedin. Yapay zeka çözümlerini kolayca oluşturun, test edin ve dağıtın.

Daha fazla bilgi

K-Ortalamalar Kümeleme

K-Ortalamalar Kümeleme

K-Ortalamalar Kümeleme, veri noktaları ile küme merkezleri arasındaki karesel mesafelerin toplamını en aza indirerek veri setlerini önceden belirlenmiş sayıda, ...

6 dakika okuma
Clustering Unsupervised Learning +3
Q-learning

Q-learning

Q-learning, yapay zeka (YZ) ve makine öğreniminin temel bir kavramıdır, özellikle pekiştirmeli öğrenme alanında. Ajanların ödül veya ceza yoluyla etkileşim ve g...

2 dakika okuma
AI Reinforcement Learning +3
Yakınsama

Yakınsama

Yapay zekâda yakınsama, makine öğrenimi ve derin öğrenme modellerinin yinelemeli öğrenme yoluyla kararlı bir duruma ulaşma sürecini ifade eder; böylece öngörüle...

6 dakika okuma
AI Convergence +4