SlideShare a Scribd company logo
Matching
Theory
© Pavel Alexeev,
2016
2
Что такое Matching?
— Алё. Петя, поищи в нашей базе Адольфа
Швардсенеггера
— Шворцинегира? Нет такого!
Matching
Matching
Search
3
Виды
Изображения Голос
4
Виды
Видео
5
Текст matching.
Постановка
● “Вася” == “Вася”
● “Вася” =? “Василий”
● “Наталья” =? “Наталия”
● “Вася Уткин” =? “Уткин Вася”
● {“name”: “Вася”, “family”: “Уткин”} == {“name”: “Вася”, “family”:
“Уткин”}
● {“name”: “Вася”, “family”: “Уткин”} =? {“name”: “Василий”, “family”:
“Уткин”}
● “Вася Уткин, проживающий по адресу г. Санкт-Петербург...” ??
“гражданин Уткин В., регион СПб...”
6
● Equality. RegExp
● Фонетические алгоритмы
○ Soundex, Daitch-Mokotoff Soundex, NYSIIS
○ Metaphone, Double Metaphone, русский Metaphone, Caverphone…
● Редакторские расстояния
○ Расстояние Левенштейна, Дамерау-Левенштейна
○ Алгоритм Bitap с модификациями от Wu и Manber
○ Расширение выборки, метод N-грамм, хеширование по
сигнатуре
○ BK-деревья (Burkhard-Keller), Gap penalties, affine gap
penalties...
● Нечёткий поиск
○ TF, TF-IDF, TF-RIDF
○ Алгоритм шинглов (супершинглов, мегашинглов)
● Machine learning
○ Support Vector Machine, SVM), SVC, Логистическая регрессия
○ Градиентный бустинг над деревьями, случайный лес (begging)
○ Нейронные сети, глубокие нейронные сети
7
Алгоритмы. RegExp
http://emailregex.com/
General Email Regex (RFC 5322 Official Standard)
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-
]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-x7f]|[x01-
x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-
z0-9-]*[a-z0-9])?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-
4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21-
x5ax53-x7f]|[x01-x09x0bx0cx0e-x7f])+)])
Javascript
/^[-a-z0-9~!$%^&*_=+}{'?]+(.[-a-z0-9~!$%^&*_=+}{'?]+)*@([a-z0-9_][-a-z0-
9_]*(.[-a-z0-
9_]+)*.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|trav
el|mobi|[a-z][a-z])|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(:[0-
9]{1,5})?$/i
Оригинальный Soundex:
D341 → Дедловский, Дедловских, Дидилев, Дителев, Дудалев, Дудолев, Дутлов,
Дыдалев, Дятлов, Дятлович.
N251 → Нагимов, Нагмбетов, Назимов, Насимов, Нассонов, Нежнов, Незнаев, Несмеев,
Нижневский, Никонов, Никонович, Нисенблат, Нисенбаум, Ниссенбаум, Ногинов,
Ножнов.
Улучшенный Soundex:
N8030802 → Насимов, Нассонов, Никонов.
N80308108 → Нисенбаум, Ниссенбаум.
N8040802 → Нагимов, Нагонов, Неганов, Ногинов.
N804810602 → Нагмбетов. 8
Фонетические алгоритмы
9
Фонетические алгоритмы
Daitch-Mokotoff
dm('Майкл Джордан') == dm('Michael Jordan') == 658000
493600
dm('Арнольд Шварцнеггер') == dm('Arnold Schwarzenegger') ==
096830 479465
dm('Орнольд Шворцнегир') == dm('Arnold Schwarzenegger') ==
096830 479465
10
Фонетические алгоритмы
● Давно известны. Легко реализуются
● Специфичны для областей созвучности (имена, названия)
● Базируются на разборе правил языка, последовательности
гласных, согласных, порядке и значимости для звучания
● Хорошо индексируются
● Требуют нормализации, разбора и порядка
● Специфичны для языка и локали
● Практически не расширяются на объёмный текст
11
Алгоритмы. Редакторские
расстояния
“найти все слова, совпадающие с искомым с учетом k-
возможных различий”
Например, при запросе «Машина» с учетом двух возможных ошибок,
найти слова «Машинка», «Махина», «Малина», «Калина» и так
далее.
Алгоритмы нечеткого поиска характеризуются метрикой — функцией
расстояния между двумя словами, позволяющей оценить степень их
сходства в данном контексте. Строгое математическое определение
метрики включает в себя необходимость соответствия условию
неравенства треугольника (X — множество слов, p — метрика):
12
Расстояние Левенштейна
● Наиболее популярного алгоритма
расчета — метода Вагнера-Фишера.
● Исходный вариант имеет
временную сложность O(mn) и
потребляет O(mn) памяти, где m и
n — длины сравниваемых строк.
Оптимизации до O(k min(m, n)).
● Цены операций могут зависеть от
вида операции
● Расстояние Дамерау —
Левенштейна - модификация с
добавлением операции
транспозиции (перестановки)
символов.
● Модификации Bitap (Bitshift, Shift-
13
Алгоритм расширения выборки
● Если набор слов не велик
(spellchecker), cоставим заранее
возможные ошибки
● Время работы сильно зависит от
числа k ошибок и от размера
алфавита A, и в случае
использования бинарного поиска
по словарю составляет:
● Зато возможно частичное
индексирование
● Индексы достаточно объёмны
● Из простых улучшений -
вероятностные генерации ошибок
14
Метод N-грамм, Хеширование по
сигнатуре
«Если слово А совпадает со словом
Б с учетом нескольких ошибок, то с
большой долей вероятности у них
будет хотя бы одна общая подстрока
длины N»
ВОТКА → ВОТ, ОТК, ТКА
15
Нечёткий поиск. TF-IDF
TF (term frequency — частота слова) — отношение числа вхождения
некоторого слова к общему количеству слов документа (оценка важности
слова ti в пределах отдельного документа):
где ni есть число вхождений слова в документ, а в знаменателе — общее
число слов в данном документе.
IDF (inverse document frequency — обратная частота документа) — инверсия
частоты, с которой некоторое слово встречается в документах коллекции.
Текст. Алгоритм шинглов
канонизация текстов (очистка)
разбиение текста на шинглы ((англ) — чешуйки, выделенные из статьи
подпоследовательности слов)
нахождение контрольных сумм (CRC, SHA256, MD5...)
поиск одинаковых подпоследовательностей
«Разум дан человеку для того, чтобы он разумно жил, а не для того
только, чтобы он понимал, что он неразумно живет.» © В. Г. Белинский
Исходный текст:
разум дан человеку того чтобы разумно жил того только чтобы понимал
неразумно живет
После очистки:
Sh1 = разум дан человеку того чтобы разумно жил того только чтобы
Sh2 = дан человеку того чтобы разумно жил того только чтобы понимал
Sh3 = человеку того чтобы разумно жил того только чтобы понимал неразумно
Sh4 = того чтобы разумно жил того только чтобы понимал неразумно живет
Шинглы будут выглядеть следующим образом:
16
17
Machine learning
● Метод опорных векторов: Опорные объекты (Support Vector Machine,
SVM)
● C-Support Vector Classification (SVC))
● Логистическая регрессия (AUC ROC)
● Градиентный бустинг над решающими деревьями
● Случайный лес (Begging)
● Нейронные сети (метод обратного распространения ошибки), глубокие
нейронные сети
● Кластеризация (иерархическая кластеризация, обучение без учителя)
● +Нелинейные методы понижения размерности
● +Частичное обучение
18
Machine learning. Постановка задачи
19
Machine learning. Постановка задачи
20
Machine learning. Как задаются ответы.
Типы задач
21
Machine learning. Моделирование
22
Machine learning. Моделирование
23
Machine learning. Моделирование
24
Machine learning
Этапы обучения и применения модели
25
Machine learning. Функционал качества
Переобучение
26
Machine learning. Функционал качества
ROC-кривая (receiver operating
characteristic, рабочая
характеристика приёмника) —
график, позволяющий оценить
качество бинарной классификации,
27
Machine learning
Логистическая регрессия или логит-регрессия (англ. logit model) — это
статистическая модель, используемая для предсказания вероятности
возникновения некоторого события путём подгонки данных к логистической
кривой.
Применяется для предсказания вероятности возникновения некоторого
события по значениям множества признаков.
● Мультиколлинеарность сильно ухудшает
качество (вводится компонент
регуляризации l1 или l2)
● Чувствительно к скалированию.
● Не переваривает категориальные признаки
● Для многоклассовой классификации
используется Softmax-регрессия,
Множественная логит-регрессия
>>> measurements = [
... {'city': 'Dubai', 'temperature': 33.},
... {'city': 'London', 'temperature': 12.},
... {'city': 'San Fransisco', 'temperature':
18.},
... ]
>>> from sklearn.feature_extraction import
DictVectorizer
>>> vec = DictVectorizer()
>>> vec.fit_transform(measurements).toarray()
array([[ 1., 0., 0., 33.],
[ 0., 1., 0., 12.],
[ 0., 0., 1., 18.]])
>>> vec.get_feature_names()
['city=Dubai', 'city=London', 'city=San
Fransisco', 'temperature']
>>> text = [
... 'Алё. Петя, поищи в нашей базе Адольфа Швардсенеггера',
... 'Вася Уткин, проживающий по адресу г. Санкт-Петербург...',
... 'гражданин Уткин В., регион СПб...',
... 'Разум дан человеку для того, чтобы он разумно жил, а не ...
для того только, чтобы он понимал, что он неразумно живет.'
... ]
>>> from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(min_df=1)
>>> array = vectorizer.fit_transform(text)
>>> array.toarray()
array([[ 0.37796447, 0. , 0.37796447, 0.37796447, 0. ,
0. , 0. , 0. , 0. , 0. ,
0.37796447, 0. , 0. , 0. , 0. ,
0.37796447, 0. , 0.37796447, 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
...
28
Machine learning. Векторизация
29
Machine learning. Кластеризация
30
Machine learning. Кластеризация. K-means
● Обучение без учителя
● Но важным является
выбор числа кластеров!
31
Machine learning. Иерархическая кластеризация
● Обучение без учителя
● Заранее не известно
количество кластеров
(дублей, групп)!
Например как схожесть
видов в биологии
● Вместо числа кластеров
строим - иерархическую
кластеризацию!Типы алгоритмов:
● агломеративные - объединяют в более
крупные кластеры
● либо дивизимные - наоборот, дробят на
более мелкие
32
Machine learning. Иерархическая кластеризация
● Обучение без учителя
● Заранее не известно
количество кластеров
(дублей, групп)!
Например как схожесть
видов в биологии
● Вместо числа кластеров
строим - иерархическую
кластеризацию!Типы алгоритмов:
● агломеративные - объединяют в более
крупные кластеры
● либо дивизимные - наоборот, дробят на
более мелкие
33
Machine learning. Иерархическая кластеризация
Формула Ланса-Уильямса
34
Machine learning. Частные случаи формулы Ланса-
Уильямса
35
Machine learning. Визуализация кластеризации
36
Нужны метаалгоритмы. Правила
Нормализовали что могли, разобрали по полям:
1. “Вася Уткин, проживающий по адресу: г. Санкт-Петербург, ул. Красного
Курсанта 25Ж”
2. “гражданин Уткин В., регион СПб, адрес Красного Курсанта улитса”
Как? Это отдельный вопрос
1. {name: “Вася”, family: “Уткин”, region: “г. Санкт-Петербург”, street: “ул.
Красного Курсанта”, build: “25Ж”}
2. {name: “В”, family: “Уткин”, region: “СПб”, street: “Красного Курсанта”, build: “”}
● “В” это Василий, Виктор или Володя? Сравнивать?
● “Красного Курсанта” - “ул.” Имеет значение? А если нет улицы?
● Веса признаков?
● Категории? Справочники?
● ООО “Ромашка” =? ОАО Ромашка =? “Ромашка”
Opensourcesolutions
1. https://github.com/larsga/Duke - Duke is a fast and flexible deduplication
engine written in Java (based on Lucene)
2. http://dedupe.readthedocs.org/en/latest/ - dedupe is a library that uses
machine learning to perform de-duplication and entity resolution quickly
on structured data. Python.
3. https://www.tensorflow.org/ TensorFlowis an open source software library
for numerical computation using data flow graphs. By Google.
4. http://de.slideshare.net/teofili/text-categorization-with-lucene-and-solr
Lucene + Solr. Duplications.
5. https://github.com/YannBrrd/elasticsearch-entity-resolution - This project is
an interactive entity resolution plugin for Elasticsearch based on Duke. Basically, it uses Bayesian
probabilities to compute probability. You can pretty much use it as an interactive deduplication
37
Использованные материалы
1. https://habrahabr.ru/post/114947/ - Фонетические алгоритмы. Никита Сметанин.
2. https://habrahabr.ru/post/114997/ - Нечёткий поиск в тексте и словаре.
3. https://habrahabr.ru/post/28752/ - Фонетический поиск.
4. https://habrahabr.ru/post/116824/ - Отслеживание объектов на видео. Анатолий Ализар.
5. https://www.youtube.com/watch?v=1GhNXHCQGsM - Predator: Camera That Learns. Zdenek Kalal.
6. https://yandex.ru/support/images/loaded-image.xml Поиск по картинке.
7. https://habrahabr.ru/post/65944/ - Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов. Виталий
Родненко.
8. http://www.codeisart.ru/blog/python-shingles-algorithm/ - Python: Алгоритм Шинглов — поиск нечетких
дубликатов текста. VitaliyRodnenko, 19.01.2009.
9. https://ru.wikipedia.org/wiki/TF-IDF
38

More Related Content

Viewers also liked

Bases of the design for advertising and promotion
Bases of the design for advertising and promotionBases of the design for advertising and promotion
Bases of the design for advertising and promotion
Universidad del Valle de México
 
eCommerce day 2017 - On-page Optimization - Soft Uni
eCommerce day 2017 - On-page Optimization - Soft UnieCommerce day 2017 - On-page Optimization - Soft Uni
eCommerce day 2017 - On-page Optimization - Soft Uni
Tendrik
 
Wasser unser Element
Wasser unser ElementWasser unser Element
Wasser unser Element
Matthias C. Mend
 
What's your native language?
What's your native language?What's your native language?
What's your native language?
Suzie Towne
 
2 s.goda - pvgs ok
2  s.goda - pvgs ok2  s.goda - pvgs ok
Ceneval planeación estratégica
Ceneval    planeación estratégicaCeneval    planeación estratégica
Ceneval planeación estratégica
Universidad del Valle de México
 
Role of media in advertising
Role of media in advertisingRole of media in advertising
Role of media in advertising
Universidad del Valle de México
 
Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...
Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...
Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...
SaoKim.com.vn
 
ViolacióN A Los Derechos Humanos
ViolacióN A Los Derechos HumanosViolacióN A Los Derechos Humanos
ViolacióN A Los Derechos Humanos
guest71e273
 
管線加盲作業工作人員吸入硫化氫緊急應變演習
管線加盲作業工作人員吸入硫化氫緊急應變演習管線加盲作業工作人員吸入硫化氫緊急應變演習
管線加盲作業工作人員吸入硫化氫緊急應變演習
justdancer99
 
I loved women-Renoir
I loved women-RenoirI loved women-Renoir
I loved women-Renoir
Makala (D)
 
Evening Bells
Evening Bells Evening Bells
Evening Bells Makala (D)
 
Profile
ProfileProfile
Allegory of SPRING in Art
Allegory of SPRING in ArtAllegory of SPRING in Art
Allegory of SPRING in Art
Makala (D)
 
Domotica
DomoticaDomotica
Domotica
Carmen Nereira
 

Viewers also liked (17)

Bases of the design for advertising and promotion
Bases of the design for advertising and promotionBases of the design for advertising and promotion
Bases of the design for advertising and promotion
 
eCommerce day 2017 - On-page Optimization - Soft Uni
eCommerce day 2017 - On-page Optimization - Soft UnieCommerce day 2017 - On-page Optimization - Soft Uni
eCommerce day 2017 - On-page Optimization - Soft Uni
 
Wasser unser Element
Wasser unser ElementWasser unser Element
Wasser unser Element
 
What's your native language?
What's your native language?What's your native language?
What's your native language?
 
2 s.goda - pvgs ok
2  s.goda - pvgs ok2  s.goda - pvgs ok
2 s.goda - pvgs ok
 
Ceneval planeación estratégica
Ceneval    planeación estratégicaCeneval    planeación estratégica
Ceneval planeación estratégica
 
Role of media in advertising
Role of media in advertisingRole of media in advertising
Role of media in advertising
 
Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...
Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...
Gói giải pháp toàn diện về xây dựng và phát triển thương hiệu ch...
 
ViolacióN A Los Derechos Humanos
ViolacióN A Los Derechos HumanosViolacióN A Los Derechos Humanos
ViolacióN A Los Derechos Humanos
 
管線加盲作業工作人員吸入硫化氫緊急應變演習
管線加盲作業工作人員吸入硫化氫緊急應變演習管線加盲作業工作人員吸入硫化氫緊急應變演習
管線加盲作業工作人員吸入硫化氫緊急應變演習
 
I loved women-Renoir
I loved women-RenoirI loved women-Renoir
I loved women-Renoir
 
120514 4
120514 4120514 4
120514 4
 
Evening Bells
Evening Bells Evening Bells
Evening Bells
 
Profile
ProfileProfile
Profile
 
Shri nayika kavacham
Shri nayika kavachamShri nayika kavacham
Shri nayika kavacham
 
Allegory of SPRING in Art
Allegory of SPRING in ArtAllegory of SPRING in Art
Allegory of SPRING in Art
 
Domotica
DomoticaDomotica
Domotica
 

More from Pavel Alexeev

Apache airflow
Apache airflowApache airflow
Apache airflow
Pavel Alexeev
 
Elasticsearch features and ecosystem
Elasticsearch features and ecosystemElasticsearch features and ecosystem
Elasticsearch features and ecosystem
Pavel Alexeev
 
High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)
Pavel Alexeev
 
ToroDB (highload++2015)
ToroDB (highload++2015)ToroDB (highload++2015)
ToroDB (highload++2015)
Pavel Alexeev
 
Ansible+docker (highload++2015)
Ansible+docker (highload++2015)Ansible+docker (highload++2015)
Ansible+docker (highload++2015)
Pavel Alexeev
 
Git for you
Git for youGit for you
Git for you
Pavel Alexeev
 

More from Pavel Alexeev (6)

Apache airflow
Apache airflowApache airflow
Apache airflow
 
Elasticsearch features and ecosystem
Elasticsearch features and ecosystemElasticsearch features and ecosystem
Elasticsearch features and ecosystem
 
High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)
 
ToroDB (highload++2015)
ToroDB (highload++2015)ToroDB (highload++2015)
ToroDB (highload++2015)
 
Ansible+docker (highload++2015)
Ansible+docker (highload++2015)Ansible+docker (highload++2015)
Ansible+docker (highload++2015)
 
Git for you
Git for youGit for you
Git for you
 

Matching theory

  • 2. 2 Что такое Matching? — Алё. Петя, поищи в нашей базе Адольфа Швардсенеггера — Шворцинегира? Нет такого! Matching Matching Search
  • 5. 5 Текст matching. Постановка ● “Вася” == “Вася” ● “Вася” =? “Василий” ● “Наталья” =? “Наталия” ● “Вася Уткин” =? “Уткин Вася” ● {“name”: “Вася”, “family”: “Уткин”} == {“name”: “Вася”, “family”: “Уткин”} ● {“name”: “Вася”, “family”: “Уткин”} =? {“name”: “Василий”, “family”: “Уткин”} ● “Вася Уткин, проживающий по адресу г. Санкт-Петербург...” ?? “гражданин Уткин В., регион СПб...”
  • 6. 6 ● Equality. RegExp ● Фонетические алгоритмы ○ Soundex, Daitch-Mokotoff Soundex, NYSIIS ○ Metaphone, Double Metaphone, русский Metaphone, Caverphone… ● Редакторские расстояния ○ Расстояние Левенштейна, Дамерау-Левенштейна ○ Алгоритм Bitap с модификациями от Wu и Manber ○ Расширение выборки, метод N-грамм, хеширование по сигнатуре ○ BK-деревья (Burkhard-Keller), Gap penalties, affine gap penalties... ● Нечёткий поиск ○ TF, TF-IDF, TF-RIDF ○ Алгоритм шинглов (супершинглов, мегашинглов) ● Machine learning ○ Support Vector Machine, SVM), SVC, Логистическая регрессия ○ Градиентный бустинг над деревьями, случайный лес (begging) ○ Нейронные сети, глубокие нейронные сети
  • 7. 7 Алгоритмы. RegExp http://emailregex.com/ General Email Regex (RFC 5322 Official Standard) (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~- ]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-x7f]|[x01- x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a- z0-9-]*[a-z0-9])?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0- 4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21- x5ax53-x7f]|[x01-x09x0bx0cx0e-x7f])+)]) Javascript /^[-a-z0-9~!$%^&*_=+}{'?]+(.[-a-z0-9~!$%^&*_=+}{'?]+)*@([a-z0-9_][-a-z0- 9_]*(.[-a-z0- 9_]+)*.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|trav el|mobi|[a-z][a-z])|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(:[0- 9]{1,5})?$/i
  • 8. Оригинальный Soundex: D341 → Дедловский, Дедловских, Дидилев, Дителев, Дудалев, Дудолев, Дутлов, Дыдалев, Дятлов, Дятлович. N251 → Нагимов, Нагмбетов, Назимов, Насимов, Нассонов, Нежнов, Незнаев, Несмеев, Нижневский, Никонов, Никонович, Нисенблат, Нисенбаум, Ниссенбаум, Ногинов, Ножнов. Улучшенный Soundex: N8030802 → Насимов, Нассонов, Никонов. N80308108 → Нисенбаум, Ниссенбаум. N8040802 → Нагимов, Нагонов, Неганов, Ногинов. N804810602 → Нагмбетов. 8 Фонетические алгоритмы
  • 9. 9 Фонетические алгоритмы Daitch-Mokotoff dm('Майкл Джордан') == dm('Michael Jordan') == 658000 493600 dm('Арнольд Шварцнеггер') == dm('Arnold Schwarzenegger') == 096830 479465 dm('Орнольд Шворцнегир') == dm('Arnold Schwarzenegger') == 096830 479465
  • 10. 10 Фонетические алгоритмы ● Давно известны. Легко реализуются ● Специфичны для областей созвучности (имена, названия) ● Базируются на разборе правил языка, последовательности гласных, согласных, порядке и значимости для звучания ● Хорошо индексируются ● Требуют нормализации, разбора и порядка ● Специфичны для языка и локали ● Практически не расширяются на объёмный текст
  • 11. 11 Алгоритмы. Редакторские расстояния “найти все слова, совпадающие с искомым с учетом k- возможных различий” Например, при запросе «Машина» с учетом двух возможных ошибок, найти слова «Машинка», «Махина», «Малина», «Калина» и так далее. Алгоритмы нечеткого поиска характеризуются метрикой — функцией расстояния между двумя словами, позволяющей оценить степень их сходства в данном контексте. Строгое математическое определение метрики включает в себя необходимость соответствия условию неравенства треугольника (X — множество слов, p — метрика):
  • 12. 12 Расстояние Левенштейна ● Наиболее популярного алгоритма расчета — метода Вагнера-Фишера. ● Исходный вариант имеет временную сложность O(mn) и потребляет O(mn) памяти, где m и n — длины сравниваемых строк. Оптимизации до O(k min(m, n)). ● Цены операций могут зависеть от вида операции ● Расстояние Дамерау — Левенштейна - модификация с добавлением операции транспозиции (перестановки) символов. ● Модификации Bitap (Bitshift, Shift-
  • 13. 13 Алгоритм расширения выборки ● Если набор слов не велик (spellchecker), cоставим заранее возможные ошибки ● Время работы сильно зависит от числа k ошибок и от размера алфавита A, и в случае использования бинарного поиска по словарю составляет: ● Зато возможно частичное индексирование ● Индексы достаточно объёмны ● Из простых улучшений - вероятностные генерации ошибок
  • 14. 14 Метод N-грамм, Хеширование по сигнатуре «Если слово А совпадает со словом Б с учетом нескольких ошибок, то с большой долей вероятности у них будет хотя бы одна общая подстрока длины N» ВОТКА → ВОТ, ОТК, ТКА
  • 15. 15 Нечёткий поиск. TF-IDF TF (term frequency — частота слова) — отношение числа вхождения некоторого слова к общему количеству слов документа (оценка важности слова ti в пределах отдельного документа): где ni есть число вхождений слова в документ, а в знаменателе — общее число слов в данном документе. IDF (inverse document frequency — обратная частота документа) — инверсия частоты, с которой некоторое слово встречается в документах коллекции.
  • 16. Текст. Алгоритм шинглов канонизация текстов (очистка) разбиение текста на шинглы ((англ) — чешуйки, выделенные из статьи подпоследовательности слов) нахождение контрольных сумм (CRC, SHA256, MD5...) поиск одинаковых подпоследовательностей «Разум дан человеку для того, чтобы он разумно жил, а не для того только, чтобы он понимал, что он неразумно живет.» © В. Г. Белинский Исходный текст: разум дан человеку того чтобы разумно жил того только чтобы понимал неразумно живет После очистки: Sh1 = разум дан человеку того чтобы разумно жил того только чтобы Sh2 = дан человеку того чтобы разумно жил того только чтобы понимал Sh3 = человеку того чтобы разумно жил того только чтобы понимал неразумно Sh4 = того чтобы разумно жил того только чтобы понимал неразумно живет Шинглы будут выглядеть следующим образом: 16
  • 17. 17 Machine learning ● Метод опорных векторов: Опорные объекты (Support Vector Machine, SVM) ● C-Support Vector Classification (SVC)) ● Логистическая регрессия (AUC ROC) ● Градиентный бустинг над решающими деревьями ● Случайный лес (Begging) ● Нейронные сети (метод обратного распространения ошибки), глубокие нейронные сети ● Кластеризация (иерархическая кластеризация, обучение без учителя) ● +Нелинейные методы понижения размерности ● +Частичное обучение
  • 20. 20 Machine learning. Как задаются ответы. Типы задач
  • 24. 24 Machine learning Этапы обучения и применения модели
  • 25. 25 Machine learning. Функционал качества Переобучение
  • 26. 26 Machine learning. Функционал качества ROC-кривая (receiver operating characteristic, рабочая характеристика приёмника) — график, позволяющий оценить качество бинарной классификации,
  • 27. 27 Machine learning Логистическая регрессия или логит-регрессия (англ. logit model) — это статистическая модель, используемая для предсказания вероятности возникновения некоторого события путём подгонки данных к логистической кривой. Применяется для предсказания вероятности возникновения некоторого события по значениям множества признаков. ● Мультиколлинеарность сильно ухудшает качество (вводится компонент регуляризации l1 или l2) ● Чувствительно к скалированию. ● Не переваривает категориальные признаки ● Для многоклассовой классификации используется Softmax-регрессия, Множественная логит-регрессия
  • 28. >>> measurements = [ ... {'city': 'Dubai', 'temperature': 33.}, ... {'city': 'London', 'temperature': 12.}, ... {'city': 'San Fransisco', 'temperature': 18.}, ... ] >>> from sklearn.feature_extraction import DictVectorizer >>> vec = DictVectorizer() >>> vec.fit_transform(measurements).toarray() array([[ 1., 0., 0., 33.], [ 0., 1., 0., 12.], [ 0., 0., 1., 18.]]) >>> vec.get_feature_names() ['city=Dubai', 'city=London', 'city=San Fransisco', 'temperature'] >>> text = [ ... 'Алё. Петя, поищи в нашей базе Адольфа Швардсенеггера', ... 'Вася Уткин, проживающий по адресу г. Санкт-Петербург...', ... 'гражданин Уткин В., регион СПб...', ... 'Разум дан человеку для того, чтобы он разумно жил, а не ... для того только, чтобы он понимал, что он неразумно живет.' ... ] >>> from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer(min_df=1) >>> array = vectorizer.fit_transform(text) >>> array.toarray() array([[ 0.37796447, 0. , 0.37796447, 0.37796447, 0. , 0. , 0. , 0. , 0. , 0. , 0.37796447, 0. , 0. , 0. , 0. , 0.37796447, 0. , 0.37796447, 0. , 0. , 0. , 0. , 0. , 0. , 0. , ... 28 Machine learning. Векторизация
  • 30. 30 Machine learning. Кластеризация. K-means ● Обучение без учителя ● Но важным является выбор числа кластеров!
  • 31. 31 Machine learning. Иерархическая кластеризация ● Обучение без учителя ● Заранее не известно количество кластеров (дублей, групп)! Например как схожесть видов в биологии ● Вместо числа кластеров строим - иерархическую кластеризацию!Типы алгоритмов: ● агломеративные - объединяют в более крупные кластеры ● либо дивизимные - наоборот, дробят на более мелкие
  • 32. 32 Machine learning. Иерархическая кластеризация ● Обучение без учителя ● Заранее не известно количество кластеров (дублей, групп)! Например как схожесть видов в биологии ● Вместо числа кластеров строим - иерархическую кластеризацию!Типы алгоритмов: ● агломеративные - объединяют в более крупные кластеры ● либо дивизимные - наоборот, дробят на более мелкие
  • 33. 33 Machine learning. Иерархическая кластеризация Формула Ланса-Уильямса
  • 34. 34 Machine learning. Частные случаи формулы Ланса- Уильямса
  • 35. 35 Machine learning. Визуализация кластеризации
  • 36. 36 Нужны метаалгоритмы. Правила Нормализовали что могли, разобрали по полям: 1. “Вася Уткин, проживающий по адресу: г. Санкт-Петербург, ул. Красного Курсанта 25Ж” 2. “гражданин Уткин В., регион СПб, адрес Красного Курсанта улитса” Как? Это отдельный вопрос 1. {name: “Вася”, family: “Уткин”, region: “г. Санкт-Петербург”, street: “ул. Красного Курсанта”, build: “25Ж”} 2. {name: “В”, family: “Уткин”, region: “СПб”, street: “Красного Курсанта”, build: “”} ● “В” это Василий, Виктор или Володя? Сравнивать? ● “Красного Курсанта” - “ул.” Имеет значение? А если нет улицы? ● Веса признаков? ● Категории? Справочники? ● ООО “Ромашка” =? ОАО Ромашка =? “Ромашка”
  • 37. Opensourcesolutions 1. https://github.com/larsga/Duke - Duke is a fast and flexible deduplication engine written in Java (based on Lucene) 2. http://dedupe.readthedocs.org/en/latest/ - dedupe is a library that uses machine learning to perform de-duplication and entity resolution quickly on structured data. Python. 3. https://www.tensorflow.org/ TensorFlowis an open source software library for numerical computation using data flow graphs. By Google. 4. http://de.slideshare.net/teofili/text-categorization-with-lucene-and-solr Lucene + Solr. Duplications. 5. https://github.com/YannBrrd/elasticsearch-entity-resolution - This project is an interactive entity resolution plugin for Elasticsearch based on Duke. Basically, it uses Bayesian probabilities to compute probability. You can pretty much use it as an interactive deduplication 37
  • 38. Использованные материалы 1. https://habrahabr.ru/post/114947/ - Фонетические алгоритмы. Никита Сметанин. 2. https://habrahabr.ru/post/114997/ - Нечёткий поиск в тексте и словаре. 3. https://habrahabr.ru/post/28752/ - Фонетический поиск. 4. https://habrahabr.ru/post/116824/ - Отслеживание объектов на видео. Анатолий Ализар. 5. https://www.youtube.com/watch?v=1GhNXHCQGsM - Predator: Camera That Learns. Zdenek Kalal. 6. https://yandex.ru/support/images/loaded-image.xml Поиск по картинке. 7. https://habrahabr.ru/post/65944/ - Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов. Виталий Родненко. 8. http://www.codeisart.ru/blog/python-shingles-algorithm/ - Python: Алгоритм Шинглов — поиск нечетких дубликатов текста. VitaliyRodnenko, 19.01.2009. 9. https://ru.wikipedia.org/wiki/TF-IDF 38

Editor's Notes

  1. https://habrahabr.ru/post/114947/ Matching != Search Matching - сущности те же, идентичны или похожи друг на друга до степени отождествления по какому-либо критерию. Поиск - нахождение вхождений, упоминаний, описаний, объяснений по данному термину, теме.
  2. Text, Structured text, Regexp, Voice, Video,
  3. https://habrahabr.ru/post/116824/
  4. Structured, Semistructured, Unstructured Все требуют предобработки, упорядочивания.
  5. http://homepage.usask.ca/~ctl271/857/affine_gap_penalties.shtml http://rcdl2007.pereslavl.ru/papers/paper_65_v1.pdf - Сравнительный анализ методов определения нечетких дубликатов для Web-документов
  6. Очень быстро становятся сложными. Для разбиения. Для совпадений. Не для матчинга.
  7. https://habrahabr.ru/post/114947/ Фонетические алгоритмы https://habrahabr.ru/post/28752/ - Фонетический поиск. Оригинальный Soundex: D341 → Дедловский, Дедловских, Дидилев, Дителев, Дудалев, Дудолев, Дутлов, Дыдалев, Дятлов, Дятлович. N251 → Нагимов, Нагмбетов, Назимов, Насимов, Нассонов, Нежнов, Незнаев, Несмеев, Нижневский, Никонов, Никонович, Нисенблат, Нисенбаум, Ниссенбаум, Ногинов, Ножнов. Улучшенный Soundex: N8030802 → Насимов, Нассонов, Никонов. N80308108 → Нисенбаум, Ниссенбаум. N8040802 → Нагимов, Нагонов, Неганов, Ногинов. N804810602 → Нагмбетов. N8050802 → Назимов, Нежнов, Ножнов.
  8. https://habrahabr.ru/post/114997/ - Нечёткий поиск в тексте и словаре https://ru.wikipedia.org/wiki/Неравенство_треугольника Нера́венство треуго́льника в геометрии, функциональном анализе и смежных дисциплинах — это одно из интуитивных свойств расстояния. Оно утверждает, что длина любой стороны треугольника всегда не превосходит сумму длин двух его других сторон. Между тем, в большинстве случаев под метрикой подразумевается более общее понятие, не требующее выполнения такого условия, это понятие можно также назвать расстоянием. В числе наиболее известных метрик — расстояния Хемминга, Левенштейна и Дамерау-Левенштейна. При этом расстояние Хемминга является метрикой только на множестве слов одинаковой длины, что сильно ограничивает область его применения.
  9. https://ru.wikipedia.org/wiki/Расстояние_Левенштейна https://habrahabr.ru/post/114997/ Цены операций могут зависеть от вида операции (вставка, удаление, замена) и/или от участвующих в ней символов, отражая разную вероятность мутаций в биологии[3], разную вероятность разных ошибок при вводе текста и т. Д. Расстояние Дамерау — Левенштейна (названо в честь учёных Фредерика Дамерау и Владимира Левенштейна) — это мера разницы двух строк символов, определяемая как минимальное количество операций вставки, удаления, замены и транспозиции (перестановки двух соседних символов), необходимых для перевода одной строки в другую. Является модификацией расстояния Левенштейна: к операциям вставки, удаления и замены символов, определенных в расстоянии Левенштейна добавлена операция транспозиции (перестановки) символов. Сложность: Если посмотреть на процесс работы алгоритма, несложно заметить, что на каждом шаге используются только две последние строки матрицы, следовательно, потребление памяти можно уменьшить до O(min(m, n)). Но это еще не всё — можно дальше оптимизировать алгоритм, если стоит задача нахождения не более k различий. В этом случае нужно вычислять в матрице лишь диагональную полосу шириной 2k+1 (отсечение Укконена), что сводит временную сложность к O(k min(m, n)). Bitshift: Алгоритм Bitap и различные его модификации наиболее часто используются для нечеткого поиска без индексации. Впервые идею этого алгоритма предложили граждане Ricardo Baeza-Yates и Gaston Gonnet, опубликовав соответствующую статью в 1992 году. Оригинальная версия алгоритма имеет дело только с заменами символов, и, фактически, вычисляет расстояние Хемминга. Но немного позже Sun Wu и Udi Manber предложили модификацию этого алгоритма для вычисления расстояния Левенштейна, т.е. привнесли поддержку вставок и удалений, и разработали на его основе первую версию утилиты agrep.
  10. Например, при k = 1 и слова длины 7 (например, «Крокодил») в русском алфавите множество ошибочных слов будет размером около 450, то есть будет необходимо сделать 450 запросов к словарю, что вполне приемлемо. Но уже при k = 2 размер такого множества будет составлять более 115 тысяч вариантов, что соответствует полному перебору небольшого словаря, либо же 1 / 27 в нашем случае, и, следовательно, время работы будет достаточно велико. При этом не нужно забывать еще и о том, что для каждого из таких слов необходимо провести поиск на точное совпадение в словаре. Особенности: Алгоритм может быть легко модифицирован для генерации «ошибочных» вариантов по произвольным правилам, и, к тому же, не требует никакой предварительной обработки словаря, и, соответственно, дополнительной памяти. Возможные улучшения: Можно генерировать не всё множество «ошибочных» слов, а только те из них, которые наиболее вероятно могут встретиться в реальной ситуации, например, слова с учетом распространенных орфографических ошибок или ошибок набора.
  11. N-граммы Придуман довольно давно, широко используемым, так как его реализация крайне проста, и он обеспечивает весьма хорошую производительность. Наиболее часто используемыми на практике являются триграммы — подстроки длины 3 (чтобы не накладывать ограничение на длину слов). При его использовании остается необходимость в последовательном переборе около 15% словаря, что достаточно много для словарей большого объема. Возможные улучшения: Можно разбивать хеш-таблицы N-грамм по длине слов и по позиции N-граммы в слове (модификация 1). Можно еще немного уменьшить размер необходимого для просмотра множества, разбив таблицы по длине слова, и аналогичным образом просматривая только соседние 2k+1 таблицы (модификация 2). Хеширование по сигнатуре Этот алгоритм описан в статье Бойцова Л.М. «Хеширование по сигнатуре». Он базируется на достаточно очевидном представлении «структуры» слова в виде битовых разрядов, используемой в качестве хеша (сигнатуры) в хеш-таблице. При индексации такие хеши вычисляются для каждого из слов, и в таблицу заносится соответствие списка словарных слов этому хешу. Затем, во время поиска, для запроса вычисляется хеш и перебираются все соседние хеши, отличающиеся от исходного не более чем в k битах. Для каждого из таких хешей производится перебор списка соответствующих ему слов. Удаление одного символа либо не изменит значения хеша (если в слове еще остались символы из той же группы алфавита), либо же соответствующий этой группе бит изменится в 0. При вставке, аналогичным образом либо один бит встанет в 1, либо никаких изменений не будет. При замене символов всё немного сложнее — хеш может либо вовсе остаться неизменным, либо же изменится в 1 или 2 позициях. При перестановках никаких изменений и вовсе не происходит, потому что порядок символов при построении хеша, как и было замечено ранее, не учитывается. Таким образом, для полного покрытия k ошибок нужно изменять не менее 2k бит в хеше.
  12. https://ru.wikipedia.org/wiki/TF-IDF Основоположником данной концепцииявляется Карен Спарк Джонс[1]. Учёт IDF уменьшает вес широкоупотребительных слов. Для каждого уникального слова в пределах конкретной коллекции документов существует только одно значение IDF. Пример Если документ содержит 100 слов и слово[3] «заяц» встречается в нём 3 раза, то частота слова (TF) для слова «заяц» в документе будет 0,03 (3/100). Вычислим IDF как десятичный логарифм отношения количества всех документов к количеству документов содержащих слово «заяц». Таким образом, если «заяц» содержится в 1000 документов из 10 000 000 документов, то IDF будет равной 4 (log(10000000/1000)). Для расчета окончательного значения веса слова необходимо TF умножить на IDF. В данном примере, TF-IDF вес для слова «заяц» в выбранном документе будет 0,12 (0,03*4).
  13. http://www.codeisart.ru/blog/python-shingles-algorithm/ - Python: Алгоритм Шинглов — поиск нечетких дубликатов текста. VitaliyRodnenko, 19.01.2009. Канонизация: stop_symbols = '.,!?:;-\n\r()', stop_words = (u'это', u'как', u'так', u'и', u'в', u'над', u'к', u'до', u'не', u'на', u'но', u'за', u'то', u'с', u'ли', u'а', u'во', u'от', u'со', u'для', u'о', u'же', u'ну', u'вы', u'бы', u'что', u'кто', u'он', u'она') Можно, например, каждое из существительных приводить к единственному числу, именительному падежу и т.д., для этого нужно подключать морфологические анализаторы русского языка (или других языков, где необходимы эти действия). На практике часто применяются последовательности длинной в 10 слов. Порядок позволяет не терять “смысл”, вроде “болеет” и “не болеет”. “Делает зарядку” и “Отвратительно делает зарядку”, “хорошо делает зарядку” Чем короче последовательности - тем больше индекс, но точнее определение по малым изменениям (вписывания слов, изменение порядка).
  14. Матрица объекты-признаки есть фактически реляциоонная таблица, в одном из столбцов которой есть результат, известный для обучающей выборки. Например группа, категория, город, соответствие.
  15. Разумеется для восстановления функции (алгоритма для компьютера), признаки должны быть числовыми. Некоторые измерения над нашими объектами. Классификация на 2 класса - Выиграл, проиграл (случилось или нет событие) Несколько непересекающихся классов: Оптическое распознавание символов (OCR) Медицинская диагностика (1 может иметь несколько болезней). Восстановление регрессии - экономические задачи, скоринг, предсказение цены
  16. Ищется некоторая функция, которая хорошо аппроксимирует нашу зависимость. Эксперты предлагают такие функции для предметных областей. Θ (тетта) - искомый вектор параметров нашей модели. В простых случаях достаточно линейных моделей регрессии. В простейшем случае линейной модели это просто взвешенная сумма всех признаков с Θj коэффициентами! Линейная модель классификации строит разделяющую гиперплоскость в N-мерном пространстве. (см далее пример ирисов.)
  17. Фишер известный статист. Собрал 150 цветков ириса. Каноническая задача. Измерений всего 4. Длина и ширина чашелистника, длина и ширина лепестка. Признаков мало (4), можно столкнуть все попарно и визуализовать. Затем смотрим, нет ли таких сочетаний признаков где задача бы решалась тривиально. Видно (next). Один отделился хорошо. Два других тоже прилично. (next). Синими линиями и построим линейный классификатор.
  18. Пример хадачи регрессии. Берём функцию от х. А в качестве признаков берём x, x в квадрате и т.д. Строим модель наилучшим образом приближаующу к нашим данным.
  19. Почти всегда есть 2 стадии обучения - тренировка и применение (на тестовой, контрольной). Фактически, задачу машинного обучения сводят к задаче оптимизации. Т.е. выбор приближающей функции и подбор её параметров для достижения оптимального результата. Но его надо померить!
  20. Количество ошибок, расстояние, среднеквадратичное отклонение. Их сумма фактически и есть “ошибка”, её и надо минимизировать на обучении и разработке функциональной модели.
  21. https://ru.wikipedia.org/wiki/ROC-кривая ROC-кривая (англ. receiver operating characteristic, рабочая характеристика приёмника) — график, позволяющий оценить качество бинарной классификации, отображает соотношение между долей объектов от общего количества носителей признака, верно классифицированных, как несущих признак, (англ. true positive rate, TPR, называемой чувствительностью алгоритма классификации) и долей объектов от общего количества объектов, не несущих признака, ошибочно классифицированных, как несущих признак (англ. false positive rate, FPR, величина 1-FPR называется специфичностьюалгоритма классификации) при варьировании порога решающего правила. Также известна как кривая ошибок. Анализ классификаций с применением ROC-кривых называется ROC-анализом. Количественную интерпретацию ROC даёт показатель AUC (англ. area under ROC curve, площадь под ROC-кривой) — площадь, ограниченная ROC-кривой и осью доли ложных положительных классификаций. Чем выше показатель AUC, тем качественнее классификатор, при этом значение 0,5 демонстрирует непригодность выбранного метода классификации (соответствует случайному гаданию).
  22. Вводится так называемая зависимая переменная y, принимающая лишь одно из двух значений — как правило, это числа 0 (событие не произошло) и 1 (событие произошло), и множество независимых переменных (также называемых признаками, предикторами или регрессорами) — вещественных x_1, x_2, ..., x_n, на основе значений которых требуется вычислить вероятность принятия того или иного значения зависимой переменной.
  23. http://scikit-learn.org/stable/modules/feature_extraction.html#loading-features-from-dicts В общем случае Matching строится поверх. Например с некоторым порогом можно сравнивать наиболее частые слова, не являющиеся паразитными. По их совпадению, можно говорить о вероятности дубля.
  24. https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie/lecture/o4Ij7/klastierizatsiia В общем виде не решается, нет общепризнаного подхода или алгоритма. Но есть несколько основных подходов. Ленточные кластеры чаще всего проблема для многих алгоритмов, т.к. стандартный подход исходит из предположения что внутрикластерные расстояния меньше чем расстояния между кластерами. (надо же по каким-то критериям этот кластер выделить). Например выделение образов на картинке. Или же, для наших примеров и задач, адреса внутри города должны быть ближе чем адрес без города, или в другом. Выбор ыункций “весов” весьма важен.
  25. Начальные центры можно брать случайно. Алгоритм будет “застревать в локальных экстремумах (оптимумах)” (градиентный спуск) Первое улучшение - Мягкий вариант K-среднийх (EM-алгоритм). Считается не только близость элементов внутри кластера, но и расстояние до центра каждого кластера. Выбираем ближайший. Количество элементов дискретно. Поэтому медленее меняются центры и расстояния между ними. Вычисляются “мощности кластеров” (доля из всей выборки). Случайные центры не эффективно. Лучше взять изначально наиболее удалённые. Центры будут двигаться вместе с кластерами. Наша кухня: Может подойти для определения городов, стран, форм собственности предприятий пола и т.д...
  26. https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie/lecture/woDpy/iierarkhichieskaia-klastierizatsiia Издревле - кластеризауия Карла Линнея, основанная на поарной близости растений, животных и минералов.
  27. Формула Ланса-Уильямся. До них расстояния между кластерывми высчитывались по сути как попарные расстояния между точками. Что очень долго. Они предложили высчитывать расстояния из расстояний внутри кластера.
  28. Ближайшие соседи кажется наиболее логичным. На практике плохая идея. Может быть 2 выброса, а мы опишем кластеры как близкие. Расстояние дальнего соседа. Также не лучшая идея. Но описывается их же формулой. Т.к. Расстояния это векторы, мы можем их складывать и брать среднее. По величине можем найти “центр масс кластера”. Казалось бы лучший способ, но на практике оказывается едва ли не худшим! Лучший чаще всего расстояние Уорда - оно нормированно.
  29. Наглядно и точно. По горизонтали отложены номера точек, по Y - расстояния между кластерами, при которых происходило объединение. Основные характеристики: Монотонность - не должно быть пересечений. То есть расстояния всегда увеличиваются (теорема Мелигана). О дендрограмме всегда можно выбрать необходимый уовень детализации (количества кластеров)!
  30. Presentation for Duke: http://de.slideshare.net/larsga/deduplication Many thinks and usefull links: http://stackoverflow.com/questions/16381133/using-machine-learning-to-de-duplicate-data -> https://groups.google.com/forum/?fromgroups=#!searchin/elasticsearch/identity$20resolution/elasticsearch/YMNaGOxTda4/W3Y7qN94ckIJ