39
Multidimensional indexing Курс Базы данных Антон Волохов Yandex 2 декабря 2013 г. А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 1 / 39

Multidimensional indexing

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Multidimensional indexing

Multidimensional indexingКурс «Базы данных»

Антон Волохов

Yandex

2 декабря 2013 г.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 1 / 39

Page 2: Multidimensional indexing

Содержание

1 Общие положения

2 Введение

3 Деревья

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 2 / 39

Page 3: Multidimensional indexing

Содержание

4 Почему всё это не работает?

5 Как починить деревья?

6 Другие подходы

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 3 / 39

Page 4: Multidimensional indexing

Общие положения Терминология

Терминология

Точка - Ряд базы данных, логический документКоордината - Значение в колноке базы данныхРасстояние - f (p1, p2)→ [0..1]DataSet -Множество исходных точекДомен - Условие, пораждающее исходныеданные

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 4 / 39

Page 5: Multidimensional indexing

Общие положения Терминология

обозначения

DataSet - PDomain - DQueryPoint - qDistance measure - d(x1,x2)Остальные обозначения появятся по мерепродвижения

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 5 / 39

Page 6: Multidimensional indexing

Общие положения Disclaimer

Disclaimer

Если есть вопрос, меня можно и нужно перебиватьНе на каждый вопрос я смогу ответить по ходулекцииНе на каждый вопрос я смогу ответить

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 6 / 39

Page 7: Multidimensional indexing

Введение Индексы и расстояния

Индекс

Индекс- Избыточная структура данных,построенная над пространством P, ускоряющаяпоиск элементов из P.Индексирование- Процесс препроцессингапространства, результатом которого являетсяиндекс.

НапримерВ Java, HashMap и TreeMap - простейшие индексы.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 7 / 39

Page 8: Multidimensional indexing

Введение Индексы и расстояния

Обоснованность построения

Формально∃Q ′ ⊂ Q : ∀q ∈ Q ′τ(I , q) < τ(P , q)

Оценка качестваИзбыточностьСложность построенияДеградацияСложность поискаПоддерживаемые классы запросов

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 8 / 39

Page 9: Multidimensional indexing

Введение Одномерный случай

Примеры запросов

Точное совпадениеПолучить данные о сотруднике по его паспортнымданным

Диапазон значенийПолучить данные о всех сотрудниках в возрасте от 50до 70 лет

Объединение значенийПолучить данные о сотрудниках

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 9 / 39

Page 10: Multidimensional indexing

Введение Одномерный случай

Внешняя память

Дорогой I/OБлочное чтениеПотенциально бесконечные объемы данных

Особенностивысокая ветвистость деревастрого заданные размеры узла

NB!Оптимизация индексных структур для блочногочтения.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 10 / 39

Page 11: Multidimensional indexing

Введение Одномерный случай

B+ Tree

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 11 / 39

Page 12: Multidimensional indexing

Введение Одномерный случай

B+ Tree

СбалансированноеДанные только в листьяхВетвистое

ПреимуществаГарантированная производительностьМалая высота дерева

НедостаткиДеградация в динамике

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 12 / 39

Page 13: Multidimensional indexing

Введение Одномерный случай

Деградация

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 13 / 39

Page 14: Multidimensional indexing

Введение Одномерный случай

Деградация

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 14 / 39

Page 15: Multidimensional indexing

Введение Многомерный случай

Что можно искать?

Запрос на диапазон∀q ∈ D,P retrieve P ′ ⊂ P : ∀p′ ∈ P ′, d(p′, q) < ε

Запрос на поиск ближайших соседей∀q ∈ D,P retrieveP ′ ⊂ 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

Page 16: Multidimensional indexing

Введение Многомерный случай

Где можно искать

ЧислаСтрокиЦепочки ДНКТекстыИзображенияВидеоetc.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 16 / 39

Page 17: Multidimensional indexing

Введение Многомерный случай

Пример

Задача - для некоторого текста q найти в базе всепохожие на него.Что необходимо знать для решения задачи

1 Представление текста в базе2 Мера схожести текстов3 Опционально - дополнительные сведения о

запросе.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 17 / 39

Page 18: Multidimensional indexing

Введение Многомерный случай

Представления Текстов

1 Облако тэгов.2 Vector Text Model

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 18 / 39

Page 19: Multidimensional indexing

Введение Многомерный случай

Меры схожестиn-gram, 1− (∩ngram/ ∪ ngram)

Мера Левинштейна

Мера Минковского

dp(x , y) =p

√∑|xi − yi |p (1)

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 19 / 39

Page 20: Multidimensional indexing

Деревья

Абстрактное дерево поиска

1 добавление элемента2 расщепление вершины3 удаление элемента

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 20 / 39

Page 21: Multidimensional indexing

Деревья

Обобщаем B+ Tree

Узел - прямоугольный параллелепипед с гранямивдоль гиперплоскостей базиса - R-TreeКлюч - центр сферы, объемлющей своих детей -M-TreeКлюч - гиперплоскость - k-d Treeetc

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 21 / 39

Page 22: Multidimensional indexing

Деревья

R-Tree1 На каждом уровне спускаемся в ближайшую

вершину, добавляем элемент. В случаенеобходимости, расщепляем вершину.

2 split(Node)→ (Node1,Node2) :V (Node1) + V (Node2)→ min;remove(Node); insert(Node1); insert(Node2)

3 На каждом уровне спускаемся в ближайшуювершину, удаляем элемент, если он есть. В случаенеобходимости удаляем вершину.

NB!Узлы самопересекаются!

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 22 / 39

Page 23: Multidimensional indexing

Деревья

Оценка

поиск: O(logm(n))добавление: O(logm(n))удаление: O(logm(n))расщепление: m −m2 в зависимости от алгоритма

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 23 / 39

Page 24: Multidimensional indexing

Деревья

m-tree

Примерно та же история

Кроме того, алгоритмы усложняются возможнотяжелым вычислением расстояния между точками.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 24 / 39

Page 25: Multidimensional indexing

Почему всё это не работает?

Почему всё это не работает?

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 25 / 39

Page 26: Multidimensional indexing

Почему всё это не работает? Проклятье размерности

Проклятье размерности

Оценивая алгоритмы мы обошли одну важную вещь

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 26 / 39

Page 27: Multidimensional indexing

Почему всё это не работает? Проклятье размерности

Определение

Пространство становится разреженным:

limd→∞

V (sphere)/V (parallelotope)→ 0 (2)

Увеличивается вероятность самопересеченияТеряется смысл мера Минковского.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 27 / 39

Page 28: Multidimensional indexing

Почему всё это не работает? Проклятье размерности

Пример

Дан единичный d-мерный куб, в которомравномерно распределены точки. Необходимопокрыть другим кубом 10ld = vl = v 1/d

d=1v = 0.1⇒ l = 0.1

d=10v = 0.1⇒ l = 0.8

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 28 / 39

Page 29: Multidimensional indexing

Почему всё это не работает? Проклятье размерности

Деревья

Каждый спуск совершается почти во все узлыВ худшем случае медленнее, чем простой перебор.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 29 / 39

Page 30: Multidimensional indexing

Как починить деревья?

Как починить деревья?

1 Настройка алгоритма расщепления узла2 Выделение пространства меньшей размерности3 Техники понижения размерности4 Использование не деградирующих функций

расстояния

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 30 / 39

Page 31: Multidimensional indexing

Как починить деревья?

Расщепление узла

Использование кластеризацииПереразбиение всего уровня

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 31 / 39

Page 32: Multidimensional indexing

Как починить деревья?

Поиск релевантного подпространства

Найти все классические произведения, похожие нароман Е. Замятина "Мы"

Отсекаем неологизмыОтсекаем аргоВозможно, уменьшаем выборку по годам илиавторам

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 32 / 39

Page 33: Multidimensional indexing

Как починить деревья?

Понижение размерности

Построение облака тэговПоиск репрезентативных точек (кластеризация)

Вероятностное понижение размерностиДля пространства P размерности n, построить такоебиективное отображение в пространство P ′

размерности k , k << n, что если две точки близки вP ′, то вероятность того, что они близки в P больше ε

Проекция двумерного пространства на одну изосей - простейшее понижение размерности.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 33 / 39

Page 34: Multidimensional indexing

Другие подходы Хеш

Хеш

Хешевый индексПоддерживает запросы только на совпадениеРавномерно распределяет точки по корзинам

Как адаптировать хеш для наших многомерных нужд?Поменять функцию так, что она складывала близкиеточки не в разные, а в одну корзину.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 34 / 39

Page 35: Multidimensional indexing

Другие подходы Хеш

Locality-Sensitive Hashing

ОпределениеСемейство хеш функций называется(R , cR ,P1,P2)-чувствительным, если: ∀p, q ∈ domainD, threshold R d(p, q) ≤ R ⇒ Pr(h(p) = h(q)) ≥ P1d(p, q) ≥ cR ⇒ Pr(h(p) = h(q)) ≤ P2

Определение имеет смысл при P1 > P2Вероятностные гарантии коллизии близких точек

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 35 / 39

Page 36: Multidimensional indexing

Другие подходы Хеш

Индексирование

Домен D - унарные вектора, длины не более M, R=1,c=2

1 Хеш функция - наличие единицы на i-м местеP1 = 1/2 ; P2 = 1/4; Perr = 1/2

2 Теперь попытаемся увеличить разность P1 и P23 Хешируем нашу точку с помощью k случайных хеш

функций.P1k = (1/2)k ; p2k = (1/4)k ; Perr = 1− P1k

4 Теперь увеличиваем вероятность коллизии.5 Создаём n таких композитных индексов

Pn1k = n ∗ P1k ; Pn

2k = n ∗ P2k ; Perr = 1− Pn1k

Изменяя k и n, можно минимизировать Perr

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 36 / 39

Page 37: Multidimensional indexing

Другие подходы Хеш

Литература

P. Indyk, R. Motwani. “Approximate nearestneighbor: towards removing the curse ofdimensionality”. Proceedings of the Symposium onTheory of Computing, 1998.Guttman: R-Trees: “A Dynamic Index Structure forSpatial Searching”. SIGMOD Conference 1984: 47-57,1984.

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 37 / 39

Page 38: Multidimensional indexing

Другие подходы Хеш

Литература

Skopal, T. et al., “Revisiting M-Tree buildingprinciples”. Proceedings of the 7th East EuropeanConference on Advances in Databases andInformation 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

Page 39: Multidimensional indexing

Вопросы?

Вопросы?

Почта [email protected]

А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 39 / 39