Следует ли удалять дублирующие записи до запуска алгоритма EM Record Linkage?
Пример настройки
Я связываю набор данных, чтобы найти в нем повторяющиеся записи. Я не знаю, сколько раз дубликат может отображаться в моем наборе данных.
После моей блокировки я получаю следующий набор данных:
[Это примерный набор данных, а не мои настоящие данные]
1st Dataset: Region AB_1, df1 FName_1 SName_1 Area_1 Age_1 1a Ben Nevis AB 30 2a Ben Neviss AB 30 3a Andy Red AB 35 4a Andy Redd AB 35 2nd Dataset: Region AB_2, df2 FName_2 SName_2 Area_2 Age_2 1b Ben Nevis AB 30 2b Ben Neviss AB 30 3b Andy Red AB 35 4b Andy Redd AB 35
Итак, я сравниваю записи в одном наборе данных друг с другом.
Я сравниваю приведенные выше наборы данных вместе с использованием алгоритма EM, основанного на алгоритме Fellegi Sunter, с переменными согласования «имя» и «фамилия».
Я создаю свое сравнительное пространство, сравнивая каждую запись в наборе данных 1 с каждой отдельной записью в наборе данных 2, то есть 4 * 4 = 16 возможных пар записей.
например
Record 1 vs Record 2 1a 1b 1a 2b 1a 3b 1a 4b 2a 1b 2a 2b 2a 3b 2a 4b 3a 1b 3a 2b 3a 3b 3a 4b 4a 1b 4a 2b 4a 3b 4a 4b
Проблема
Однако это означает, что одни и те же записи по сравнению с самим собой переходят в мой EM-алгоритм:
например
1a 1b 2a 2b 3a 3b 4a 4b
Они не требуются, они всего лишь остаток формирования пространства сравнения.
Поскольку алгоритм ЭМ является «алгоритмом обучения», который оптимизирует переменные весы согласования и несогласия на основе исходной информации, я по существу предоставляю ему больше информации о тренировках.
Это отражено в результатах;
Если я удалю эти записи, прежде чем запускать свой алгоритм, я получаю 3001 запись выше 0,9 (используя мой реальный набор данных).
Однако, если я удалю эти записи после запуска моего алгоритма, я получаю только 2486 записей выше 0,9 (используя мой реальный набор данных).
Т.е. более выборочно, если я включу эти повторяющиеся примеры.
В конце концов:
Для меня нет смысла включать их в EM, но я думаю, что удаление снижает точность моего алгоритма.
Должен ли я удалять эти известные дубликаты, прежде чем запускать EM?
- как найти высоту узла в двоичном дереве рекурсивно
- Как создать XML SignatureValue
- Поиск слов вокруг подстроки
- Эффективное битное использование в python3
- Как фильтровать номера, содержащие уникальные цифры?
Ну, вам обязательно нужно включить несколько примеров матчей в учебный набор.
Yancey упоминает, что в своем опыте EM начинает демонстрировать плохую конвергенцию, когда доля матчей составляет менее 5%. В той же работе он предлагает искусственно обогатить тренировочный набор дополнительными парами.
В конечном итоге мы пытаемся построить функцию, которая оценивает общую вероятность того, что две записи будут соответствовать, с учетом вектора соглашения, из конечного подмножества ( S ) всех возможных комбинаций A x B. Если совпадений нет, то я могу немедленно дать вам эту функцию: p (a, b) = 0 .
Тем не менее, вы говорите, что вы все еще получаете несколько баллов 0,9 даже после удаления некоторых явных дубликатов. Это говорит о том, что ваш набор данных содержит множество естественных совпадений, т.е. записи, которые не имеют одинакового идентификатора, но соответствуют имени / возрасту / области. Это хорошо. Тем не менее, нет причин только тренироваться в этих естественных матчах / дубликатах. Поскольку ваш алгоритм регистрации ссылок, несомненно, будет видеть много точных совпадений при работе на реальных данных, он также должен быть подвержен точным совпадениям во время обучения.
Наконец, я скажу, что использование одного и того же 0,9 порога для каждого может не иметь смысла. Эти вероятности относятся к обучающему набору S , а не к реальному миру. И поскольку использовались два разных набора для обучения, они даже не сравнимы друг с другом! Вместо этого вы должны создать набор парных пакетов с известным числом правильных и ложных совпадений. Затем определите порог, который соответствует отношению ложных срабатываний и ложных негативов, которые вы считаете оптимальными. Это часто делается путем рисования кривой ROC . Только тогда вы узнаете, какой классификатор лучше всего обобщить на реальные данные.
- Автоматизация старого приложения DOS с использованием Python
- Tkinter открывает несколько графических окон при выборе файла с многопроцессорной обработкой, когда должно существовать только одно окно
- Набор данных для экспериментов с дорожными сетями с алгоритмами графа
- Интересное поведение программы для Project Euler p21
- Как рассчитать средний трафик за последнюю минуту
- Действительно ли эта основная функция работает?
- Как создать взвешенный случайный список?
- Реализация Python алгоритма «медианы медианов»
- Найти общий каталог всех файлов linux в python
- Объяснение генератора чисел?
- Проблема кластеризации