- BrainTools - https://www.braintools.ru -
Индустрия ставок требует мощных и гибких систем для мониторинга ставок и защиты от мошенничества. Построение антифрод-системы, способной эффективно фильтровать подозрительные активности, стало непростой задачей. В этой статье я поделюсь подробностями технической части разработки антифрод-системы для ставок, построенной на основе данных из различных источников, в том числе sidestake net.
Система для выявления мошенничества в ставках должна обеспечивать несколько критически важных характеристик:
Масштабируемость — возможность обработки больших объёмов данных в реальном времени.
Точность — минимизация ложных срабатываний и правильная классификация ставок.
Реальное время — мгновенная реакция [1] на подозрительные ставки.
Для этого была выбрана микросервисная архитектура с использованием стриминговой обработки данных. Система должна была работать в реальном времени, обрабатывать большие объемы данных и выявлять паттерны ставок.
Apache Kafka — для сбора и передачи данных о ставках в систему.
Apache Flink — для потоковой обработки и анализа данных в реальном времени.
MongoDB — для хранения исторических данных о ставках и пользовательской активности.
Elasticsearch — для быстрого поиска и индексации данных.
Данные поступали с различных платформ, включая sidestake net, а также внутренние данные букмекерской платформы:
Данные о ставках: ставка, сумма, временная метка, тип события.
Метаданные: ID пользователя, информация о ставках на аналогичные события, история ставок.
Для работы с потоковыми данными мы использовали Apache Kafka. Он обеспечивал асинхронный сбор информации с платформы и передачу её в потоковую обработку с использованием Apache Flink. Kafka позволил нам обработать миллионы событий ставок в день с минимальными задержками.
Неструктурированные данные: многие ставки имели пропущенные значения, что требовало предварительной обработки.
Шумовые данные: часто встречались ошибки [2] ввода или аномальные ставки, которые затрудняли построение корректных моделей.
Для предобработки данных использовали библиотеки Python, такие как Pandas для очистки данных и PySpark для распределённой обработки.
Пропущенные значения заполнялись с использованием техник, таких как импутация по медиане для числовых признаков и модальная импутация для категориальных данных.
Первоначально для классификации ставок использовались традиционные методы машинного обучения [3]: Random Forest и XGBoost. Однако результаты показали высокое количество ложных срабатываний (false positives), что потребовало доработки модели.
Обучение на исторических данных: использовались данные ставок за последние 12 месяцев для обучения моделей на метках «нормальная» или «подозрительная» ставка.
Проблемы с ложными срабатываниями: модель слишком часто классифицировала нормальные ставки как мошеннические, особенно если ставку делал новый пользователь или сумма ставки выходила за пределы норм.
Дообучение модели с использованием real-time learning на основе свежих данных, поступающих с платформы. Модели стали корректироваться с каждым новым событием.
Использование гибридного подхода: добавление простых правил (например, по времени ставок или суммам) в качестве постобработки для сокращения ложных срабатываний.
Isolation Forest — для выявления аномальных данных на основе изолированных выбросов.
Autoencoders (нейронные сети) — использовались для построения латентных представлений ставок и выявления сложных паттернов, которые не могли быть захвачены простыми методами.
Для работы с большими данными и вычислениями использовались TensorFlow и Keras для построения нейронных сетей, что позволило улучшить точность классификации.
Для обработки ставок в реальном времени использовался Apache Flink. В отличие от традиционных методов обработки данных, Flink позволяет эффективно обрабатывать потоковые данные с низкой задержкой и интегрировать их с машинным обучением.
Kafka как основа для сбора данных о ставках.
Flink обрабатывает данные, выполняя первичную классификацию с использованием моделей ML.
Результаты передаются в Elasticsearch для быстрого поиска и дальнейшего анализа.
Если ставка классифицируется как подозрительная, она отправляется на ручную проверку.
С использованием Flink CEP (Complex Event Processing) мы могли обрабатывать события на основе временных паттернов, например, если несколько ставок были сделаны на одно и то же событие за короткий промежуток времени.
Хотя машинное обучение могло эффективно выявлять основные паттерны, некоторые типы мошенничества требовали более точных настроек и алгоритмов.
Временные ограничения: ставки, сделанные в интервале меньше 1 секунды на одно событие, считались подозрительными.
Аномальные суммы ставок: ставки, превышающие 3 стандартных отклонения от медианы для данного события, попадали под подозрение.
Исторические паттерны: ставки, сделанные пользователем в определённой последовательности (например, чередование ставок на победу одной команды), классифицировались как потенциально мошеннические.
Ручные правила обеспечивали дополнительный слой фильтрации, который был необходим для снижения ложных срабатываний и повышения точности системы.
Одной из критических проблем, с которой мы столкнулись, стала производительность системы при обработке больших объёмов данных. Потоки ставок в реальном времени поступали с высокой частотой, что требовало значительных вычислительных мощностей.
Использование кэширования с Redis: для хранения промежуточных результатов проверки ставок, что снизило нагрузку на систему и уменьшило время отклика.
Обработка в несколько потоков с использованием Dask для параллельных вычислений и обработки больших данных.
Оптимизация SQL-запросов: использование PostgreSQL с оптимизированными индексами для хранения исторических данных о ставках.
После внедрения модели и дополнительных правил система значительно улучшила точность:
Количество ложных срабатываний снизилось на 85%.
Мошеннические ставки, основанные на закономерностях времени и суммы, были точно определены.
Производительность системы была оптимизирована до 20 000 ставок в секунду при обработке.
Процесс создания антифрод-системы для sidestake потребовал не только внедрения стандартных методов машинного обучения, но и глубокой доработки системы для учёта специфики ставок. Использование потоковых вычислений, комбинированных с машинным обучением, а также детальная настройка правил позволили создать систему, которая эффективно выявляет мошенничество, минимизируя ложные срабатывания. Однако ключевым уроком стало то, что в реальной жизни технологии требуют постоянной настройки и адаптации к новым данным.
Автор: sasha_glukhov
Источник [4]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/17853
URLs in this post:
[1] реакция: http://www.braintools.ru/article/1549
[2] ошибки: http://www.braintools.ru/article/4192
[3] обучения: http://www.braintools.ru/article/5125
[4] Источник: https://habr.com/ru/articles/932826/?utm_campaign=932826&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.