K-nearest neighbors problem
Megjelenés
Főnév
K-nearest neighbors problem (tsz. K-nearest neighbors problems)
- (informatika) A K-legközelebbi szomszéd (K-Nearest Neighbors, KNN) probléma a távolság- vagy hasonlóságalapú keresések egyik alapfeladata, amelynek célja, hogy egy adott lekérdezési ponthoz (query point) megtaláljuk a tanulóhalmazból („adatbázisból”) a legközelebbi pontot.
1. Problémaformuláció
Bemenet:
- Egy adatpontokból álló halmaz .
- Egy távolságfüggvény (például euklideszi, Manhattan, Mahalanobis).
- Egy lekérdezési pont .
- Egy pozitív egész .
Kimenet: A -beli pontok azon -es részhalmaza
ahol a rendezés úgy történik, hogy .
2. Brute-force megoldás
A legegyszerűbb eljárás:
- Minden adatponthoz kiszámoljuk értékét: .
- Rendezünk, vagy részben kiválasztjuk a legkisebb értéket (heap-pel vagy Quickselecttel): további idő.
Összesen: . Kis adathalmazokra megfelelő, de nagy vagy magas dimenzió () esetén lassú.
3. Gyorsító adatszerkezetek
3.1 KD-fa (KD-tree)
- dimenzió mentén váltakozóan osztjuk fel rekurzívan a pontok terét hiper síkokkal.
- Lekérdezés: „branch-and-bound” módon haladunk le a fában, prun-oljuk azokat az ágakat, ahol a legközelebbi pont nem lehet bennük.
- Átlagos lekérdezési idő: kis -re, de a dimenzió növekedésével („átok”) romlik → gyakorlatban .
3.2 Ball-fa (Ball-tree)
- A pontokat gömbökbe (ball) szervezzük, minden csomópont egy középpontot és sugárt tárol.
- Hasonló prune-elés: ha a lekérdezési ponttól nagyobb a távolság a gömbtől, mint a jelenlegi -adik legkisebb távolság, az ág eldobható.
3.3 VP-fa (Vantage-point tree)
- Minden csomópontban kijelölünk egy „vantage point”-ot, a többi pont távolságát ehhez kiszámolva particionálunk belső és külső gömbre.
3.4 Cover-tree, M-fa, R-fa
- Különböző fa- vagy rácsszerű struktúrák, amelyek a pontok közötti lefedettségre vagy minimum-maximum távolságokra építenek.
4. Approximate KNN (AKNN)
Nagy adat és/vagy magas dimenzió esetén gyakran elég közelítő eredmény:
- Locality-Sensitive Hashing (LSH) – Hash-függvények, amelyek nagy valószínűséggel ugyanabba a bucketbe map-elik a valódi közelieket. – Parallellizálható, alacsony memóriaköltségű, de kvázi-probabilista garancia.
- Random Projection – Johnson–Lindenstrauss lemma: magas -t lapítjuk alacsonyabb dimenzióra, miközben távolságokat közel megtartjuk.
- Graph-based módszerek – Navigable Small World graf, Hierarchical Navigable Small World (HNSW): pontok k‐legközelebbieként élek, graf-bejárás a lekérdezés.
- Quantization / Product Quantization – Adatok klaszterezése és tömörített kódtér, közelítő távolságszámítás gyors lookup-okkal.
5. Alkalmazások
- Osztályozás (KNN classifier) – Címkézett tanulóhalmaz esetén a lekérdezett pontot a legközelebbi címkéjének többségi szavazata alapján kategorizáljuk.
- Reggresszió (KNN regression) – A lekérduési pont értékét a legközelebbi pont értékeinek átlaga vagy súlyozott átlaga adja.
- Ajánlórendszerek – Felhasználók vagy termékek vektoros reprezentációja; hasonló profilok keresése.
- Képfeldolgozás, keresés – SIFT‐, CNN‐feature‐ök lekérdezése társkereső adatbázisban.
- Rendészeti adatbányászat – Anomália‐detektálás: a lekérdezési ponttól távol esők potenciális kilógók.
6. Összefoglaló
- A KNN-probléma: legközelebbi pont keresése adott adatbázisban és távolságfüggvénnyel.
- Brute-force: egyszerű, de lassú nagy adatra.
- Fa- és rácsszerkezetek (KD-fa, Ball-fa stb.): gyorsabb indexelést tesznek lehetővé, de korlátot jelent a dimenzió.
- Approximate módszerek (LSH, graf-alapú, quantization): nagy méretekben, magas dimenzióban is skálázhatók, kis pontosság-veszteséggel.
- Alkalmazások széles skálán: osztályozás, regresszió, ajánlórendszerek, anomália‐detektálás, képfeldolgozás.
- K-nearest neighbors problem - Szótár.net (en-hu)
- K-nearest neighbors problem - Sztaki (en-hu)
- K-nearest neighbors problem - Merriam–Webster
- K-nearest neighbors problem - Cambridge
- K-nearest neighbors problem - WordNet
- K-nearest neighbors problem - Яндекс (en-ru)
- K-nearest neighbors problem - Google (en-hu)
- K-nearest neighbors problem - Wikidata
- K-nearest neighbors problem - Wikipédia (angol)