Databricks Arc vs Splink: автоматическое связывание данных в промышленных масштабах

связывание данных Arc Splink , обработка больших данных, глубокий анализ данных, качество больших данных, Школа Больших Данных Учебный Центр Коммерсант

Зачем Databricks выпустил Arc, чем это отличается от Splink, и как эти инструменты позволяют решать проблему связывания данных с помощью алгоритмов машинного обучения.

Как работает связывание данных

Продолжая разговор про качество данных и разрешение сущностей (entity resolution) , сегодня подробно рассмотрим этап связывания записей с использованием логики на основе правил или нечеткого сопоставления. Это необходимо, чтобы определить, какие дедублицированные записи относятся к одному и тому же объекту, но содержат разные данные, например, точки касания с клиентом в разных системах. Затем этим записи подлежат процедуре канонизации, которая представляет собой объединение и консолидация данных из ранее связанных записей для хранения всех связанных точек данных внутри этой сущности.

Дедупликация и связывание — это две стороны одной медали, поскольку при дедупликации будут найдены записи в наборе данных, которые представляют один и тот же объект, а при связывании находятся записи в двух наборах данных, которые представляют один и тот же объект. Дедупликация является ключевым требованием для реализации стратегии управления основными данными, например, чтобы обеспечить единое представление о клиентах путем объединения различных источников данных. Связывание также является ключевой частью качества данных, поскольку объединяет различные фрагменты информации для создания целостного представления объекта. Несмотря на то, что необходимость связывания данных признано на международном уровне, в реализации это довольно сложная задача, решаемая отдельной страной, доменом или предприятием по-своему.

Есть множество подходов к связыванию данных: от проектов с открытым исходным кодом, таких как Zingg или Splink, о которых мы писали вчера, до собственных корпоративных решений. Сегодня для этого все чаще используется машинное обучение, алгоритмы которого позволяют выявлять закономерности в огромных объемах данных. При контролируемом обучении ML-модели учатся на явных примерах связи одной записи с другой. Главной проблемой контролируемого обучения является недостаток подходящих примеров, поскольку надежно создать их может только эксперт предметной области, что долго и дорого. Алгоритмы машинного обучения без учителя используют данные как есть, обучаясь связывать записи без каких-либо явных примеров. Это намного быстрее и дешевле, но затрудняет оценку результата. Таким образом, снова приходится искать компромисс между скоростью достижения результата и его точностью.

Arc vs Splink: связывание данных с помощью ML-алгоритмов

Будучи популярным проектом с открытым исходным кодом, Splink использует подход машинного обучения без учителя. Он разработан и поддерживается Министерством юстиции Великобритании и используется во всем мире, в частности, его ежемесячно загружают с PyPI более 230 000 раз. Splink позволяет связать миллион записей примерно за одну минуту с поддержкой корректировок частоты терминов и определяемой пользователем логики нечеткого сопоставления. Связывать данные можно, запуская Python-задания с использованием встраиваемой колоночной базы данных DuckDB, которая похожа на ClickHouse и PostgreSQL, а также на серверах AWS Athena или Spark для более 100 миллионов записей. Этот Python-пакет предоставляет широкий спектр интерактивных выходных данных, которые помогают пользователям понять свою ML-модель и диагностировать проблемы связывания.

Splink имеет мощный и гибкий API, который позволяет детально контролировать обучение ML-модели связыванию данных. Однако, за эту гибкость приходится платить сложностью порога входа в технологию, поскольку требуется определенная степень знания связывания данных и используемых методов. Поэтому в апреле 2023 года Databricks выпустил проект Arc (Automatic Record Connector), основанный на Splink, но более простой в эксплуатации. Arc не требует экспертных знаний, трудоемких и длительных усилий для создания связанного набора данных. Он упрощает связывание данных и делает его доступным для широкой базы пользователей, используя инструменты Databricks, Spark, MLFlow и Hyperopt.

Databricks Arc предоставляет минимальный API, требующий от пользователя задать всего лишь несколько аргументов. Выбор правил блокировки, сравнения и определения детерминированных правил связывания данных выполняются автоматически с помощью класса AutoLinker. Например, следующий код активирует расширения SQL в Arc, чтобы использовать функции SQL в контексте Apache Spark.

from arc.autolinker import AutoLinker
import arc
arc.sql.enable_arc()
autolinker = AutoLinker()
autolinker.auto_link(
  data=data, 
  attribute_columns=attribute_columns, 
  unique_id="uid", 
  comparison_size_limit=100000, 
  max_evals=100
)

В этом коде объект autolinker используется для автоматического связывания данных. А его метод auto_link() нужен для поиска связей в данных и использует следующие параметры:

  • data – датафрейм Spark, в котором нужно найти связи;
  • attribute_columns — список столбцов, содержащих атрибуты для определения, какие записи могут быть связаны;
  • unique_id – название столбца, содержащего уникальные идентификаторы для каждой записи в data, чтобы однозначно идентифицировать их;
  • comparison_size_limit – максимальное количество пар для сравнения, чтобы ограничить время и ресурсы на работу с большим количеством сравнений;
  • max_evals – количество испытаний для выполнения в процессе оптимизации, влияет на качество и точность связывания данных, а также на время выполнения связывания.

Под капотом Arc использует Hyperopt – Python-библиотеку подбора гиперпараметров ML-модели для выполнения байесовского поиска оптимальных настроек алгоритма. Оптимальность определяется как минимизация энтропии данных после кластеризации и стандартизации значений записей кластера. Благодаря связыванию разных представлений одного и того же объекта стандартизация значений данных внутри кластера уменьшит общее количество значений данных в датасете и ускорит вычисления. Для этого Arc оптимизирует пользовательскую метрику получения информации, которую он рассчитывает на основе кластеров дубликатов, прогнозируемых Splink. В основе этого расчета лежит уменьшение энтропии при разбиении данных на кластеры. Чем выше снижение энтропии в прогнозируемых кластерах прогнозируемых дубликатов, тем лучше работает ML-модель.

Будучи основанным на Splink, Arc сокращает долю ручного труда, автоматизируя многие вычисления, например, установку априорной вероятности, генерацию инструкций правил обучения,  а также оптимизацию многоуровневого пространства параметров для функций и пороговых значений. Ключевые отличия Arc от Splink показаны в таблице.

Критерий сравнения Splink Arc
Вероятность предыдущего совпадения Пользователь должен предоставить SQL-подобные инструкции для детерминированных правил и оценку отзыва для Splink, чтобы оценить априорную вероятность совпадения двух записей Автоматически устанавливает априорную вероятность на 1/N
Правила обучения Пользователь может предоставить SQL-подобные операторы для серии правил, которые обучают m значений вероятности для каждого столбца Автоматически генерирует инструкции правил обучения, чтобы обучался каждый столбец
Сравнения Пользователь может предоставить функции расстояния и пороговые значения для каждого столбца для сравнения Автоматически оптимизирует многоуровневое пространство параметров для функций и пороговых значений
Правила блокировки Пользователь может предоставить SQL-подобные инструкции для определения возможного пространства сравнения и уменьшения количества сравниваемых пар Пользователь должен указать максимальное количество пар, которые надо сравнить, Arc определяет все возможные правила блокировки в пределах этой границы и оптимизирует лучшее из них

Главной проблемой связывания данных на практике является точность. Оценить модель связывания поможет набор справочных данных, в котором каждая ссылка на запись известна заранее. Это позволяет сравнить предсказанные ссылки из модели с известными ссылками для расчета следующих метрик оценки эффективности машинного обучения:

  • точность (precision) — способность отличать конкретный класс от других классов, доля прогнозов, которая оказалась верна;
  • полнота (recall) – способность алгоритма обнаруживать данный класс вообще, т.е. какую долю от общего числа ссылок нашла модель;
  • оценка F1 (F1-score) – смешанная метрика точности и полноты, которая придает больший вес более низким значениям. Это означает, что для достижения высокого балла F1 модель должна обладать хорошей точностью и полнотой, а не превосходить в одном и быть средним в другом.

Однако, эти метрики применимы только при наличии доступа к набору меток, показывающих истинные ссылки. В большинстве случаев таких меток не существует, а их создание является трудоемкой задачей. Для оценки эффективности Arc Autolinker исследователи Databricks использовали проект FEBRL (Freely Extensible Biomedical Record Linkage) для создания трех синтетических наборов данных, которые различаются по количеству строк и количеству дубликатов).  FEBRL выполняет стандартизацию данных (сегментацию и очистку) и вероятностное связывание записей (нечеткое сопоставление) одного или нескольких файлов или источников данных, которые не имеют общего уникального ключа записи или идентификатора.

Эксперименты показали, что для набора данных неизвестного качества Arc может создать хорошую модель связей с нулевыми человеческими усилиями. Это позволяет использовать Arc в исследовательских и коммерческих проектах по связыванию данных, включая межведомственный обмен данными и обмен конфиденциальными данными. Также инструмент можно применять для объединения данных, которые не имеют общих значений, объединяя строки по сходству записей из разных источников. Как это пригодится в задачах маркетинговых коммуникаций, мы рассказывали в прошлой статье.

Узнайте больше про решение бизнес-задач с технологиями глубокого анализа больших данных и инструментов их преобразования на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://www.databricks.com/blog/improving-public-sector-decision-making-simple-automated-record-linking
  2. https://moj-analytical-services.github.io/splink/index.html
  3. https://github.com/databricks-industry-solutions/auto-data-linkage

Добавить комментарий

Поиск по сайту