k-NN hesaplama karmaşıklığı


18

Saf arama yaklaşımı ile k- NN algoritmasının zaman karmaşıklığı nedir (kd ağacı veya benzeri yok)?

K hiperparametresi de göz önünde bulundurularak zaman karmaşıklığıyla ilgileniyorum . Çelişkili cevaplar buldum:

  1. O (nd + kn); burada n , eğitim setinin temel niteliğidir ve d , her bir numunenin boyutudur. [1]

  2. O (ndk), burada tekrar n , eğitim setinin temel niteliğidir ve d , her bir numunenin boyutudur. [2]

[1] http://www.csd.uwo.ca/courses/CS9840a/Lecture2_knn.pdf (Sayfa 18/20)

[2] http://www.cs.haifa.ac.il/~rita/ml_course/lectures/KNN.pdf (Sayfa 18/31)

Yanıtlar:


20

Varsayarsak (bağlı dersler her iki gibi) sabitlenir, sonra algoritmik seçimler hesaplama alır belirleyecek çalışma zamanını veya çalışma zamanı.O ( n d + k n ) O ( n d k )kO(nd+kn)O(ndk)

İlk olarak, bir çalışma zamanı algoritmasını ele alalım :O(nd+kn)

  • Eğitim setindeki tüm gözlemler için başlatiselectedi=0i
  • Her eğitim seti gözlemi , hesaplama , yeni gözlem ile eğitim seti gözlemi arasındaki mesafed i s t i iidistii
  • For için : Döngü tüm eğitim seti gözlemleri ile indeksi seçilmesi en küçük ile dist_i değer ve kendisi için selected_i = 0 . Seçili_i = 1 ayarını yaparak bu gözlemi seçin .k i d i s t i s e l e c t e d i = 0 s e l e c t e d i = 1j=1kidistiselectedi=0selectedi=1
  • İade k seçilen indeksleri

Her mesafe hesaplaması çalışma zamanını gerektirir , bu nedenle ikinci adım çalışma zamanını gerektirir . Üçüncü adımdaki her yineleme için , eğitim seti gözlemleri arasında döngü yaparak çalışması gerçekleştiririz , bu nedenle genel adım çalışması gerektirir . İlk ve dördüncü adımlar yalnızca çalışması gerektirir , bu nedenle çalışma zamanı elde ederiz .O ( n d ) O ( n ) O ( n k ) O ( n ) O ( n d + k n )O(d)O(nd)O(n)O(nk)O(n)O(nd+kn)

Şimdi çalışma zamanı algoritmasını ele alalım :O(ndk)

  • Eğitim setindeki tüm gözlemler için başlatiselectedi=0i
  • For için tüm eğitim seti gözlemler yoluyla Döngü ve mesafe hesaplamak: seçilen eğitim seti gözlem ve yeni gözlem arasındadır. Seçili_i olan en küçük değerine sahip dizinini seçin . Seçili_i ayarını yaparak bu gözlemi seçin .k d i d s e l e c t e d i = 0 s e l e c t e d i = 1j=1kdidselectedi=0selectedi=1
  • İade seçilen indekslerik

İkinci adımdaki her yineleme için, yeni gözlem ile her bir eğitim seti gözlemi arasındaki mesafeyi hesaplayarak, bir yineleme için çalışması ve bu nedenle de genel olarak çalışması gerekir.O ( n d k )O(nd)O(ndk)

İki algoritma arasındaki fark, birincinin mesafeleri önceden hesaplaması ve depolamasıdır ( ekstra bellek gerektirir ), ikincisi ise. Fakat daha önce gerektiren, tüm eğitim dizisini depolamak verilen bellek gibi gerektiren, vektör depolama, iki algoritma depolanması asimptotik aynıdır. Sonuç olarak, için daha iyi asimptotik çalışma zamanı ilk algoritmayı daha çekici hale getirir.O ( n d ) s e l e c t e d O ( n ) k > 1O(n)O(nd)selectedO(n)k>1

Algoritmik bir iyileştirme kullanarak bir çalışma zamanı elde etmenin mümkün olduğunu belirtmek gerekir :O(nd)

  • Her eğitim seti gözlemi , hesaplama , yeni gözlem ile eğitim seti gözlemi arasındaki mesafeidistii
  • çalışma süresindeki en küçük mesafeyi hesaplamak için hızlı seçim algoritmasını çalıştırınkthO(n)
  • Hesaplanan en küçük mesafeden büyük olmayan tüm dizinleri döndürkth

Bu yaklaşım, sıralanmamış bir dizideki en küçük değeri bulmak için etkili yaklaşımların mevcut olmasından yararlanır .kth


1
Harika bir cevap ve özellikle kullanımına yönelik tavsiyeleri seviyorum quickselect.
usεr11852 diyor Reinstate Monic

Bir soru daha: üçüncü seçenek için zaman karmaşıklığının O (nd + k) olması gerektiğine inanıyorum.
Daniel López

@Daniel olduğundan aynıdır . knO(nd+k)O(nd)
josliber

Seni son kez rahatsız: k- NN modifiye bir sürümünün hesaplama karmaşıklığını belirlemeye çalışıyorum , ben aşağıdakileri elde: O (nd + nd / p) Tanım n , d ve p tam sıfır. Bunu O (nd) 'ya basitleştirebilir miyim ?
Daniel López

@ Daniel Evet, bu durumda çalışır. O(nd)
josliber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.