What are the fast approximations of the closest neighbor?

Let's say I have a huge (several million) list of n vectors, given the new vector, I need to find a pretty close one from the set, but it doesn't have to be the closest. (The closest neighbor is closest and works for n time)

What are the algorithms that can quickly approximate the nearest neighbor due to accuracy?

EDIT: since this is likely to help, I should mention that the data is pretty smooth in most cases, with little chance of being sharp in a random measurement.

+3
source share
4 answers

There are faster algorithms, and then O (n) to search for the nearest element at an arbitrary distance. See http://en.wikipedia.org/wiki/Kd-tree for more details .

+2
source

If you are using a high-dimensional vector like SIFT or SURF, or any descriptor used in the multimedia sector, I suggest you consider LSH.

(http://www.cs.princeton.edu/cass/papers/cikm08.pdf) KNN, LSH. LSH, E2LSH (http://www.mit.edu/~andoni/LSH/), MIT, - .

+2

(LSH). LSH. . -O LSH ( ). . LSH LSH L2 ().

, 10, kd tree , .

+1

Source: https://habr.com/ru/post/1792922/


All Articles