K-En Yakın Komşu Nedir? Verileri Sınıflandırmak için Bir ML Algoritması
Yayınlanan: 2021-07-19Algoritmalar, makine öğrenimi dünyasını yönlendirir.
Genellikle öngörü yeteneklerinden dolayı övülürler ve anında sonuçlar üretmek için büyük miktarda veri tüketen çalışkan işçiler olarak konuşulur.
Bunların arasında genellikle tembel olarak etiketlenen bir algoritma vardır. Ancak konu veri noktalarını sınıflandırmaya geldiğinde oldukça başarılı. Buna k-en yakın komşular algoritması denir ve genellikle en önemlilerinden biri olarak alıntılanır. makine öğrenme algoritmalar.
k-en yakın komşular algoritması nedir?
K-en yakın komşular (KNN) algoritması , bir veri noktasının, kendisine en yakın veri noktalarının hangi gruba ait olduğuna bağlı olarak bir grubun veya diğerinin üyesi olma olasılığını tahmin etmek için bir veri sınıflandırma yöntemidir.
k-en yakın komşu algoritması bir tür denetimli makine öğrenimi sınıflandırma ve regresyon problemlerini çözmek için kullanılan algoritma. Ancak, esas olarak sınıflandırma problemleri için kullanılır.
KNN tembel öğrenme ve parametrik olmayan bir algoritmadır.
Eğitim verilerini sağladığınızda herhangi bir eğitim gerçekleştirmediği için tembel öğrenme algoritması veya tembel öğrenen olarak adlandırılır. Bunun yerine, yalnızca eğitim süresi boyunca verileri depolar ve herhangi bir hesaplama yapmaz. Veri kümesinde bir sorgu gerçekleştirilinceye kadar bir model oluşturmaz. Bu, KNN'yi aşağıdakiler için ideal kılar: veri madenciliği.
Biliyor musun? KNN'deki "K", oylama sürecine dahil edilecek en yakın komşu sayısını belirleyen bir parametredir.
Temel veri dağılımı hakkında herhangi bir varsayımda bulunmadığı için parametrik olmayan bir yöntem olarak kabul edilir. Basitçe söylemek gerekirse, KNN, etrafındaki veri noktalarına bakarak bir veri noktasının hangi gruba ait olduğunu belirlemeye çalışır.
A ve B olmak üzere iki grup olduğunu düşünün.
Bir veri noktasının A grubunda mı yoksa B grubunda mı olduğunu belirlemek için algoritma, yakınındaki veri noktalarının durumlarına bakar. Veri noktalarının çoğu A grubundaysa, söz konusu veri noktasının A grubunda olması ve bunun tersi de çok olasıdır.
Kısacası, KNN, en yakın komşu olarak da bilinen en yakın açıklamalı veri noktasına bakarak bir veri noktasının sınıflandırılmasını içerir.
K-NN sınıflandırmasını K-araç kümeleme ile karıştırmayın. KNN, yeni veri noktalarını en yakın veri noktalarına göre sınıflandıran denetimli bir sınıflandırma algoritmasıdır. Öte yandan, K-araç kümelemesi bir denetimsiz Verileri K sayıda kümede gruplayan kümeleme algoritması.
KNN nasıl çalışır?
Yukarıda bahsedildiği gibi, KNN algoritması ağırlıklı olarak bir sınıflandırıcı olarak kullanılır. KNN'nin görünmeyen girdi veri noktalarını sınıflandırmak için nasıl çalıştığına bir göz atalım.
Yapay sinir ağlarını kullanan sınıflandırmanın aksine, k-en yakın komşular sınıflandırmasının anlaşılması ve uygulanması kolaydır. Veri noktalarının iyi tanımlandığı veya doğrusal olmadığı durumlarda idealdir.
Özünde, KNN, görünmeyen bir gözlemin sınıfını belirlemek için bir oylama mekanizması gerçekleştirir. Bu, çoğunluk oyu alan sınıfın, söz konusu veri noktasının sınıfı olacağı anlamına gelir.
K'nin değeri bire eşitse, bir veri noktasının sınıfını belirlemek için yalnızca en yakın komşuyu kullanacağız. K'nin değeri ona eşitse, o zaman en yakın on komşuyu kullanırız, vb.
İpucu: Makine öğrenimi yazılımını kullanarak görevleri otomatikleştirin ve veriye dayalı kararlar alın.
Bunu bir perspektife oturtmak için, sınıflandırılmamış bir X veri noktasını düşünün. Bir dağılım grafiğinde bilinen kategoriler A ve B ile birkaç veri noktası vardır.
X veri noktasının A grubunun yanına yerleştirildiğini varsayalım.
Bildiğiniz gibi, bir veri noktasını en yakın açıklamalı noktalara bakarak sınıflandırıyoruz. K'nin değeri bire eşitse, veri noktasının grubunu belirlemek için yalnızca bir en yakın komşu kullanacağız.
Bu durumda, X veri noktası, en yakın komşusu aynı grupta olduğu için A grubuna aittir. A grubu ondan fazla veri noktasına sahipse ve K'nin değeri 10'a eşitse, X veri noktası, en yakın tüm komşuları aynı grupta olduğu için yine A grubuna ait olacaktır.
Sınıflandırılmamış başka bir Y veri noktasının A grubu ile B grubu arasına yerleştirildiğini varsayalım. Eğer K 10'a eşitse, en çok oyu alan grubu seçeriz, yani Y'yi en fazla sayıda komşuya sahip olduğu gruba sınıflandırırız. Örneğin, Y'nin B grubunda yedi, A grubunda üç komşusu varsa, B grubuna aittir.
Sınıflandırıcının en fazla oyu alan kategoriyi ataması, mevcut kategori sayısından bağımsız olarak doğrudur.
Bir veri noktasının komşu olup olmadığını belirlemek için mesafe metriğinin nasıl hesaplandığını merak ediyor olabilirsiniz.
Veri noktası ile en yakın komşusu arasındaki mesafe ölçüsünü hesaplamanın dört yolu vardır: Öklid mesafesi , Manhattan mesafesi , Hamming mesafesi ve Minkowski mesafesi . Üçünden, Öklid mesafesi en yaygın olarak kullanılan uzaklık işlevi veya metriğidir.
K-en yakın komşu algoritması sözde kodu
KNN algoritmasını uygulamak için Python ve R gibi programlama dilleri kullanılır. KNN için sözde kod aşağıdadır:
- Verileri yükle
- K değeri seçin
- Verilerdeki her veri noktası için:
- Tüm eğitim veri örneklerine Öklid mesafesini bulun
- Mesafeleri sıralı bir listede saklayın ve sıralayın
- Sıralanmış listeden en iyi K girişlerini seçin
- Seçilen noktalarda bulunan sınıfların çoğuna göre test noktasını etiketleyin
- Son
KNN sınıflandırmasının doğruluğunu doğrulamak için bir karışıklık matrisi kullanıldı. Doğrulama için olabilirlik oranı testi gibi diğer istatistiksel yöntemler de kullanılır.
KNN regresyonu durumunda, adımların çoğu aynıdır. En yüksek oyu alan sınıfı atamak yerine komşuların değerlerinin ortalaması hesaplanır ve bilinmeyen veri noktasına atanır.
Neden KNN algoritmasını kullanmalı?
Sınıflandırma, veri bilimi ve makine öğreniminde kritik bir sorundur. KNN, örüntü sınıflandırması ve regresyon modelleri için kullanılan en eski ancak doğru algoritmalardan biridir.
İşte k-en yakın komşu algoritmasının kullanılabileceği alanlardan bazıları:
- Kredi notu: KNN algoritması, bir kişinin kredi notunu benzer özelliklere sahip olanlarla karşılaştırarak belirlemeye yardımcı olur.
- Kredi onayı: Kredi notuna benzer şekilde, k-en yakın komşu algoritması, özelliklerini benzer bireylerle karşılaştırarak kredilerde temerrüde düşme olasılığı daha yüksek olan kişileri belirlemede faydalıdır.
- Veri ön işleme: Veri kümelerinde birçok eksik değer olabilir. KNN algoritması, eksik değerleri tahmin eden eksik veri atama adı verilen bir işlem için kullanılır.
- Örüntü tanıma: KNN algoritmasının desenleri tanımlama yeteneği, çok çeşitli uygulamalar yaratır. Örneğin, kredi kartı kullanımındaki kalıpları tespit etmeye ve olağandışı kalıpları tespit etmeye yardımcı olur. Kalıp algılama, müşteri satın alma davranışındaki kalıpları belirlemede de yararlıdır.
- Hisse senedi fiyatı tahmini: KNN algoritması, bilinmeyen varlıkların değerlerini tahmin etme yeteneğine sahip olduğundan, geçmiş verilere dayalı olarak hisse senetlerinin gelecekteki değerini tahmin etmede faydalıdır.
- Öneri sistemleri: KNN, benzer özelliklere sahip kullanıcıların bulunmasına yardımcı olabileceğinden, öneri sistemlerinde kullanılabilir. Örneğin, bir çevrimiçi video akışı platformunda, benzer kullanıcıların ne izlediğini analiz ederek bir kullanıcının izleme olasılığının daha yüksek olduğu içerik önermek için kullanılabilir.
- Bilgisayarla görme: Görüntü sınıflandırması için KNN algoritması kullanılır. Örneğin, kedileri ve köpekleri farklı bir sınıfta gruplamak gibi benzer veri noktalarını gruplayabildiğinden, birçok durumda yararlıdır. Bilgisayar görüşü uygulamalar.
K'nin optimal değeri nasıl seçilir
KNN'de en iyi K değerini, diğer bir deyişle komşu sayısını belirlemenin belirli bir yolu yoktur. Bu, hangisiyle devam edeceğinize karar vermeden önce birkaç değerle deneme yapmanız gerekebileceği anlamına gelir.

Bunu yapmanın bir yolu, eğitim örneklerinin bir kısmının "bilinmeyen" olduğunu düşünmek (veya öyleymiş gibi yapmak). Ardından test setindeki bilinmeyen verileri k-en yakın komşular algoritmasını kullanarak kategorize edebilir ve eğitim verilerinde zaten sahip olduğunuz bilgilerle karşılaştırarak yeni kategorizasyonun ne kadar iyi olduğunu analiz edebilirsiniz.
İki sınıflı bir problemle uğraşırken, K için tek bir değer seçmek daha iyidir. Aksi takdirde, her sınıftaki komşu sayısının aynı olduğu bir senaryo ortaya çıkabilir. Ayrıca, K değeri mevcut sınıf sayısının katı olmamalıdır.
Optimal K değerini seçmenin başka bir yolu da sqrt(N)'yi hesaplamaktır; burada N, eğitim veri setindeki örnek sayısını gösterir.
Bununla birlikte, K=1 veya K=2 gibi daha düşük değerlere sahip K, gürültülü olabilir ve aykırı değerlerin etkilerine maruz kalabilir. Bu gibi durumlarda aşırı takma şansı da yüksektir.
Öte yandan, daha büyük değerlere sahip K, çoğu durumda daha düzgün karar sınırlarına yol açacaktır, ancak çok büyük olmamalıdır. Aksi takdirde, daha az sayıda veri noktasına sahip gruplar her zaman diğer gruplar tarafından geride bırakılacaktır. Ayrıca, daha büyük bir K, hesaplama açısından pahalı olacaktır.
KNN'nin avantajları ve dezavantajları
KNN algoritmasını kullanmanın en önemli avantajlarından biri, bir model oluşturmaya veya birkaç parametreyi ayarlamaya gerek olmamasıdır. Tembel bir öğrenme algoritması olduğu ve hevesli bir öğrenici olmadığı için modeli eğitmeye gerek yoktur; bunun yerine, tüm veri noktaları tahmin sırasında kullanılır.
Tabii ki, bu hesaplama açısından pahalı ve zaman alıcı. Ancak gerekli hesaplama kaynaklarına sahipseniz, regresyon ve sınıflandırma problemlerini çözmek için KNN'yi kullanabilirsiniz. Yine de, doğru tahminler üretebilen daha hızlı birkaç algoritma var.
K-en yakın komşular algoritmasını kullanmanın avantajlarından bazıları şunlardır:
- Anlaması kolay ve uygulaması basit
- Hem sınıflandırma hem de regresyon problemleri için kullanılabilir.
- Temel veriler hakkında bir varsayım olmadığı için doğrusal olmayan veriler için idealdir.
- Doğal olarak çok sınıflı vakaları işleyebilir
- Yeterli temsili verilerle iyi performans gösterebilir
Tabii ki, KNN mükemmel bir makine öğrenme algoritması değil. KNN tahmincisi her şeyi sıfırdan hesapladığı için büyük veri kümeleri için ideal olmayabilir.
K-en yakın komşular algoritmasını kullanmanın bazı dezavantajları şunlardır:
- Tüm eğitim verilerini depoladığı için ilişkili hesaplama maliyeti yüksektir
- Yüksek bellek depolama gerektirir
- K değerini belirleme ihtiyacı
- N değeri yüksekse tahmin yavaştır
- Alakasız özelliklere duyarlı
KNN ve boyutluluğun laneti
Elinizde çok büyük miktarda veri olduğunda, ondan hızlı ve anlaşılır bilgi çıkarmak oldukça zor olabilir. Bunun için, özünde verileri "doğrudan noktaya götüren" boyutluluk azaltma algoritmalarını kullanabiliriz.
"Boyutluluğun laneti" terimi, doğrudan bir bilimkurgu filminden fırlamış izlenimi verebilir. Ama bunun anlamı, verinin çok fazla özelliğinin olmasıdır.
Verilerin çok fazla özelliği varsa, modele gereğinden fazla uyma riski vardır ve bu da hatalı modellere yol açar. Çok fazla boyut, veri kümesindeki her veri örneği birbirinden eşit uzaklıkta görüneceğinden verileri gruplamayı da zorlaştırır.
k-en yakın komşular algoritması, boyutsallık laneti nedeniyle aşırı uydurmaya karşı oldukça hassastır. Ancak, bu sorun aşağıdakilerle çözülebilir: kaba kuvvet uygulaması KNN algoritması. Ancak büyük veri kümeleri için pratik değildir.
Çok fazla özellik varsa KNN iyi çalışmaz. Bu nedenle, veri hazırlama aşamasında temel bileşen analizi (PCA) ve özellik seçimi gibi boyut azaltma teknikleri gerçekleştirilmelidir.
KNN: Kalpleri kazanan tembel algoritma
Algoritmaların en tembeli olmasına rağmen, KNN etkileyici bir üne sahiptir ve çeşitli sınıflandırma ve regresyon problemleri için başvurulan bir algoritmadır. Elbette tembelliği nedeniyle büyük veri kümelerini içeren durumlar için en iyi seçim olmayabilir. Ama en eski, en basit ve doğru algoritmalardan biri.
Sınırlı miktarda veriye sahip bir algoritmayı eğitmek ve doğrulamak, Herkül bir görev olabilir. Ama bunu verimli bir şekilde yapmanın bir yolu var. Buna çapraz doğrulama denir ve eğitim verilerinin bir kısmının test veri seti olarak ayrılmasını içerir.