Pour une application d'apprentissage automatique, mon groupe doit calculer la distance euclidienne au ème voisin le plus proche dans un ensemble pour chaque (pour entre 5 et environ 100 , et quelques centaines à quelques millions). Nous utilisons actuellement soit l'approche par force brute , soit l'approche évidente avec un arbre kd sur , qui lorsque est élevé etest relativement faible ne gagne jamais. (Tout est en mémoire.)X x ∈ ( X ∪ Y ) ⊂ R d d | X | ≈ | Y | O ( d | X | | X ∪ Y | ) X d | X |
Il semble qu'il doit y avoir un meilleur moyen que la force brute, au moins un qui tire parti de l'inégalité du triangle, ou peut-être avec des hachages sensibles à la localité. Une approximation raisonnablement serrée est également potentiellement acceptable.
La recherche que j'ai pu trouver semble se concentrer sur le problème de trouver le seul voisin le plus proche (ou celui qui est approximativement le plus proche). Le problème que je recherche a-t-il un autre nom ou existe-t-il un lien avec un problème connexe auquel je n'ai pas pensé?