Очистка больших данных

За годы работы и использования разных информационных систем в банке накопились миллионы записей о клиентах, но часть из них имела опечатки, часть была дубликатами на логическом уровне. Банку требовалось провести эффективную очистку данных и приведение их к требуемому для дальнейшей эксплуатации формату.
Индустрия:
Банки и финансы
Регион:
Западная Европа
Технологии:
Java
Размер:
менее человеко-года

Задача

Данные поступали из разнородных источников, имели разный адресный формат, опечатки и прочие погрешности, связанные с человеческим фактором.

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

Решение

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

В итоге мы реализовали эффективный алгоритм для разделения данных, с большой вероятностью являющихся дубликатами, на кластеры.

Далее данные очищались.

Нам потребовалось 2 итерации для разработки алгоритма, потому что первая версия алгоритма хорошо работала на тестовых данных, но не давала приемлемого результата на реальных. Мы сняли дополнительные косвенные метрики с реальных данных, и вторая версия алгоритма решила задачу клиента.