Как рассчитать много записей в БД за разумное время

database recommendation-engine bigdata

47 просмотра

1 ответ

891 Репутация автора

Если у меня есть вектор (например:) (5,4,6,8)в моем приложении, и я хочу найти сходство с другим вектором в моей БД, скажем для простоты, что я вычисляю расстояние между двумя векторами с манхэттенским расстоянием .

Мне нужен способ вычисления алгоритма (расстояние Манхэттена в моем примере) между моим вектором и всеми векторами, которые хранятся в моей БД. Могу ли я сделать 10 миллионов векторов за пару секунд?

Автор: Ron Источник Размещён: 17.07.2016 11:17

Ответы (1)


1 плюс

487 Репутация автора

Решение

Если вы действительно имеете дело с большим количеством данных, то вам действительно нужно приблизительное соседство - реализация http://en.wikipedia.org/wiki/Nearest_neighbor_search#Approximate_nearest_neighbor . Взгляните на Annoy - страницу проекта https://pypi.python.org/pypi/annoy/1.8.0 . Существует тест с другими проектами ANN, который вы можете найти интересным. Может быть, есть реализация в качестве плагина для БД, но я не знаю об этом. Однако ANN также можно использовать для предварительного вычисления top-n NN и сохранения их в БД в виде списка для пользователя / элемента.

Автор: Bartłomiej Twardowski Размещён: 19.07.2016 06:03
Вопросы из категории :
32x32