Из Википедии, бесплатной энциклопедии
  (Перенаправлено из проблемы ближайшего соседа )
Перейти к навигации Перейти к поиску

Поиск ближайшего соседа ( NNS ), как форма поиска близости , представляет собой задачу оптимизации поиска точки в данном наборе, которая является наиболее близкой (или наиболее похожей) к данной точке. Близость обычно выражается в терминах функции несходства: чем менее похожи объекты, тем больше значения функции.

Формально задача поиска ближайшего соседа (NN) определяется следующим образом: по набору S точек в пространстве M и точке запроса q  ∈  M найти ближайшую точку в S к q . Дональд Кнут в т. 3 книги «Искусство компьютерного программирования» (1973) назвал это проблемой почтового отделения , имея в виду заявление о закреплении за местом жительства ближайшего почтового отделения. Прямым обобщением этой проблемы является поиск k -NN, в котором нам нужно найти k ближайших точек.

Чаще всего M - это метрическое пространство, а несходство выражается как метрика расстояния , которая является симметричной и удовлетворяет неравенству треугольника . Еще чаще M принимается как d -мерное векторное пространство, в котором несходство измеряется с помощью евклидова расстояния , манхэттенского расстояния или другой метрики расстояния . Однако функция несходства может быть произвольной. Одним из примеров является асимметричная дивергенция Брегмана , для которой неравенство треугольника не выполняется. [1]

Приложения [ править ]

Проблема поиска ближайшего соседа возникает во многих областях применения, в том числе:

Методы [ править ]

Были предложены различные решения проблемы NNS. Качество и полезность алгоритмов определяются временной сложностью запросов, а также пространственной сложностью любых структур данных поиска, которые необходимо поддерживать. Неформальное наблюдение, обычно называемое проклятием размерности, гласит, что не существует универсального точного решения для NNS в многомерном евклидовом пространстве с использованием полиномиальной предварительной обработки и полилогарифмического времени поиска.

Точные методы [ править ]

Линейный поиск [ править ]

Самое простое решение проблемы NNS - вычислить расстояние от точки запроса до любой другой точки в базе данных, отслеживая «лучшее на данный момент». Этот алгоритм, который иногда называют как наивный подход, имеет время работы от O ( дНо ), где N представляет собой количество элементов из S и d является размерностью M . Нет никаких структур данных поиска, которые нужно поддерживать, поэтому линейный поиск не имеет пространственной сложности за пределами хранилища базы данных. Наивный поиск в среднем может превзойти подходы к разделению пространства на пространствах с более высокой размерностью. [3]

Разделение пространства [ править ]

С 1970-х годов к проблеме применяется методология ветвей и границ . В случае евклидова пространства этот подход включает методы пространственного индекса или пространственного доступа. Для решения проблемы NNS было разработано несколько методов разделения пространства . Возможно, самым простым является дерево kd , которое итеративно делит пространство поиска пополам на две области, содержащие половину точек родительской области. Запросы выполняются путем обхода дерева от корня к листу, оценивая точку запроса при каждом разбиении. В зависимости от расстояния, указанного в запросе, может также потребоваться оценка соседних ветвей, которые могут содержать совпадения. Для постоянного времени запроса измерения средняя сложность O(log  N ) [4] в случае случайно распределенных точек сложность наихудшего случая равна O ( kN ^ (1-1 / k )) [5] В качестве альтернативы структура данных R-tree была разработана для поддержки поиска ближайшего соседа в динамическом режиме. context, поскольку он имеет эффективные алгоритмы для вставки и удаления, такие как дерево R * . [6] R-деревья могут давать ближайших соседей не только для евклидова расстояния, но также могут использоваться с другими расстояниями.

В случае общего метрического пространства подход ветвей и границ известен как подход метрического дерева . Конкретные примеры включают методы vp-tree и BK-tree .

Использование набора точек, взятых из трехмерного пространства и помещенных в дерево BSP, и учитывая точку запроса, взятую из того же пространства, возможное решение проблемы поиска ближайшей точки облака точек к точке запроса дается в следующем описании алгоритма. (Строго говоря, такой точки не может быть, потому что она не может быть уникальной. Но на практике обычно мы заботимся только о поиске любого из подмножества всех точек облака точек, которые существуют на кратчайшем расстоянии от заданной точки запроса. Идея состоит в том, чтобы для каждого ветвления дерева предположить, что ближайшая точка в облаке находится в полупространстве, содержащем точку запроса. Возможно, это не так, но это хорошая эвристика. После рекурсивного решения проблемы для предполагаемого полупространства,теперь сравните расстояние, возвращаемое этим результатом, с кратчайшим расстоянием от точки запроса до плоскости разделения. Это последнее расстояние - это расстояние между точкой запроса и ближайшей возможной точкой, которая может существовать в полупространстве, в котором не ведется поиск. Если это расстояние больше, чем то, что было возвращено в предыдущем результате, то очевидно, что нет необходимости искать другое полупространство. Если есть такая необходимость, то вы должны решить проблему для другого полупространства, а затем сравнить его результат с первым результатом, а затем вернуть правильный результат. Производительность этого алгоритма ближе к логарифмическому времени, чем к линейному времени, когда точка запроса находится рядом с облаком, потому что, когда расстояние между точкой запроса и ближайшей точкой облака точек приближается к нулю,алгоритму нужно только выполнить поиск, используя точку запроса в качестве ключа, чтобы получить правильный результат.

Методы приближения [ править ]

Алгоритм приблизительного поиска ближайшего соседа может возвращать точки, расстояние от которых до запроса максимально превышает расстояние от запроса до ближайших точек. Привлекательность этого подхода заключается в том, что во многих случаях приблизительный ближайший сосед почти так же хорош, как и точный. В частности, если мера расстояния точно отражает понятие качества пользователя, то небольшие различия в расстоянии не должны иметь значения. [7]

Жадный поиск в графах соседства [ править ]

Методы графа близости (такие как HNSW [8] ) считаются современным уровнем техники для приблизительного поиска ближайших соседей. [8] [9] [10]

Методы основаны на жадном обходе графов соседей близости, в которых каждая точка однозначно связана с вершиной . Поиск ближайших соседей к запросу q во множестве S принимает форму поиска вершины в графе . Основной алгоритм - жадный поиск - работает следующим образом: поиск начинается с вершины точки входа путем вычисления расстояний от запроса q до каждой вершины его окрестности., а затем находит вершину с минимальным значением расстояния. Если значение расстояния между запросом и выбранной вершиной меньше, чем расстояние между запросом и текущим элементом, то алгоритм переходит к выбранной вершине, и она становится новой точкой входа. Алгоритм останавливается, когда достигает локального минимума: вершины, окрестность которой не содержит вершину, которая находится ближе к запросу, чем сама вершина.

Идея близости окрестностей графов была использована в нескольких публикациях, в том числе и семенная статьи Arya и горой, [11] в системе Воронца на плоскость, [12] в системе Raynet для , [13] и в Метризованном малом Алгоритмы World [14] и HNSW [8] для общего случая пространств с функцией расстояния. Этим работам предшествовала новаторская статья Туссена, в которой он ввел понятие графа относительных окрестностей . [15]

Хеширование с учетом местоположения [ править ]

Хеширование с учетом местоположения (LSH) - это метод группировки точек в пространстве в «корзины» на основе некоторой метрики расстояния, действующей на точки. Точки, которые находятся близко друг к другу при выбранной метрике, с большой вероятностью отображаются в один и тот же сегмент. [16]

Поиск ближайшего соседа в пространствах с малым внутренним размером [ править ]

Дерево крышки имеет теоретический предел , который основан на набор данные удвоения постоянная . Ограничение времени поиска составляет O ( c 12  log  n ), где c - константа расширения набора данных.

Прогнозируемый радиальный поиск [ править ]

В особом случае, когда данные представляют собой плотную трехмерную карту геометрических точек, проекционная геометрия метода зондирования может использоваться для значительного упрощения задачи поиска. Этот подход требует, чтобы трехмерные данные были организованы в виде проекции на двумерную сетку, и предполагает, что данные пространственно сглажены по соседним ячейкам сетки, за исключением границ объекта. Эти предположения действительны при работе с данными 3D-датчиков в таких приложениях, как геодезия, робототехника и стереозрение, но могут не выполняться для неорганизованных данных в целом. На практике этот метод имеет среднее время поиска O ( 1 ) или O ( K ) для kпроблема ближайшего соседа применительно к данным стереозрения в реальном мире.[2]

Файлы векторной аппроксимации [ править ]

В многомерных пространствах древовидные структуры индексации становятся бесполезными, потому что все больший процент узлов требует проверки. Чтобы ускорить линейный поиск, сжатая версия векторов признаков, хранящаяся в ОЗУ, используется для предварительной фильтрации наборов данных при первом запуске. Окончательные кандидаты определяются на втором этапе с использованием несжатых данных с диска для расчета расстояния. [17]

Поиск на основе сжатия / кластеризации [ править ]

Подход VA-файла - это частный случай поиска на основе сжатия, когда каждый компонент функции сжимается равномерно и независимо. Оптимальным методом сжатия в многомерных пространствах является векторное квантование (VQ), реализованное посредством кластеризации. База данных кластеризована, и извлекаются наиболее "многообещающие" кластеры. Наблюдается огромный выигрыш по сравнению с VA-File, древовидными индексами и последовательным сканированием. [18] [19] Также обратите внимание на параллели между кластеризацией и LSH.

Варианты [ править ]

Существует множество вариантов проблемы NNS, и два наиболее известных - это поиск k -ближайшего соседа и ε-приближенный поиск ближайшего соседа .

k- Ближайшие соседи [ править ]

k- поиск ближайшего соседаопределяет k самыхблизких соседей по запросу. Этот метод обычно используется в прогнозной аналитике для оценки или классификации точки на основе консенсуса ее соседей. Графы k- ближайших соседей - это графы, в которых каждая точка соединена со своими k ближайшими соседями.

Примерный ближайший сосед [ править ]

В некоторых приложениях может быть приемлемо получить «хорошее предположение» о ближайшем соседе. В этих случаях мы можем использовать алгоритм, который не гарантирует возврата фактического ближайшего соседа в каждом случае в обмен на повышение скорости или экономии памяти. Часто такой алгоритм в большинстве случаев находит ближайшего соседа, но это сильно зависит от запрашиваемого набора данных.

Алгоритмы , которые поддерживают приближенный ближайший сосед поиска включают локальности чувствительного хэширования , лучший бен первый и сбалансированное дерево коробчатого разложения на основе поиск. [20]

Отношение расстояния до ближайшего соседа [ править ]

Коэффициент расстояния ближайшего соседа не применяет пороговое значение к прямому расстоянию от исходной точки до соседа-претендента, но к его отношению, зависящему от расстояния до предыдущего соседа. Он используется в CBIR для получения изображений с помощью «запроса на примере» с использованием сходства между локальными объектами. В более общем плане он участвует в нескольких проблемах сопоставления .

Фиксированный радиус рядом с соседями [ править ]

Фиксированный радиус вблизи соседей - это проблема, когда нужно эффективно найти все точки, заданные в евклидовом пространстве, на заданном фиксированном расстоянии от заданной точки. Предполагается, что расстояние фиксировано, но точка запроса произвольна.

Все ближайшие соседи [ править ]

Для некоторых приложений (например, оценки энтропии ) у нас может быть N точек данных, и мы хотим знать, кто является ближайшим соседом для каждой из этих N точек . Это, конечно, может быть достигнуто путем выполнения поиска ближайшего соседа один раз для каждой точки, но улучшенной стратегией будет алгоритм, который использует избыточность информации между этими N запросами для обеспечения более эффективного поиска. В качестве простого примера: когда мы находим расстояние от точки X до точки Y , это также сообщает нам расстояние от точки Y до точки X , поэтому одно и то же вычисление можно повторно использовать в двух разных запросах.

Учитывая фиксированную размерность, полуопределенную положительную норму (включающую в себя каждую норму L p ) и n точек в этом пространстве, ближайший сосед каждой точки может быть найден за время O ( n  log  n ), а m ближайших соседей каждую точку можно найти за время O ( mn  log  n ). [21] [22]

См. Также [ править ]

  • Шаровое дерево
  • Проблема ближайшей пары точек
  • Кластерный анализ
  • Поиск изображений на основе содержимого
  • Проклятие размерности
  • Цифровая обработка сигналов
  • Уменьшение размеров
  • Фиксированный радиус рядом с соседями
  • Фурье-анализ
  • Обучение на основе экземпляров
  • k- алгоритм ближайшего соседа
  • Линейный метод наименьших квадратов
  • Хеширование с учетом местоположения
  • MinHash
  • Многомерный анализ
  • Интерполяция ближайшего соседа
  • Присоединение к соседу
  • Анализ главных компонентов
  • Поиск по диапазону
  • Изучение подобия
  • Разложение по сингулярным числам
  • Редкая распределенная память
  • Статистическое расстояние
  • Временная последовательность
  • Диаграмма Вороного
  • Вейвлет

Ссылки [ править ]

Цитаты [ править ]

  1. ^ Cayton, Lawerence (2008). «Быстрый поиск ближайшего соседа для расхождений Брегмана». Материалы 25-й Международной конференции по машинному обучению : 112–119. DOI : 10.1145 / 1390156.1390171 . ISBN 9781605582054.
  2. ^ a b Бьюли, А .; Апкрофт, Б. (2013). Преимущества использования структуры проекции для сегментации плотных трехмерных облаков точек (PDF) . Австралийская конференция по робототехнике и автоматизации.
  3. ^ Вебер, Роджер; Schek, Hans-J .; Блотт, Стивен (1998). «Количественный анализ и исследование эффективности методов поиска подобия в пространствах большой размерности» (PDF) . VLDB '98 Труды 24-й Международной конференции по очень большим базам данных : 194–205.
  4. ^ Эндрю Мур. «Вводное руководство по деревьям KD» (PDF) . Архивировано из оригинального (PDF) 03 марта 2016 года . Проверено 3 октября 2008 .
  5. ^ Ли, DT ; Вонг, СК (1977). «Анализ наихудшего случая для поиска области и части области в многомерных двоичных деревьях поиска и сбалансированных деревьях квадратов». Acta Informatica . 9 (1): 23–29. DOI : 10.1007 / BF00263763 .
  6. ^ Roussopoulos, N .; Kelley, S .; Винсент, Рузвельт (1995). «Запросы ближайшего соседа». Материалы международной конференции ACM SIGMOD 1995 года по управлению данными - SIGMOD '95 . п. 71. DOI : 10,1145 / 223784,223794 . ISBN 0897917316.
  7. ^ Андони, А .; Индик, П. (01.10.2006). Почти оптимальные алгоритмы хеширования для приближенного ближайшего соседа в больших размерах . 2006 47-й ежегодный симпозиум IEEE по основам информатики (FOCS'06) . С. 459–468. CiteSeerX 10.1.1.142.3471 . DOI : 10.1109 / FOCS.2006.49 . ISBN  978-0-7695-2720-8.
  8. ^ a b c Мальков, Юрий; Яшунин, Дмитрий (2016). «Эффективный и надежный приблизительный поиск ближайшего соседа с использованием иерархических навигационных графов малого мира». arXiv : 1603.09320 [ cs.DS ].
  9. ^ "Новые ориентировочные ориентиры ближайшего соседа" .
  10. ^ «Приблизительные ближайшие соседи для рекомендательных систем» .
  11. ^ Арья, Сунил; Маунт, Дэвид (1993). «Запросы приблизительного ближайшего соседа в фиксированных размерах». Материалы четвертого ежегодного симпозиума {ACM / SIGACT-SIAM} по дискретным алгоритмам, 25–27 января 1993 г., Остин, Техас. : 271–280.
  12. ^ Оливье, Бомон; Кермаррек, Анн-Мари; Маршал, Лорис; Ривьер, Этьен (2006). «Воронет: масштабируемая объектная сеть на основе мозаики Вороного» (PDF) . INRIA . RR-5833 (1): 23–29. DOI : 10.1109 / IPDPS.2007.370210 .
  13. ^ Оливье, Бомон; Кермаррек, Анн-Мари; Ривьер, Этьен (2007). Одноранговые многомерные наложения: аппроксимация сложных структур . Принципы распределенных систем . 4878 . С. 315–328. CiteSeerX 10.1.1.626.2980 . DOI : 10.1007 / 978-3-540-77096-1_23 . ISBN  978-3-540-77095-4.
  14. ^ Мальков, Юрий; Пономаренко Александр; Крылов, Владимир; Логвинов, Андрей (2014). «Алгоритм приближенного ближайшего соседа, основанный на навигационных графах маленького мира». Информационные системы . 45 : 61–68. DOI : 10.1016 / j.is.2013.10.006 .
  15. ^ Туссент, Годфрид (1980). «Граф относительной окрестности конечного плоского множества». Распознавание образов . 12 (4): 261–268. DOI : 10.1016 / 0031-3203 (80) 90066-7 .
  16. ^ A. Раджараман & J. Ульман (2010). «Майнинг массивных наборов данных, глава 3» .
  17. ^ Вебер, Роджер; Блотт, Стивен. «Структура данных на основе аппроксимации для поиска подобия» (PDF) . Цитировать журнал требует |journal=( помощь )
  18. ^ Рамасвами, Шарад; Роуз, Кеннет (2007). «Адаптивное ограничение кластерного расстояния для поиска сходства в базах данных изображений». ICIP .
  19. ^ Рамасвами, Шарад; Роуз, Кеннет (2010). «Адаптивное ограничение кластерного расстояния для многомерного индексирования». ТКДЕ .
  20. ^ Арья, S .; Mount, DM ; Нетаньяху, NS ; Silverman, R .; Ву, А. (1998). «Оптимальный алгоритм приблизительного поиска ближайшего соседа» (PDF) . Журнал ACM . 45 (6): 891–923. CiteSeerX 10.1.1.15.3125 . DOI : 10.1145 / 293347.293348 . Архивировано из оригинального (PDF) 03 марта 2016 года . Проверено 29 мая 2009 .  
  21. ^ Кларксон, Кеннет Л. (1983), «Быстрые алгоритмы для задачи всех ближайших соседей», 24-й симпозиум IEEE. Основы компьютерных наук, (FOCS '83) , стр. 226–232, DOI : 10.1109 / SFCS.1983.16 , ISBN 978-0-8186-0508-6.
  22. ^ Вайдья, PM (1989). « Алгоритм O ( n  log  n ) для задачи всех ближайших соседей» . Дискретная и вычислительная геометрия . 4 (1): 101–115. DOI : 10.1007 / BF02187718 .

Источники [ править ]

  • Эндрюс, Л. (ноябрь 2001 г.). «Шаблон для задачи ближайшего соседа» . Журнал пользователей C / C ++ . 19 (11): 40–49. ISSN  1075-2838 .
  • Arya, S .; Mount, DM ; Нетаньяху, NS ; Сильверман, Р .; Ву, AY (1998). «Оптимальный алгоритм для приближенного поиска ближайшего соседа в фиксированных размерах». Журнал ACM . 45 (6): 891–923. CiteSeerX  10.1.1.15.3125 . DOI : 10.1145 / 293347.293348 .
  • Beyer, K .; Goldstein, J .; Ramakrishnan, R .; Вал, У. (1999). «Когда имеет значение ближайший сосед?». Труды 7-го ICDT .
  • Чен, Чжун-Мин; Линг, Ибэй (2002). "Оценщик на основе выборки для запросов Top-k". ICDE : 617–627.
  • Самет, Х. (2006). Основы многомерных и метрических структур данных . Морган Кауфманн. ISBN 978-0-12-369446-1.
  • Zezula, P .; Amato, G .; Dohnal, V .; Батько, М. (2006). Поиск подобия - подход в метрическом пространстве . Springer. ISBN 978-0-387-29146-8.

Дальнейшее чтение [ править ]

  • Шаша, Деннис (2004). Открытие высокой производительности во временных рядах . Берлин: Springer. ISBN 978-0-387-00857-8.

Внешние ссылки [ править ]

  • Nearest Neighbours and Similarity Search - веб-сайт, посвященный учебным материалам, программному обеспечению, литературе, исследователям, открытым проблемам и событиям, связанным с поиском NN. Ведущий Юрий Лифшиц
  • Wiki поиска по подобию - собрание ссылок, людей, идей, ключевых слов, статей, слайдов, кода и наборов данных о ближайших соседях.