чувствительная к локальности библиотека хеширования, которая поддерживает фильтрацию по атрибутам каждой точки данных - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть огромный набор данных, в котором каждая точка данных содержит

  • первичный идентификатор для точки данных
  • вложение для точки данных измерения типа d.
  • точки данных

Я хочу построить локально чувствительный га sh с этими данными, которые поддерживают запросы, такие как

  1. Ввод: id точки данных. Вывод: top n ближайших соседей.
  2. Вход: id точки данных; введите t, указав тип результата. Выходные данные: верхние n ближайших соседей типа t.
  3. Входные данные: вектор измерения d. Выходные данные: верхние n ближайших соседей.
  4. Входные данные: вектор измерения d; введите t, указав тип результата. Вывод: top n ближайших соседей типа t.

Я использую чувствительную к локальности библиотеку spotify ha sh - Annoy. Annoy поддерживает запросы типа 1 и типа 3 из коробки. Я борюсь с поддержкой запросов типа 2 и 4. Пожалуйста, предложите любые библиотеки, которые поддерживают запросы типа 2 и 4 из коробки. Я также открыт для любых обходных путей / предложений, которые вы имеете в виду.

Мои подходы к выполнению запросов типа 2 с Annoy:

  • Использование запроса 1 с размером соседа m и применение фильтр типа как этап постобработки. Экспоненциально увеличивайте значение m, пока на этапе последующей обработки не будет получен набор размера n. Недостаток: множественные вызовы на запрос 1 api.
  • Создание нескольких хеш-кодов для каждого типа. И используйте запрос 3. Недостаток: не будет работать, если существует большое количество типов данных, как в случае с моим набором данных.

Пожалуйста, сообщите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...