Upload
vadim-tsesko
View
545
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Multidimensional indexingКурс «Базы данных»
Антон Волохов
Yandex
2 декабря 2013 г.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 1 / 39
Содержание
1 Общие положения
2 Введение
3 Деревья
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 2 / 39
Содержание
4 Почему всё это не работает?
5 Как починить деревья?
6 Другие подходы
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 3 / 39
Общие положения Терминология
Терминология
Точка - Ряд базы данных, логический документКоордината - Значение в колноке базы данныхРасстояние - f (p1, p2)→ [0..1]DataSet -Множество исходных точекДомен - Условие, пораждающее исходныеданные
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 4 / 39
Общие положения Терминология
обозначения
DataSet - PDomain - DQueryPoint - qDistance measure - d(x1,x2)Остальные обозначения появятся по мерепродвижения
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 5 / 39
Общие положения Disclaimer
Disclaimer
Если есть вопрос, меня можно и нужно перебиватьНе на каждый вопрос я смогу ответить по ходулекцииНе на каждый вопрос я смогу ответить
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 6 / 39
Введение Индексы и расстояния
Индекс
Индекс- Избыточная структура данных,построенная над пространством P, ускоряющаяпоиск элементов из P.Индексирование- Процесс препроцессингапространства, результатом которого являетсяиндекс.
НапримерВ Java, HashMap и TreeMap - простейшие индексы.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 7 / 39
Введение Индексы и расстояния
Обоснованность построения
Формально∃Q ′ ⊂ Q : ∀q ∈ Q ′τ(I , q) < τ(P , q)
Оценка качестваИзбыточностьСложность построенияДеградацияСложность поискаПоддерживаемые классы запросов
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 8 / 39
Введение Одномерный случай
Примеры запросов
Точное совпадениеПолучить данные о сотруднике по его паспортнымданным
Диапазон значенийПолучить данные о всех сотрудниках в возрасте от 50до 70 лет
Объединение значенийПолучить данные о сотрудниках
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 9 / 39
Введение Одномерный случай
Внешняя память
Дорогой I/OБлочное чтениеПотенциально бесконечные объемы данных
Особенностивысокая ветвистость деревастрого заданные размеры узла
NB!Оптимизация индексных структур для блочногочтения.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 10 / 39
Введение Одномерный случай
B+ Tree
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 11 / 39
Введение Одномерный случай
B+ Tree
СбалансированноеДанные только в листьяхВетвистое
ПреимуществаГарантированная производительностьМалая высота дерева
НедостаткиДеградация в динамике
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 12 / 39
Введение Одномерный случай
Деградация
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 13 / 39
Введение Одномерный случай
Деградация
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 14 / 39
Введение Многомерный случай
Что можно искать?
Запрос на диапазон∀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
Введение Многомерный случай
Где можно искать
ЧислаСтрокиЦепочки ДНКТекстыИзображенияВидеоetc.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 16 / 39
Введение Многомерный случай
Пример
Задача - для некоторого текста q найти в базе всепохожие на него.Что необходимо знать для решения задачи
1 Представление текста в базе2 Мера схожести текстов3 Опционально - дополнительные сведения о
запросе.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 17 / 39
Введение Многомерный случай
Представления Текстов
1 Облако тэгов.2 Vector Text Model
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 18 / 39
Введение Многомерный случай
Меры схожестиn-gram, 1− (∩ngram/ ∪ ngram)
Мера Левинштейна
Мера Минковского
dp(x , y) =p
√∑|xi − yi |p (1)
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 19 / 39
Деревья
Абстрактное дерево поиска
1 добавление элемента2 расщепление вершины3 удаление элемента
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 20 / 39
Деревья
Обобщаем B+ Tree
Узел - прямоугольный параллелепипед с гранямивдоль гиперплоскостей базиса - R-TreeКлюч - центр сферы, объемлющей своих детей -M-TreeКлюч - гиперплоскость - k-d Treeetc
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 21 / 39
Деревья
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
Деревья
Оценка
поиск: O(logm(n))добавление: O(logm(n))удаление: O(logm(n))расщепление: m −m2 в зависимости от алгоритма
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 23 / 39
Деревья
m-tree
Примерно та же история
Кроме того, алгоритмы усложняются возможнотяжелым вычислением расстояния между точками.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 24 / 39
Почему всё это не работает?
Почему всё это не работает?
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 25 / 39
Почему всё это не работает? Проклятье размерности
Проклятье размерности
Оценивая алгоритмы мы обошли одну важную вещь
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 26 / 39
Почему всё это не работает? Проклятье размерности
Определение
Пространство становится разреженным:
limd→∞
V (sphere)/V (parallelotope)→ 0 (2)
Увеличивается вероятность самопересеченияТеряется смысл мера Минковского.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 27 / 39
Почему всё это не работает? Проклятье размерности
Пример
Дан единичный 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
Почему всё это не работает? Проклятье размерности
Деревья
Каждый спуск совершается почти во все узлыВ худшем случае медленнее, чем простой перебор.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 29 / 39
Как починить деревья?
Как починить деревья?
1 Настройка алгоритма расщепления узла2 Выделение пространства меньшей размерности3 Техники понижения размерности4 Использование не деградирующих функций
расстояния
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 30 / 39
Как починить деревья?
Расщепление узла
Использование кластеризацииПереразбиение всего уровня
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 31 / 39
Как починить деревья?
Поиск релевантного подпространства
Найти все классические произведения, похожие нароман Е. Замятина "Мы"
Отсекаем неологизмыОтсекаем аргоВозможно, уменьшаем выборку по годам илиавторам
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 32 / 39
Как починить деревья?
Понижение размерности
Построение облака тэговПоиск репрезентативных точек (кластеризация)
Вероятностное понижение размерностиДля пространства P размерности n, построить такоебиективное отображение в пространство P ′
размерности k , k << n, что если две точки близки вP ′, то вероятность того, что они близки в P больше ε
Проекция двумерного пространства на одну изосей - простейшее понижение размерности.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 33 / 39
Другие подходы Хеш
Хеш
Хешевый индексПоддерживает запросы только на совпадениеРавномерно распределяет точки по корзинам
Как адаптировать хеш для наших многомерных нужд?Поменять функцию так, что она складывала близкиеточки не в разные, а в одну корзину.
А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 34 / 39
Другие подходы Хеш
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
Другие подходы Хеш
Индексирование
Домен 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
Другие подходы Хеш
Литература
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
Другие подходы Хеш
Литература
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