MPRL: Новая технология InterSystems для создания решений Identity Resolution
Cергей Кудинов
Дмитрий Засыпкин
•Актуальность задачи •Основные понятия •Методика работы •Упражнения
План
Иван Борисович Рузский был сбит на пешеходном переходе
Пациент был доставлен в отделение скорой медицинской помощи в сознании без документов в шоковом состоянии
Для оказания дальнейшей медицинской помощи пациенту необходимо произвести обезболивание
Медсестра попыталась найти в региональной медицинской системе записи о пациенте «Иван Борисович Русский»
В системе есть записи о том, что у пациента «Иван Борисович Рузский» есть аллергия на ледокоин, приводящая к анафилактическому шоку
Информация об аллергии не была найдена…
Актуальность задачи
Подобные проблемы могут быть в различных отраслях:
• финансовые учреждения
• страховые компании
• ритейл
• медицинские организации
• и т.д.
Актуальность задачи
Число записей Число
ожидаемых
совпадений
%
100,000 1,000 1%
1,000,000 100,000 10%
5,000,000 2,500,000 50%
10,000,000 10,000,000 100%
100,000,000 1,000,000,000 1,000%
• Ошибки при вводе (орфографические, опечатки…)
• Перестановки полей
• Ввод чужих данных
• Неполнота данных
• Несоответствия значений в разных системах (например, при использование разных словарей)
• Дублирование записей (ввод одного и того же объекта несколько раз в одной или нескольких БД)
Проблемы при идентификации записей
Идентификация пациента-типичные проблемы
A B C
Семак Евгения
Дмитриевна
Скрынник Евгений
Петрович
MRN Name
MRN Name
MRN Name
A0815
A1234
A4711
…
Скрынник Евгений Петрович
Е.Д. Семак
Скрыник Е.П.
…
B987 Скрынник Е.П.
… …
C22333 Семак Е.Д.
C22334 Скрынник Е.Д.
C22335 Скрыник Женя
C22336 Скрынник Е.Е.
B911 Симак Е.Д.
… …
• Типы продуктов
– Identity Management – IdM
– Master Data Management – MDM
– Customer Data Integration – CDI
– Master Person/Patient Index – MPI
• Сценарии применения:
– Разовая очистка существующих данных (во время миграции/интеграции)
– Мастер-индекс объектов из разных источников (кросс-таблица)
– Централизованный репозиторий объектов
Применение решений Identity Resolution
MPI продукты
• Agfa IMPAX Master Patient Index
• IBM Initiate Enterprise Master Person Index
• InterComponentWare (ICW) Master Patient Index
• iWay Enterprise Master Patient Index
• openEMPI
• Oracle Healthcare Master Person Index
• Quadramed Enterprise Master Person Index
• InterSystems MPRL
MPRL
MPRL - Multidimensional Probabilistic Records Linkage (Многомерное вероятностное связывание записей)
• Библиотека, на основе которой создаются Identity Resolution приложения
• В настоящий момент доступна в дистрибутиве HealthShare
• Не привязана к HealthShare и может использоваться в Caché и Ensemble
Концепции: Дубль / Линк
• MATCH (ДУБЛЬ) – пара записей об одном и том же объекте (при анализе одной или разных БД)
• NON-MATCH (НЕДУБЛЬ) – пара записей о разных объектах
• LINK (ЛИНК) – пара потенциально совпадающих записей (связанных MPRL)
• POTENTIAL LINK / NON-LINK (ПОТЕНЦИАЛЬНЫЙ ДУБЛЬ / НЕДУБЛЬ) – пара записей, которые MPRL не может классифицировать самостоятельно (требуется решение специалиста)
MRN Name
С22333 Семак Е.Д.
С22334 Скрынник Е.Д.
С22335 Скрынник Женя
С22336 Скрынник Е.Е.
MRN Name
B917 Симак Е.Д.
B987 Скрынник Е.П.
… …
MRN Name
A0815 Скрынник Евгений
Петрович
A1234 Е.Д.Семак
A4717 Скрыник Е.П.
… …
Концепции: Процесс идентификации дублей
Дубли Недубли
Концепции: Транзитивный линк
• A связана с B
• B связана с C
• Это означает, что A связана с C ТРАНЗИТИВНЫЙ ЛИНК
Концепции: MPI-ID
• Записям об одном и том же объекте присваивается единое значение MPI-ID
Источник A Источник B
Скрынник Е.П. Скрыник Евгений
Петрович
10/12/1956
Москва, ул.
Харьковская д1, кв 23
617-555-217 12
10/12/1956
Москва, Харьковская
1-23
619-555-217 12
MPI-ID: 1234
• Исходные данные не меняются
Концепции: MPI
Master Person Index:
– классифицирует пары (дубли/недубли)
– присваивает MPI-ID:
MPI-ID Source MRN Name
1 A A0815 Скрынник Евгений Петрович
2 A A1234 Е.Д. Семак
1 A A4711 Скрыник Е.П.
1 B B987 Скрынник Е.П.
2 B B911 Симак Е.Д.
2 C C22333 Семак Е.Д.
2 C C22334 Скрынник Е.Д.
3 C C22335 Скрынник Женя
3 C C22336 Скрынник Е.Е.
Позволяет получить консолидированное представление данных
Концепции: Детерминированный / Вероятностный поиск
Детерминированный поиск: ЛОГИЧЕСКИЕ И/ИЛИ
– заданы правила, определяющие, что пара записей - это ДУБЛЬ (совпадение ИНН один человек)
– алгоритмы могут предусматривать обход простых ошибок (опечатки, фонетически близкие значения, перестановки)
невысокий КПД, плохо настраивается
Концепции: Детерминированный / Вероятностный поиск Вероятностный поиск: Вычисляется оценка определяющая вероятность дубля
– Используется статистическая теория
– Используются вероятностные алгоритмы для оценки соответствия значений
– Может учитываться специфика конкретных данных
– Позволяет находить дубли со сложными связями
высокий КПД, хорошо настраивается
Вероятностная модель
• Используется модель, впервые описанная в статье Fellegi и Sunter “The Theory for Record Linkage” в1969 году
• Наивный байесовский классификатор (Naїve Bayes) - простой вероятностный классификатор, основанный на применении теоремы Байеса со строгими (наивными) предположениями о независимости
– Пример: если фрукт красный, круглый и размером около 7см, то есть вероятность, что это яблоко. Применяя наивный байесовский классификатор, мы предполагаем, что эти три свойства фрукта не зависят друг от друга, и наличие каждого из них вносит независимый вклад в вероятность того, что фрукт является яблоком.
• http://en.wikipedia.org/wiki/Naive_Bayes_classifier
• http://en.wikipedia.org/wiki/Record_linkage
Концепции: Пороги
Порог Auto-Link
Порог Review
НЕДУБЛЬ
?
?
ДУБЛЬ
?
Порог Validate
Review
Validate
Процесс идентификации дублей
Нормализация Индексация
Классификация
Валидация
Процесс идентификации дублей
Оригинальные данные
Нормализованные данные
Классифицированные пары
school2014.Person school2014 _mprl_Linkage Definition.Normalized
school2014 _mprl_Linkage Definition.Classified
Нормализация Индексирование, Классификация
Валидация
Загрузка
Конфигурация поиска дублей
• LINKAGE DEFINITION - конфигурация поиска дублей
– Интерфейс редактирования (Definition Designer) доступен в Ensemble для “MPRL-enabled” областей
Интерфейс Definition Designer
• Редактирование конфигурации поиска дублей
– Имена классов (класса данных и генерируемых классов)
– Параметры поиска дублей
– Индексы для первичного определения потенциальных дублей
• Настройка
– Настройка порогов
– MLE калибровка
• Запуск процесса идентификации дублей
Нормализация
Нормализация
• LINKAGE TYPE управляет процессом нормализации
– преобразование к нижнему регистру
– удаление лишних символов (пробелы, непечатаемые…)
– может быть очень сложным (например, для адреса)
• Доступны стандартные типы
– %MPRL.LinkageType.*
Индексирование
Число записей Число пар
2 1
3 3
4 6
5 10
10 45
100 4,950
500 124,750
1,000 499,500
10,000 49,995,000
100,000 4,999,950,000
1,000,000 499,999,500,000
необходимо сравнивать только похожие записи!
Индексирование
Индексирование
Индексирование
• LINK-KEY ИНДЕКСЫ используются для быстрого отбора потенциально совпадающих записей в таблицу Classified
• В одном LINKAGE DEFINITION возможно определить несколько индексов
• Каждый индекс может содержать несколько полей
• Компилируется в Normalized класс
Возможные проблемы индексирования:
• Слишком «жесткие» условия индексирования: мало записей в индексе и в Classified классе много ненайденных дублей
• Слишком «мягкие» условия индексирования: слишком много записей проблемы с производительностью
Индексирование
Классификация
• Для основных параметров конфигурации поиска дублей задаются веса
– Agreement (вес совпадения)
– Disagreement (вес несовпадения)
Классификация
• LINK WEIGHT (вес пары) состоит из суммы весов параметров, рассчитываемых с использованием:
– словарей синонимов
– частотных словарей
– фонетических алгоритмов
• Soundex, Metaphone
( Семак и Симак)
– алгоритмов сравнения строк
• jaroSimilarity, winklerSimilarity, hammingSimilarity, hammingDistance, editDistance, editSimilarity, editexSimilarity, bigramSimilarity
( 012-32-343 45 и 012-32-343 35 )
Фонетические алгоритмы индексирования слов по их звучанию • soundex
– Все гласные отбрасываются кроме первой буквы слова
– Генерирует ключи заданной длины (или короче)
USER>w ##class(%MPRL.Utils.Phonic).soundex("robert", 4)
R163
USER>w ##class(%MPRL.Utils.Phonic).soundex("rupert", 4)
R163
• metaphone
– Генерирует ключи переменной длины
– Был разработан в 1990 году в качестве альтернативы алгоритму Soundex, обладающему рядом недостатков
USER>w ##class(school2014.mprl.util.Phonic).metaphoneru("семак")
СИМАК
Алгоритмы сравнения строк • jaroSimilarity – классическая мера близости Джаро (Jaro
similarity measure) рассчитывается по формуле
• Здесь |s1| и |s2| - длины сравниваемых строк, m – количество
совпадающих символов. Совпадающими называются одинаковые символы, удаленные друг от друга менее чем на половину длины меньшей из строк. t – это количество перестановок, деленное на два. Перестановкой называется ситуация, когда i-ый совпадающий символ в первой строке не равен i-му совпадающему символу во второй строке.
• winklerSimilarity – мера близости Джаро-Винклера
– Усовершенствование jaroSimilarity: при наличии у строк общего префикса результат увеличивается по формуле
JWSimilarity = JSimilarity + (0.1 * PrefixLength) * (1 – JSimilarity)
Алгоритмы сравнения строк (продолжение)
• hammingSimilarity
– Количество позиций, в которых соответствующие символы двух строк совпадают, отнесенное к количеству символов в строке большей длины. Результат – число от 0 до 1.
USER>w ##class(%MPRL.Utils.Compare).hammingSimilarity("привет",
"привте")
.6666666666666666297
• hammingDistance
– Количество позиций, в которых соответствующие символы двух строк различны. Если длина строк разная, то расчет ведется по строке меньшей длины, а разница длин прибавляется к полученному значению. Алгоритм реализован в COS.
USER>w ##class(%MPRL.Utils.Compare).hammingDistance("привет",
"привте")
2
Алгоритмы сравнения строк (продолжение)
• editDistance – расстояние Дамерау-Левенштейна
– Разновидность «расстояния редактирования»
– Подсчитывается минимальная стоимость набора операций, необходимых для превращения одной строки в другую
– Рассматривается четыре типа операций: вставка одного символа, удаление одного символа, замена одного символа на другой, транспозиция - перестановка двух соседних символов
– В MPRL реализован алгоритм Вагнера-Фишера. Стоимость одной операции любого типа принимается за единицу. Описание алгоритма на Хабре - http://habrahabr.ru/post/114997/
USER>w ##class(%MPRL.Utils.Compare).editDistance("привет",
"привте")
1
Классификация
Linkage
Definition
Agree:+10
Disagree: -5
Agree:+8
Disagree: -8
Agree:+15
Disagree: -9
Agree:+6
Disagree: -1
Agree:+4
Disagree: -2
Name DOB SNILS Address Phone
Источник A Иванов
Дмитрий
Иванович
10/12/1956 123-456-789
01
555, г. Москва,
ул. Харьковская
д.1, кв. 23
617-551-2171
Источник В Иванов Д.И. - 123-456-789
01
555, Москва,
Харьковская 1-
23
234-355-2356
+8 0 +15 +5.5 -2
Вес пары: 26.5
Классификация: этапы
• Установить начальные веса для параметров
• Установить начальные пороговые значения
• Запустить процесс идентификации дублей
• Запустить калибровку
Review
Autolink
Validate
Недубли Потенциальные недубли
Потенциальные дубли
Дубли
Калибровка
• КАЛИБРОВКА позволяет настроить значения весов атрибутов при установленных порогах в соответствии со статистическими данными
• Доступны два стандартных алгоритма:
– MLE (Maximum Likelihood Estimation)
– EM (Expectancy Maximization)
MLE калибровка
• “Maximum likelihood estimation” (http://en.wikipedia.org/wiki/Maximum_likelihood)
• Выполняется для случайно отобранных пар
– Ограниченное число сравнений или пока колебания весов не станут незначительными
– Обработка 1 млн. пар ~½ часа на ноутбуке
• После завершения калибровки необходимо:
– Заново запустить процесс идентификации дублей
– Провести валидацию результатов
– Скорректировать пороговые значения
• Необходимо несколько итераций
EM калибровка
• “Expectation Maximization” (http://en.wikipedia.org/wiki/Expectation_maximization)
• Достаточно одной итерации калибровки
• Не требуется валидация результатов
– Результаты близки к идеальным
• Значительное время вычислений
– Обычно выполняется на репрезентативной выборке, например, 50 000 записей
– 50 000 записей могут потребовать несколько дней вычислений!
Сравнение MLE и EM калибровок
• MLE – быстрая и эффективная, требует значительной ручной работы
– Зависит от качества ручной валидации
– Может быть выполнено на скромном «железе»
• EM – полностью автоматическая, результат близок к идеальному
– Требует значительных вычислительных мощностей
Запуск процесса идентификации дублей
Валидация: интерфейс WorkList
Валидация: интерфейс WorkList
Категории пар записей:
• Review – потенциальные недубли
• Validate – потенциальные дубли
• Duplicate – дубли и потенциальные дубли
• Overlap – связанные записи с разными MPI-ID
• Overlay – несвязанные записи с одинаковыми MPI-ID
• Open-chaining – связанные записи, разрывающие цепочку транзитивности
Путь к успеху проекта
• Реальные данные для тестирования и отладки
• Локализация и кастомизация
• Валидация предметными специалистами
• Баланс между точностью и практичностью
Упражнения
Вопросы и ответы
MPRL: Новая технология InterSystems для создания решений Identity Management
Сергей Кудинов
Дмитрий Засыпкин
Спасибо!