KNN Adım Adım Nasıl Çalışır?
Algoritma dört adımda ilerler. (1) K değeri seçilir, örneğin K=5. (2) Yeni nokta ile tüm eğitim örnekleri arasındaki mesafe hesaplanır; Öklid formülü d = √(Σ(xᵢ − yᵢ)²) en yaygın tercihtir. (3) En küçük K mesafeye sahip komşular alınır. (4) Sınıflandırmada çoğunluk oylaması yapılır, regresyonda K komşunun hedef değerlerinin aritmetik veya mesafe ağırlıklı ortalaması alınır. Ağırlıklı varyantta her komşunun oyu 1/d ile çarpılır; yakın komşular kararı daha çok etkiler. Özellik ölçekleme bu sürecin en kritik ön adımıdır. Yaş (0–100) ile yıllık gelir (0–1.000.000 TL) aynı mesafe hesabına ham hâliyle girerse gelir sütunu sonucu tek başına belirler. Min-Max normalizasyonu tüm değerleri 0–1 aralığına çeker; StandardScaler ise ortalamayı 0, standart sapmayı 1 yapar. Scikit-learn'de bu iki adım genellikle tek bir Pipeline içinde zincirlenir: `Pipeline([('scaler', StandardScaler()), ('knn', KNeighborsClassifier(n_neighbors=5))])`.
K Değeri Nasıl Seçilir?
K, modelin bias-variance dengesini doğrudan ayarlayan tek hiperparametredir. K=1'de model tek komşuya güvenir: eğitim hatası sıfırdır ama gürültülü tek bir nokta bile kararı bozar, karar sınırı testere dişine döner (overfitting). K büyüdükçe sınır yumuşar; K=n'e yaklaşıldığında model her noktaya çoğunluk sınıfını atayan işe yaramaz bir tahminciye dönüşür (underfitting). Pratik rehber: - Küçük veri setlerinde K=3–7 çoğunlukla yeterlidir. - √n kuralı iyi bir başlangıçtır: 1.000 örneklik sette K≈31 civarından aramaya başlanır. - İkili sınıflandırmada K tek sayı seçilir; oy beraberliği yaşanmaz. - GridSearchCV ile Stratified K-Fold çapraz doğrulama, doğrulama hatasının dirsek (elbow) yaptığı noktayı güvenilir biçimde bulur. - Dengesiz sınıflarda büyük K, azınlık sınıfını ezme eğilimindedir; mesafe ağırlıklı oylama (weights='distance') bu etkiyi kısmen dengeler.
Mesafe Metrikleri
oklid Öklid (L2)
İki nokta arasındaki kuş uçuşu mesafe; sayısal ve ölçeklenmiş verilerde varsayılan tercih.
manhattan Manhattan (L1)
Eksenler boyunca toplam fark; yüksek boyutlu ve aykırı değer içeren verilerde L2'den daha kararlıdır.
minkowski Minkowski
L1 ve L2'yi genelleştiren parametrik metrik; p=1 Manhattan'a, p=2 Öklid'e karşılık gelir.
cosine Cosine Benzerliği
Vektörler arasındaki açıya bakar, büyüklüğü yok sayar; TF-IDF ve embedding tabanlı metin aramada standarttır.
hamming Hamming
Kaç konumun farklı olduğunu sayar; kategorik ve ikili (binary) özellikler için uygundur.
Kullanım Alanları
- check_circle Tıbbi Teşhis: Yaş, kan değerleri ve görüntü özelliklerine göre hastalık sınıflandırması; Pima diyabet ve Wisconsin meme kanseri setleri klasik KNN kıyas noktalarıdır.
- check_circle Tavsiye Sistemleri: Benzer kullanıcı veya ürünleri bularak film, müzik ve ürün önerme; işbirlikçi filtrelemenin (collaborative filtering) temel yapı taşıdır.
- check_circle RAG ve Vektör Arama: LLM destekli sistemlerde sorgu embedding'ine en yakın belge parçalarını getirme; FAISS ve vektör veritabanlarındaki ANN araması KNN'in modern hâlidir.
- check_circle Anomali ve Dolandırıcılık Tespiti: Ağ trafiğinde veya kart işlemlerinde en yakın komşulara uzaklığı yüksek noktaları outlier olarak işaretleme.
- check_circle Metin ve Görüntü Sınıflandırma: TF-IDF ya da embedding vektörleri üzerinde spam tespiti, konu etiketleme; küçük veri setlerinde hızlı bir baseline olarak MNIST'te %97 civarı doğruluğa ulaşır.
- check_circle Eksik Veri Doldurma: KNNImputer, eksik hücreleri en benzer K satırın değerleriyle doldurur; ortalama ile doldurmaya göre veri yapısını daha iyi korur.
Avantajlar ve Dezavantajlar
arti-basit Basit ve Yorumlanabilir
Tek ana hiperparametre (K) vardır; bir tahminin nedeni komşuları gösterilerek doğrudan açıklanabilir.
arti-egitimsiz Eğitim Maliyeti Sıfır
Model kurulmaz; yeni veri geldiğinde yeniden eğitim gerekmeden set büyütülerek güncel kalınır.
arti-nonparametrik Varsayımsız (Non-parametrik)
Veri dağılımı hakkında hipotez kurmaz; doğrusal olmayan karmaşık karar sınırlarını doğal olarak öğrenir.
eksi-yavas Yavaş Tahmin
Her sorgu O(n·d) mesafe hesabı ister; milyonlarca örnekte indekssiz kullanım pratik değildir.
eksi-bellek Yüksek Bellek Tüketimi
Tüm eğitim seti RAM'de tutulur; veri büyüdükçe bellek ihtiyacı doğrusal artar.
eksi-boyut Boyut Lanetine Duyarlı
Boyut arttıkça mesafeler birbirine yaklaşır; 100+ boyutta PCA veya özellik seçimi fiilen zorunludur.
KNN'i Hızlandırma: KD-Tree'den FAISS ve Vektör Veritabanlarına
Kaba kuvvet arama her sorguda tüm setle karşılaştırma yapar. KD-Tree ve Ball Tree gibi uzamsal indeksler bu maliyeti düşük boyutlarda O(d·log n) seviyesine indirir; scikit-learn `algorithm` parametresiyle uygun yapıyı otomatik seçer. Ancak KD-Tree yaklaşık 20 boyutun üzerinde kaba kuvvete karşı üstünlüğünü yitirir. Yüksek boyutlu embedding çağının cevabı yaklaşık en yakın komşu (ANN) yöntemleridir. HNSW (Hierarchical Navigable Small World) grafiği, %95+ recall ile milisaniye altı sorgu süresi sunar ve bugün Qdrant, Weaviate, Milvus ve pgvector'ün varsayılan indeksidir. Meta'nın açık kaynak FAISS kütüphanesi IVF ve PQ (product quantization) teknikleriyle milyarlarca vektörü GPU üzerinde tarayabilir; Google'ın ScaNN ve Spotify'ın Annoy kütüphaneleri de yaygın alternatiflerdir. 2026 itibarıyla her RAG hattında çalışan bu ANN katmanı, 1951 tarihli KNN fikrinin en büyük ölçekli uygulamasıdır.
Sık Sorulan Sorular
- check_circle KNN ile K-Means arasındaki fark nedir?: KNN denetimli bir sınıflandırma/regresyon algoritmasıdır ve etiketli veri gerektirir; K-Means ise etiketsiz veriyi K kümeye ayıran denetimsiz bir kümeleme yöntemidir. İkisindeki K farklı şeyleri ifade eder: KNN'de bakılan komşu sayısı, K-Means'te küme sayısıdır.
- check_circle KNN'de en iyi K değeri nasıl bulunur?: GridSearchCV ile çapraz doğrulama yapılır ve doğrulama hatasının en düşük olduğu K seçilir. √n kuralı başlangıç noktası verir; ikili sınıflandırmada beraberliği önlemek için K tek sayı tutulur.
- check_circle KNN regresyon için nasıl kullanılır?: K komşunun hedef değerlerinin aritmetik ortalaması tahmin olarak döndürülür; weights='distance' seçeneğiyle yakın komşulara daha büyük ağırlık verilir. Scikit-learn'de KNeighborsRegressor bu işi görür.
- check_circle Boyut laneti KNN'i neden bozar?: Boyut sayısı arttıkça noktalar arası mesafeler birbirine yakınsar ve 'en yakın' ile 'en uzak' komşu ayrımı silikleşir. 100+ boyutlu veride PCA ile boyut azaltma veya özellik seçimi uygulamak gerekir.
- check_circle KNN büyük veride kullanılabilir mi?: Kaba kuvvetle pratik değildir; KD-Tree/Ball Tree düşük boyutta, FAISS ve HNSW tabanlı ANN indeksleri yüksek boyutta çözümdür. Vektör veritabanları bu yaklaşımla milyarlarca kayıtta milisaniye altı arama yapar.
- check_circle KNN'den önce veri ölçeklemek şart mı?: Evet. Mesafe tabanlı olduğu için ölçeği büyük özellikler hesabı domine eder; StandardScaler veya Min-Max normalizasyonu uygulanmadan kurulan KNN çoğu zaman yanıltıcı sonuç verir.