Your SlideShare is downloading. ×
Multidimensional indexing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Multidimensional indexing

631
views

Published on


0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
631
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Multidimensional indexing Курс «Базы данных» Антон Волохов Yandex 2 декабря 2013 г. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 1 / 39
  • 2. Содержание 1 Общие положения 2 Введение 3 Деревья А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 2 / 39
  • 3. Содержание 4 Почему всё это не работает? 5 Как починить деревья? 6 Другие подходы А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 3 / 39
  • 4. Общие положения Терминология Терминология Точка - Ряд базы данных, логический документ Координата - Значение в колноке базы данных Расстояние - f (p1 , p2 ) → [0..1] DataSet -Множество исходных точек Домен - Условие, пораждающее исходные данные А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 4 / 39
  • 5. Общие положения Терминология обозначения DataSet - P Domain - D QueryPoint - q Distance measure - d(x1 ,x2 ) Остальные обозначения появятся по мере продвижения А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 5 / 39
  • 6. Общие положения Disclaimer Disclaimer Если есть вопрос, меня можно и нужно перебивать Не на каждый вопрос я смогу ответить по ходу лекции Не на каждый вопрос я смогу ответить А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 6 / 39
  • 7. Введение Индексы и расстояния Индекс Индекс- Избыточная структура данных, построенная над пространством P, ускоряющая поиск элементов из P. Индексирование- Процесс препроцессинга пространства, результатом которого является индекс. Например В Java, HashMap и TreeMap - простейшие индексы. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 7 / 39
  • 8. Введение Индексы и расстояния Обоснованность построения Формально ∃Q ⊂ Q : ∀q ∈ Q τ (I , q) < τ (P, q) Оценка качества Избыточность Сложность построения Деградация Сложность поиска Поддерживаемые классы запросов А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 8 / 39
  • 9. Введение Одномерный случай Примеры запросов Точное совпадение Получить данные о сотруднике по его паспортным данным Диапазон значений Получить данные о всех сотрудниках в возрасте от 50 до 70 лет Объединение значений Получить данные о сотрудниках А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 9 / 39
  • 10. Введение Одномерный случай Внешняя память Дорогой I/O Блочное чтение Потенциально бесконечные объемы данных Особенности высокая ветвистость дерева строго заданные размеры узла NB! Оптимизация индексных структур для блочного чтения. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 10 / 39
  • 11. Введение Одномерный случай B+ Tree А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 11 / 39
  • 12. Введение Одномерный случай B+ Tree Сбалансированное Данные только в листьях Ветвистое Преимущества Гарантированная производительность Малая высота дерева Недостатки Деградация в динамике А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 12 / 39
  • 13. Введение Одномерный случай Деградация А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 13 / 39
  • 14. Введение Одномерный случай Деградация А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 14 / 39
  • 15. Введение Многомерный случай Что можно искать? Запрос на диапазон ∀q ∈ D, P retrieve P ⊂ P : ∀p ∈ P , d(p , q) < Запрос на поиск ближайших соседей ∀q ∈ D, P retrieve P ⊂ P : ∀p ∈ P , p ∈ P/P , d(p , q) < d(p , q) Запрос на поиск похожих пар P, retrieve (p, p ) ∈ P : d(p, p ) < Корректны для любого пространства, на котором задана функция расстояния. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 15 / 39
  • 16. Введение Многомерный случай Где можно искать Числа Строки Цепочки ДНК Тексты Изображения Видео etc. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 16 / 39
  • 17. Введение Многомерный случай Пример Задача - для некоторого текста q найти в базе все похожие на него. Что необходимо знать для решения задачи 1 Представление текста в базе 2 Мера схожести текстов 3 Опционально - дополнительные сведения о запросе. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 17 / 39
  • 18. Введение Многомерный случай Представления Текстов 1 2 Облако тэгов. Vector Text Model А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 18 / 39
  • 19. Введение Многомерный случай Меры схожести n-gram, 1 − (∩ngram/ ∪ ngram) Мера Левинштейна Мера Минковского dp (x, y ) = А. В. Волохов (Yandex) p Indexing |xi − yi |p 2 декабря 2013 г. (1) 19 / 39
  • 20. Деревья Абстрактное дерево поиска 1 2 3 добавление элемента расщепление вершины удаление элемента А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 20 / 39
  • 21. Деревья Обобщаем B+ Tree Узел - прямоугольный параллелепипед с гранями вдоль гиперплоскостей базиса - R-Tree Ключ - центр сферы, объемлющей своих детей M-Tree Ключ - гиперплоскость - k-d Tree etc А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 21 / 39
  • 22. Деревья R-Tree 1 2 3 На каждом уровне спускаемся в ближайшую вершину, добавляем элемент. В случае необходимости, расщепляем вершину. split(Node) → (Node1 , Node2 ) : V (Node1 ) + V (Node2 ) → min; remove(Node); insert(Node1 ); insert(Node2 ) На каждом уровне спускаемся в ближайшую вершину, удаляем элемент, если он есть. В случае необходимости удаляем вершину. NB! Узлы самопересекаются! А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 22 / 39
  • 23. Деревья Оценка поиск: O(logm (n)) добавление: O(logm (n)) удаление: O(logm (n)) расщепление: m − m2 в зависимости от алгоритма А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 23 / 39
  • 24. Деревья m-tree Примерно та же история Кроме того, алгоритмы усложняются возможно тяжелым вычислением расстояния между точками. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 24 / 39
  • 25. Почему всё это не работает? Почему всё это не работает? А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 25 / 39
  • 26. Почему всё это не работает? Проклятье размерности Проклятье размерности Оценивая алгоритмы мы обошли одну важную вещь А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 26 / 39
  • 27. Почему всё это не работает? Проклятье размерности Определение Пространство становится разреженным: lim V (sphere)/V (parallelotope) → 0 d→∞ (2) Увеличивается вероятность самопересечения Теряется смысл мера Минковского. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 27 / 39
  • 28. Почему всё это не работает? Проклятье размерности Пример Дан единичный d-мерный куб, в котором равномерно распределены точки. Необходимо покрыть другим кубом 10 ld = v l = v 1/d d=1 v = 0.1 ⇒ l = 0.1 d=10 v = 0.1 ⇒ l = 0.8 А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 28 / 39
  • 29. Почему всё это не работает? Проклятье размерности Деревья Каждый спуск совершается почти во все узлы В худшем случае медленнее, чем простой перебор. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 29 / 39
  • 30. Как починить деревья? Как починить деревья? 1 2 3 4 Настройка алгоритма расщепления узла Выделение пространства меньшей размерности Техники понижения размерности Использование не деградирующих функций расстояния А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 30 / 39
  • 31. Как починить деревья? Расщепление узла Использование кластеризации Переразбиение всего уровня А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 31 / 39
  • 32. Как починить деревья? Поиск релевантного подпространства Найти все классические произведения, похожие на роман Е. Замятина "Мы" Отсекаем неологизмы Отсекаем арго Возможно, уменьшаем выборку по годам или авторам А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 32 / 39
  • 33. Как починить деревья? Понижение размерности Построение облака тэгов Поиск репрезентативных точек (кластеризация) Вероятностное понижение размерности Для пространства P размерности n, построить такое биективное отображение в пространство P размерности k, k << n, что если две точки близки в P , то вероятность того, что они близки в P больше Проекция двумерного пространства на одну из осей - простейшее понижение размерности. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 33 / 39
  • 34. Другие подходы Хеш Хеш Хешевый индекс Поддерживает запросы только на совпадение Равномерно распределяет точки по корзинам Как адаптировать хеш для наших многомерных нужд? Поменять функцию так, что она складывала близкие точки не в разные, а в одну корзину. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 34 / 39
  • 35. Другие подходы Хеш Locality-Sensitive Hashing Определение Семейство хеш функций называется (R, cR, P1 , P2 )-чувствительным, если: ∀p, q ∈ domain D, threshold R d(p, q) ≤ R ⇒ Pr (h(p) = h(q)) ≥ P1 d(p, q) ≥ cR ⇒ Pr (h(p) = h(q)) ≤ P2 Определение имеет смысл при P1 > P2 Вероятностные гарантии коллизии близких точек А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 35 / 39
  • 36. Другие подходы Хеш Индексирование Домен D - унарные вектора, длины не более M, R=1, c=2 1 2 3 4 5 Хеш функция - наличие единицы на i-м месте P1 = 1/2 ; P2 = 1/4; Perr = 1/2 Теперь попытаемся увеличить разность P1 и P2 Хешируем нашу точку с помощью k случайных хеш функций. P1k = (1/2)k ; p2k = (1/4)k ; Perr = 1 − P1k Теперь увеличиваем вероятность коллизии. Создаём n таких композитных индексов n n n P1k = n ∗ P1k ; P2k = n ∗ P2k ; Perr = 1 − P1k Изменяя k и n, можно минимизировать Perr А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 36 / 39
  • 37. Другие подходы Хеш Литература P. Indyk, R. Motwani. “Approximate nearest neighbor: towards removing the curse of dimensionality”. Proceedings of the Symposium on Theory of Computing, 1998. Guttman: R-Trees: “A Dynamic Index Structure for Spatial Searching”. SIGMOD Conference 1984: 47-57, 1984. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 37 / 39
  • 38. Другие подходы Хеш Литература Skopal, T. et al., “Revisiting M-Tree building principles”. Proceedings of the 7th East European Conference on Advances in Databases and Information Systems (ADBIS), 2003. Similartiy Search: The Metric Space Approach Series: Advances in Database Systems, Vol. 32 Zezula, P., Amato, G., Dohnal, V., Batko, M. 2006, XVII А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 38 / 39
  • 39. Вопросы? Вопросы? Почта a.v.volokhov@gmail.com А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 39 / 39