Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ML и автоматизация классификации 100+ банковск...

ML и автоматизация классификации 100+ банковских операций: от старта до прода за 3 месяца

Наш опыт разработки и внедрения системы автоматизации проведения банковских выписок с применением ML в короткие сроки. Как генерили фичи, препроцессили данные, боролись с кривой разметкой, переносили на dotnet и выстраивали мониторинг.

Avatar for Vladimir Tsimbol

Vladimir Tsimbol

June 07, 2023

Other Decks in Programming

Transcript

  1. Data Scientist Более 4 лет автоматизирую разное с помощью ML

    t.me/vtsimbol Byndyusoft t.me/byndyusoft twitter.com/byndyusoft github.com/byndyusoft Цимбол Владимир 2
  2. Как люди заполняют документы Пер-е ДС по ПП №123 Перечисление

    денежных средств по платежному поручению №123 5
  3. Как люди заполняют документы Сокращения пер.д/c c тр.сч. = перечисление

    денежных средств с транзакционного счета Опечатки и отсутствие пробелов нолог = налог, чет = счет 8
  4. Как люди заполняют документы Сокращения пер.д/c c тр.сч. = перечисление

    денежных средств с транзакционного счета Опечатки и отсутствие пробелов нолог = налог, чет = счет Транслит и опечатки в транслите schet и shet = счет 9
  5. Как люди заполняют документы Сокращения пер.д/c c тр.сч. = перечисление

    денежных средств с транзакционного счета Опечатки и отсутствие пробелов нолог = налог, чет = счет Транслит и опечатки в транслите schet и shet = счет Текст на русском и английском языках 10
  6. Наша задача Автоматизировать часть процесса проведения банковских выписок в системе

    заказчика Банковская выписка – документ бухгалтерского учета, отражающий состояние счета и движение средств на нем 12
  7. Описание процесса 14 Операция 1, тип ? Операция 2, тип

    ? Операция 3, тип ? Операция 4, тип ? Операция 5, тип ? Банковские выписки поступают в систему Выписки состоят из операций, для дальнейшей обработки нужно определить тип каждой
  8. Описание процесса 15 Операция 1, тип ? Операция 2, тип

    ? Операция 3, тип ? Операция 4, тип ? Операция 5, тип ? Банковские выписки поступают в систему Выписки состоят из операций, для дальнейшей обработки нужно определить тип каждой Сотрудник операционного отдела проверяет документ, определяет тип каждой операции
  9. Описание процесса 16 Банковские выписки поступают в систему Выписки состоят

    из операций, для дальнейшей обработки нужно определить тип каждой Сотрудник операционного отдела проверяет документ, определяет тип каждой операции Операции отправляются в другие системы Операция 1, тип ? Операция 2, тип ? Операция 3, тип ? Операция 4, тип ? Операция 5, тип ? Операция 1, тип N Операция 2, тип M Операция 3, тип X Операция 4, тип Y Операция 5, тип Z
  10. Описание процесса: цели — Прозрачность — Уменьшение ручного труда —

    Снижение количества ошибок 17 Операция 1, тип ? Операция 2, тип ? Операция 3, тип ? Операция 4, тип ? Операция 5, тип ? Операция 1, тип N Операция 2, тип M Операция 3, тип X Операция 4, тип Y Операция 5, тип Z
  11. Описание процесса с ML 18 Операция 1, тип ? Операция

    2, тип ? Операция 3, тип ? Операция 4, тип ? Операция 5, тип ? Операция 1, тип N Операция 2, тип M Операция 3, тип X Операция 4, тип Y Операция 5, тип Z ML
  12. Проблемы с данными 22 Операция Текстовые данные Выплата купонного дохода…

    Плата за найм… Категориальные данные Род сделки, тип счета, валюта…
  13. Проблемы с данными 23 Операция Всего в системе 280 различных

    типов операций И много правил определения типа для каждой Текстовые данные Выплата купонного дохода… Плата за найм… Категориальные данные Род сделки, тип счета, валюта…
  14. Проблемы с данными 24 Операция Всего в системе 280 различных

    типов операций И много правил определения типа для каждой Перевод по договору №12345 ➝операция X Перевод по договору №12345-АБВ ➝операция Y Текстовые данные Выплата купонного дохода… Плата за найм… Категориальные данные Род сделки, тип счета, валюта…
  15. Проблемы с данными Операция Всего в системе 280 различных типов

    операций И много правил определения типа для каждой Перевод по договору №12345 ➝операция X Перевод по договору №12345-АБВ ➝операция Y Перевод по договору от ООО “Рога и Копыта” ➝операция Z 25 Текстовые данные Выплата купонного дохода… Плата за найм… Категориальные данные Род сделки, тип счета, валюта…
  16. Проблемы с данными 27 Какой тип операции мне проставить? ?!

    Операционист нашей системы «Контроллер» в следующей системе
  17. Проблемы с данными 28 Какой тип операции мне проставить? Ставь

    X и отправляй мне! ?! Операционист нашей системы «Контроллер» в следующей системе
  18. Проблемы с данными 29 Операция по всем входным данным должна

    быть Y, но в БД она сохраняется как X Какой тип операции мне проставить? Ставь X и отправляй мне! ?! Операционист нашей системы «Контроллер» в следующей системе
  19. Проблемы с данными Операция по всем входным данным должна быть

    Y, но в БД она сохраняется как X В БД не сохраняется информация о том, почему Y стал X 30 Операционист нашей системы «Контроллер» в следующей системе ?! Какой тип операции мне проставить? Ставь X и отправляй мне!
  20. А что с текстом? Сокращения и аббревиатуры – словари замен

    ТС – торговая система или транзакционный счет? 35
  21. А что с текстом? Сокращения и аббревиатуры – словари замен

    ТС – торговая система или транзакционный счет? Опечатки – расстояние Левенштейна и корпусы доменной лексики куХонный доход → куПонный доход 36
  22. Борьба с транслитом Применили rule-based подход – используем правила прямой

    транслитерации из open-source библиотеки iuliia + свой алгоритм обратной транслитерации 37 Статья о транслитерации на хабре
  23. Борьба с транслитом Применили rule-based подход – используем правила прямой

    транслитерации из open-source библиотеки iuliia + свой алгоритм обратной транслитерации Проблемы транслита: — Минимум 14 действующих “стандартов” 38
  24. Борьба с транслитом Применили rule-based подход – используем правила прямой

    транслитерации из open-source библиотеки iuliia + свой алгоритм обратной транслитерации Проблемы транслита: — Минимум 14 действующих “стандартов” — Не все их корректно реализуют 39
  25. Борьба с транслитом Применили rule-based подход – используем правила прямой

    транслитерации из open-source библиотеки iuliia + свой алгоритм обратной транслитерации Проблемы транслита: — Минимум 14 действующих “стандартов” — Не все их корректно реализуют — Некоторые придумывают свои стандарты 40
  26. Final: 2 BERT + FCNN Micro F1 = 0.9746 Macro

    F1 = 0.9144 Как обучали Baseline: CatBoost Micro F1 = 0.8 Macro F1 = 0.6 43
  27. Как обучали 44 Final: 2 BERT + FCNN Micro F1

    = 0.9746 Macro F1 = 0.9144 Baseline: CatBoost Micro F1 = 0.8 Macro F1 = 0.6 Micro – отражает точность по всем операциям
  28. Как обучали 45 Micro – отражает точность по всем операциям

    Macro – усредненное качество по каждому типу операции Final: 2 BERT + FCNN Micro F1 = 0.9746 Macro F1 = 0.9144 Baseline: CatBoost Micro F1 = 0.8 Macro F1 = 0.6
  29. Финальный пайплайн 47 Препроцессинг текста BERT для русского текста BERT

    для английского текста Русский текст Возврат платежа… Английский текст Transfer of funds… regex извлечение фичей Эмбеддинг [0.96, … 0.64] Эмбеддинг [0.83, … 0.21] Категориальные фичи из текста НДС, НДФЛ, keywords… Текст назначения платежа Классификатор операций Категориальные фичи Род сделки, валюта и т.д. Операция Подготовка фичей Эмбеддинги [0.83, … 0.21] Эмбеддинги [0.83, … 0.21]
  30. — Без GPU — Все документы должны обрабатываться за час

    — За час ML необходимо обрабатывать до 60 000 операций Требования и нагрузка 51
  31. Перенос ML на dotnet 53 — Переписываем все на C#

    – OnnxRuntime — Инференс моделей ускорился в 1.3-1.5 раза
  32. Перенос ML на dotnet 54 — Переписываем все на C#

    – OnnxRuntime — Инференс моделей ускорился в 1.3-1.5 раза — Закэшировали наиболее частые назначения платежа – сократили количество запусков BERTов
  33. Перенос ML на dotnet 55 — Переписываем все на C#

    – OnnxRuntime — Инференс моделей ускорился в 1.3-1.5 раза — Закэшировали наиболее частые назначения платежа – сократили количество запусков BERTов — Ускорение в 3.5 раза
  34. Перенос ML на dotnet — Переписываем все на C# –

    OnnxRuntime — Инференс моделей ускорился в 1.3-1.5 раза — Закэшировали наиболее частые назначения платежа – сократили количество запусков BERTов — Ускорение в 3.5 раза — Добавили автоскейлинг 56
  35. Мониторинг — Разделили метрики на бизнесовые и ML метрики —

    Спросили у бизнеса, что хотят видеть они 60
  36. Мониторинг — Разделили метрики на бизнесовые и ML метрики —

    Спросили у бизнеса, что хотят видеть они — Понимаем, что должна видеть ML команда 61
  37. Мониторинг — Разделили метрики на бизнесовые и ML метрики —

    Спросили у бизнеса, что хотят видеть они — Понимаем, что должна видеть ML команда — Настроили алерты 62
  38. Чего удалось достичь — Проект в стадии опытной эксплуатации —

    На каждые 10 000 операций имеем 40-50 ошибок, которые необходимо найти и заменить, 200-250 операций не заполняем 65
  39. Чего удалось достичь — Проект в стадии опытной эксплуатации —

    На каждые 10 000 операций имеем 40-50 ошибок, которые необходимо найти и заменить, 200-250 операций не заполняем — Продолжаем работу над качеством 66
  40. Чего удалось достичь — Проект в стадии опытной эксплуатации —

    На каждые 10 000 операций имеем 40-50 ошибок, которые необходимо найти и заменить, 200-250 операций не заполняем — Продолжаем работу над качеством — Добились прозрачности процесса, покрыли метриками 67
  41. Команда 3 be, 1 qa, 1 dev и 1 ds

    Принести бизнес-ценность за три календарных месяца ML и сроки 68