K-Nearest Neighbors (KNN)
K-En Yakın Komşular'ı (KNN) keşfet. Bu denetimli öğrenme algoritmasının sınıflandırma ve regresyon için nasıl çalıştığını, görsel aramadaki kullanımını ve Ultralytics YOLO26 ile entegrasyonunu öğren.
K-En Yakın Komşular (KNN), hem sınıflandırma hem de regresyon görevleri için denetimli öğrenme alanında kullanılan sağlam ve sezgisel bir algoritmadır. Basitliğiyle öne çıkan KNN, eğitim aşamasında bir model oluşturmadığı veya parametre öğrenmediği için genellikle "tembel öğrenici" olarak sınıflandırılır. Bunun yerine tüm eğitim verisi kümesini belleğinde tutar ve yalnızca bir tahmin istendiğinde hesaplama yapar. Algoritmanın temel ilkesi özellik benzerliğine dayanır: benzer niteliklere sahip veri noktalarının çok boyutlu bir özellik uzayında birbirlerine yakın konumlarda bulunduğunu varsayar.
Algoritma Nasıl Çalışır#
K-En Yakın Komşular mekanizması, mesafe hesaplamalarıyla çalışır. Yeni bir sorgu noktası tanıtıldığında algoritma, yeni girdiye en yakın olan 'K' sayıdaki eğitim örneğini bulmak için depolanan veri kümesini arar.
-
Mesafe Ölçümü: Sistem, sorgu noktası ile veritabanındaki diğer tüm noktalar arasındaki mesafeyi hesaplar. En yaygın metrik, noktalar arasındaki düz çizgi mesafesini ölçen Öklid mesafesidir. Veri türüne bağlı olarak Manhattan mesafesi (taksi geometrisi) veya Minkowski mesafesi gibi diğer metrikler de kullanılabilir.
-
Komşu Seçimi: Mesafeleri hesapladıktan sonra algoritma bunları sıralar ve en yakın 'K' girdiyi belirler.
-
Karar Verme: - Sınıflandırma için: Algoritma bir "çoğunluk oylaması" sistemi kullanır. K komşu arasında en sık görülen sınıf etiketi sorgu noktasına atanır. Bu yöntem temel görüntü sınıflandırma görevlerinde yaygın olarak kullanılır. - Regresyon için: Tahmin, sürekli bir değişkeni tahmin etmek üzere en yakın K komşunun değerlerinin ortalaması alınarak hesaplanır.
Doğru 'K' Değerini Seçme#
'K' için en uygun değeri seçmek, hiperparametre ayarlama sürecinde kritik bir adımdır. K seçimi, modelin performansını ve yeni verilere genelleme yeteneğini önemli ölçüde etkiler.
- Düşük K Değeri: Küçük bir K (ör. K=1), modeli verilerdeki gürültüye ve aykırı değerlere karşı oldukça hassas hâle getirir ve bu da aşırı öğrenmeye yol açabilir.
- Yüksek K Değeri: Büyük bir K, karar sınırlarını yumuşatarak gürültünün etkisini azaltır; ancak belirgin örüntüleri bulanıklaştırabilir ve bu da yetersiz öğrenmeyle sonuçlanır.
Gerçek Dünya Uygulamaları#
Derin sinir ağlarına kıyasla basit olmasına rağmen KNN, özellikle gelişmiş özellik çıkarma teknikleriyle birleştirildiğinde modern yapay zekâda önemini korur.
- Öneri Sistemleri: KNN, medya akışı ve e-ticarette işbirlikçi filtrelemeyi kolaylaştırır. Platformlar, benzer izleme geçmişlerine veya satın alma davranışlarına sahip kullanıcıları (komşuları) belirleyerek bir kullanıcının "en yakın komşularının" tercihlerine göre beğenme olasılığı yüksek ürünler önerebilir.
- Anomali Tespiti: Siber güvenlik ve finansta KNN, anomali tespiti için kullanılır. İşlemler veya ağ etkinlikleri bir özellik uzayına haritalanır; "normal" etkinliğin yoğun kümelerinden uzakta kalan her yeni veri noktası, olası bir dolandırıcılık veya güvenlik ihlali olarak işaretlenir.
- Görsel Arama: Modern vektör arama motorları, YOLO26 gibi modeller tarafından oluşturulan yüksek boyutlu gömme vektörlerine dayalı benzer görüntüleri hızlıca almak için genellikle KNN'nin optimize edilmiş bir çeşidi olan Yaklaşık En Yakın Komşu (ANN) algoritmalarına dayanır.
Zorluklar ve Dikkat Edilmesi Gerekenler#
Etkili olmasına rağmen KNN, boyutluluk lanetiyle karşı karşıyadır. Özelliklerin (boyutların) sayısı arttıkça veri noktaları seyrekleşir ve mesafe metrikleri etkinliklerini kaybeder. Ayrıca tüm eğitim verilerini depoladığı için KNN, büyük veri kümelerinde yoğun bellek kullanabilir ve yüksek çıkarım gecikmesi yaşayabilir. Bu sorunu çözmek için uygulayıcılar genellikle verileri boyutluluk azaltma teknikleriyle, örneğin Temel Bileşen Analizi (PCA) ile ön işler veya aramayı hızlandırmak için KD-Trees gibi özel veri yapıları kullanır. Veri kümelerinin ve model eğitiminin kurumsal ölçekte ölçeklendirilmesi için Ultralytics Platform kullanılarak karmaşık verilerin ön işlenmesi için gereken işlem kaynaklarının yönetilmesine yardımcı olunabilir.
KNN ile K-Means Arasındaki Farklar#
Benzer adları sıklıkla karışıklığa yol açtığı için K-En Yakın Komşular ile K-Means kümelemesini birbirinden ayırmak önemlidir.
- KNN, tahmin yapmak için etiketli verileri kullanan denetimli bir öğrenme algoritmasıdır.
- K-Means, etiketsiz verileri yapısal benzerliklere göre kümeler hâlinde gruplamak için kullanılan denetimsiz öğrenme algoritmasıdır.
Uygulama Örneği#
Aşağıdaki kod parçacığı, popüler Scikit-learn kütüphanesini kullanarak basit bir KNN sınıflandırma iş akışını gösterir. Bilgisayarlı görü bağlamında, KNN sınıflandırıcısına aktarılmadan önce girdi "özellikleri" genellikle YOLO26 gibi bir derin öğrenme modeli tarafından çıkarılır.
from sklearn.neighbors import KNeighborsClassifier
# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)
# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")








