SlideShare a Scribd company logo
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 - P
Domain - D
QueryPoint - q
Distance 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 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
Введение

Многомерный случай

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

Числа
Строки
Цепочки ДНК
Тексты
Изображения
Видео
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 ) =
А. В. Волохов (Yandex)

p

Indexing

|xi − yi |p
2 декабря 2013 г.

(1)
19 / 39
Деревья

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

1
2
3

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

А. В. Волохов (Yandex)

Indexing

2 декабря 2013 г.

20 / 39
Деревья

Обобщаем B+ Tree

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

А. В. Волохов (Yandex)

Indexing

2 декабря 2013 г.

21 / 39
Деревья

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
Деревья

Оценка

поиск: 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
Почему всё это не работает?

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

Определение

Пространство становится разреженным:
lim V (sphere)/V (parallelotope) → 0

d→∞

(2)

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

А. В. Волохов (Yandex)

Indexing

2 декабря 2013 г.

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

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

Пример
Дан единичный 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
Почему всё это не работает?

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

Деревья

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

А. В. Волохов (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 ∈ 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
Другие подходы

Хеш

Индексирование
Домен 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
Другие подходы

Хеш

Литература

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
Другие подходы

Хеш

Литература

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
Вопросы?

Вопросы?

Почта a.v.volokhov@gmail.com

А. В. Волохов (Yandex)

Indexing

2 декабря 2013 г.

39 / 39

More Related Content

PDF
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Mikhail Kurnosov
 
PDF
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Mikhail Kurnosov
 
PDF
Лекция 8: Графы. Обходы графов
Mikhail Kurnosov
 
PDF
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Mikhail Kurnosov
 
PDF
Лекция 5. B-деревья (B-trees, k-way merge sort)
Mikhail Kurnosov
 
PDF
Лекция 8. Графы. Обходы графов
Mikhail Kurnosov
 
PDF
Лекция 3. АВЛ-деревья (AVL trees)
Mikhail Kurnosov
 
PDF
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Mikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Mikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Mikhail Kurnosov
 
Лекция 8: Графы. Обходы графов
Mikhail Kurnosov
 
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Mikhail Kurnosov
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Mikhail Kurnosov
 
Лекция 8. Графы. Обходы графов
Mikhail Kurnosov
 
Лекция 3. АВЛ-деревья (AVL trees)
Mikhail Kurnosov
 
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Mikhail Kurnosov
 

Viewers also liked (18)

PDF
Software Transactional Memory
Vadim Tsesko
 
PDF
Базы данных. HBase
Vadim Tsesko
 
PDF
Actor model
Vadim Tsesko
 
PDF
Базы данных. HDFS
Vadim Tsesko
 
PDF
Actor model
Vadim Tsesko
 
PDF
Базы данных. Cassandra
Vadim Tsesko
 
PDF
Базы данных. Lucene
Vadim Tsesko
 
PDF
Базы данных. ZooKeeper
Vadim Tsesko
 
PDF
Фреймворк Akka и его использование в Яндексе
Vadim Tsesko
 
PDF
Базы данных. Distributed Commit
Vadim Tsesko
 
PDF
Базы данных. Haystack
Vadim Tsesko
 
PDF
Базы данных. MongoDB
Vadim Tsesko
 
PDF
Базы данных. Hash & Cache
Vadim Tsesko
 
PDF
Базы данных. Введение
Vadim Tsesko
 
PDF
Базы данных. CAP
Vadim Tsesko
 
PDF
Actor model. Futures & Promises. Reactive Streams.
Vadim Tsesko
 
PDF
Потоковая фильтрация событий
CEE-SEC(R)
 
PDF
YoctoDB в Яндекс.Вертикалях
CEE-SEC(R)
 
Software Transactional Memory
Vadim Tsesko
 
Базы данных. HBase
Vadim Tsesko
 
Actor model
Vadim Tsesko
 
Базы данных. HDFS
Vadim Tsesko
 
Actor model
Vadim Tsesko
 
Базы данных. Cassandra
Vadim Tsesko
 
Базы данных. Lucene
Vadim Tsesko
 
Базы данных. ZooKeeper
Vadim Tsesko
 
Фреймворк Akka и его использование в Яндексе
Vadim Tsesko
 
Базы данных. Distributed Commit
Vadim Tsesko
 
Базы данных. Haystack
Vadim Tsesko
 
Базы данных. MongoDB
Vadim Tsesko
 
Базы данных. Hash & Cache
Vadim Tsesko
 
Базы данных. Введение
Vadim Tsesko
 
Базы данных. CAP
Vadim Tsesko
 
Actor model. Futures & Promises. Reactive Streams.
Vadim Tsesko
 
Потоковая фильтрация событий
CEE-SEC(R)
 
YoctoDB в Яндекс.Вертикалях
CEE-SEC(R)
 
Ad

Multidimensional indexing

  • 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. Вопросы? Вопросы? Почта [email protected] А. В. Волохов (Yandex) Indexing 2 декабря 2013 г. 39 / 39