Scikit Learn - K-En Yakın Komşular (KNN)

Bu bölüm, Sklearn'daki en yakın komşu yöntemlerini anlamanıza yardımcı olacaktır.

Komşu tabanlı öğrenme yöntemi her iki türdendir: supervised ve unsupervised. Denetimli komşular temelli öğrenme hem sınıflandırma hem de regresyon tahmini problemleri için kullanılabilir, ancak esas olarak endüstrideki sınıflandırma tahmini problemleri için kullanılır.

Komşular temelli öğrenme yöntemlerinin özel bir eğitim aşaması yoktur ve tüm verileri sınıflandırma sırasında eğitim için kullanır. Ayrıca, temeldeki veriler hakkında hiçbir şey varsaymaz. Doğada tembel ve parametrik olmamalarının nedeni budur.

En yakın komşu yöntemlerinin arkasındaki ana ilke -

  • Yeni veri noktasına yakın mesafede önceden tanımlanmış sayıda eğitim örneği bulmak için

  • Bu sayıdaki eğitim örneklerinden etiketi tahmin edin.

Burada, örnek sayısı, K-en yakın komşu öğrenmede olduğu gibi kullanıcı tanımlı bir sabit olabilir veya yarıçap tabanlı komşu öğrenmede olduğu gibi yerel nokta yoğunluğuna göre değişebilir.

sklearn.neighbors Modülü

Scikit-learn var sklearn.neighborshem denetimsiz hem de denetimli komşular tabanlı öğrenme yöntemleri için işlevsellik sağlayan modül. Girdi olarak, bu modüldeki sınıflar NumPy dizilerini veyascipy.sparse matrisler.

Algoritma türleri

Komşu tabanlı yöntemlerin uygulanmasında kullanılabilecek farklı algoritma türleri aşağıdaki gibidir -

Kaba kuvvet

Veri kümesindeki tüm nokta çiftleri arasındaki mesafelerin kaba kuvvet hesaplaması, en naif komşu arama uygulamasını sağlar. Matematiksel olarak, D boyutlarındaki N örnek için kaba kuvvet yaklaşımı şu şekilde ölçeklenir:0[DN2]

Küçük veri örnekleri için, bu algoritma çok yararlı olabilir, ancak örnek sayısı arttıkça ve arttıkça mümkün olmaz hale gelir. Kaba kuvvet komşu araması anahtar kelime yazılarak etkinleştirilebiliralgorithm=’brute’.

KD Ağacı

Kaba kuvvet yaklaşımının hesaplama verimsizliklerini ele almak için icat edilen ağaç tabanlı veri yapılarından biri, KD ağaç veri yapısıdır. Temel olarak KD ağacı, K-boyutlu ağaç olarak adlandırılan ikili bir ağaç yapısıdır. Veri eksenleri boyunca parametre alanını, veri noktalarının doldurulduğu iç içe yerleştirilmiş ortografik bölgelere bölerek yinelemeli olarak bölümler.

Avantajlar

KD ağaç algoritmasının bazı avantajları aşağıdadır -

Construction is fast - Bölümleme sadece veri eksenleri boyunca yapıldığı için KD ağacının yapımı çok hızlıdır.

Less distance computations- Bu algoritma, bir sorgu noktasının en yakın komşusunu belirlemek için çok daha az mesafe hesaplaması gerektirir. Sadece alır[ ()] mesafe hesaplamaları.

Dezavantajları

Fast for only low-dimensional neighbor searches- Düşük boyutlu (D <20) komşu aramaları için çok hızlıdır, ancak D büyüdükçe ve büyüdüğünde verimsiz hale gelir. Bölümleme yalnızca veri eksenleri boyunca gerçekleştirildiğinden,

KD ağaç komşu aramaları anahtar kelime yazılarak etkinleştirilebilir algorithm=’kd_tree’.

Top Ağacı

KD Tree'nin daha yüksek boyutlarda verimsiz olduğunu bildiğimiz için KD Tree'nin bu verimsizliğini gidermek için Ball tree veri yapısı geliştirilmiştir. Matematiksel olarak, verileri yinelemeli olarak bir merkez C ve yarıçap r ile tanımlanan düğümlere böler, öyle ki düğümdeki her nokta ağırlık merkezi tarafından tanımlanan hiper-küre içinde yer alır.C ve yarıçap r. Aşağıda verilen üçgen eşitsizliğini kullanır ve bu, bir komşu araması için aday nokta sayısını azaltır.

$$ \ arrowvert X + Y \ arrowvert \ leq \ arrowvert X \ arrowvert + \ arrowvert Y \ arrowvert $$

Avantajlar

Aşağıda, Ball Tree algoritmasının bazı avantajları verilmiştir -

Efficient on highly structured data - Top ağacı verileri bir dizi iç içe geçmiş hiper-kürede böldüğünden, yüksek düzeyde yapılandırılmış veriler üzerinde etkilidir.

Out-performs KD-tree - Top ağacı, top ağaç düğümlerinin küresel geometrisine sahip olduğu için KD ağacını yüksek boyutlarda geride bırakır.

Dezavantajları

Costly - Verileri bir dizi iç içe geçmiş hiper-küreye bölmek, yapımını çok maliyetli hale getirir.

Ball tree komşu aramaları anahtar kelime yazılarak etkinleştirilebilir algorithm=’ball_tree’.

En Yakın Komşu Algoritmasını Seçme

Belirli bir veri kümesi için en uygun algoritmanın seçimi aşağıdaki faktörlere bağlıdır:

Örnek sayısı (N) ve Boyut (D)

En Yakın Komşu algoritması seçerken dikkat edilmesi gereken en önemli faktörlerdir. Aşağıda verilen nedenlerden dolayı -

  • Brute Force algoritmasının sorgu süresi O [DN] olarak büyür.

  • Top ağacı algoritmasının sorgu süresi O [D log (N)] olarak büyür.

  • KD ağaç algoritmasının sorgu süresi D ile karakterize edilmesi çok zor olan garip bir şekilde değişir. D <20 olduğunda, maliyet O [D log (N)] olur ve bu algoritma çok verimlidir. Öte yandan, D> 20 olması durumunda verimsizdir çünkü maliyet neredeyse O [DN] 'ye yükselir.

Veri yapısı

Bu algoritmaların performansını etkileyen diğer bir faktör, verilerin içsel boyutluluğu veya verinin seyrekliğidir. Bunun nedeni, Ball tree ve KD ağaç algoritmalarının sorgu sürelerinin bundan büyük ölçüde etkilenebilmesidir. Oysa Brute Force algoritmasının sorgu süresi, veri yapısına göre değişmez. Genel olarak, Top ağacı ve KD ağacı algoritmaları, daha küçük iç boyutluluğa sahip daha seyrek verilere implante edildiğinde daha hızlı sorgu süresi üretir.

Komşu Sayısı (k)

Bir sorgu noktası için talep edilen komşu sayısı (k), Top ağaç ve KD ağaç algoritmalarının sorgu süresini etkiler. Komşu sayısı (k) arttıkça sorgu süreleri yavaşlar. Oysa Brute Force'un sorgu süresi k değerinden etkilenmeyecektir.

Sorgu noktalarının sayısı

İnşaat aşamasına ihtiyaç duydukları için, hem KD ağacı hem de Top ağacı algoritmaları, çok sayıda sorgu noktası varsa etkili olacaktır. Öte yandan, daha az sayıda sorgu noktası varsa, Brute Force algoritması, KD ağacı ve Top ağacı algoritmalarından daha iyi performans gösterir.