Введение

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

1. Архитектура системы

Система для выявления мошенничества в ставках должна обеспечивать несколько критически важных характеристик:

  • Масштабируемость — возможность обработки больших объёмов данных в реальном времени.

  • Точность — минимизация ложных срабатываний и правильная классификация ставок.

  • Реальное время — мгновенная реакция на подозрительные ставки.

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

Инструменты:

  • Apache Kafka — для сбора и передачи данных о ставках в систему.

  • Apache Flink — для потоковой обработки и анализа данных в реальном времени.

  • MongoDB — для хранения исторических данных о ставках и пользовательской активности.

  • Elasticsearch — для быстрого поиска и индексации данных.

2. Источник данных и подготовка

Данные поступали с различных платформ, включая sidestake net, а также внутренние данные букмекерской платформы:

  • Данные о ставках: ставка, сумма, временная метка, тип события.

  • Метаданные: ID пользователя, информация о ставках на аналогичные события, история ставок.

Для работы с потоковыми данными мы использовали Apache Kafka. Он обеспечивал асинхронный сбор информации с платформы и передачу её в потоковую обработку с использованием Apache Flink. Kafka позволил нам обработать миллионы событий ставок в день с минимальными задержками.

Проблемы с исходными данными:

  • Неструктурированные данные: многие ставки имели пропущенные значения, что требовало предварительной обработки.

  • Шумовые данные: часто встречались ошибки ввода или аномальные ставки, которые затрудняли построение корректных моделей.

Решение:

  • Для предобработки данных использовали библиотеки Python, такие как Pandas для очистки данных и PySpark для распределённой обработки.

  • Пропущенные значения заполнялись с использованием техник, таких как импутация по медиане для числовых признаков и модальная импутация для категориальных данных.

3. Модели машинного обучения

Первоначально для классификации ставок использовались традиционные методы машинного обучения: Random Forest и XGBoost. Однако результаты показали высокое количество ложных срабатываний (false positives), что потребовало доработки модели.

Начальные этапы:

  1. Обучение на исторических данных: использовались данные ставок за последние 12 месяцев для обучения моделей на метках «нормальная» или «подозрительная» ставка.

  2. Проблемы с ложными срабатываниями: модель слишком часто классифицировала нормальные ставки как мошеннические, особенно если ставку делал новый пользователь или сумма ставки выходила за пределы норм.

Решение:

  • Дообучение модели с использованием real-time learning на основе свежих данных, поступающих с платформы. Модели стали корректироваться с каждым новым событием.

  • Использование гибридного подхода: добавление простых правил (например, по времени ставок или суммам) в качестве постобработки для сокращения ложных срабатываний.

Новые методы:

  1. Isolation Forest — для выявления аномальных данных на основе изолированных выбросов.

  2. Autoencoders (нейронные сети) — использовались для построения латентных представлений ставок и выявления сложных паттернов, которые не могли быть захвачены простыми методами.

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

4. Потоковая обработка с использованием Apache Flink

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

Архитектура потока данных:

  1. Kafka как основа для сбора данных о ставках.

  2. Flink обрабатывает данные, выполняя первичную классификацию с использованием моделей ML.

  3. Результаты передаются в Elasticsearch для быстрого поиска и дальнейшего анализа.

  4. Если ставка классифицируется как подозрительная, она отправляется на ручную проверку.

С использованием Flink CEP (Complex Event Processing) мы могли обрабатывать события на основе временных паттернов, например, если несколько ставок были сделаны на одно и то же событие за короткий промежуток времени.

5. Внедрение правил и доработка

Хотя машинное обучение могло эффективно выявлять основные паттерны, некоторые типы мошенничества требовали более точных настроек и алгоритмов.

Дополнительные правила:

  1. Временные ограничения: ставки, сделанные в интервале меньше 1 секунды на одно событие, считались подозрительными.

  2. Аномальные суммы ставок: ставки, превышающие 3 стандартных отклонения от медианы для данного события, попадали под подозрение.

  3. Исторические паттерны: ставки, сделанные пользователем в определённой последовательности (например, чередование ставок на победу одной команды), классифицировались как потенциально мошеннические.

Ручные правила обеспечивали дополнительный слой фильтрации, который был необходим для снижения ложных срабатываний и повышения точности системы.

6. Проблемы с производительностью

Одной из критических проблем, с которой мы столкнулись, стала производительность системы при обработке больших объёмов данных. Потоки ставок в реальном времени поступали с высокой частотой, что требовало значительных вычислительных мощностей.

Решения:

  1. Использование кэширования с Redis: для хранения промежуточных результатов проверки ставок, что снизило нагрузку на систему и уменьшило время отклика.

  2. Обработка в несколько потоков с использованием Dask для параллельных вычислений и обработки больших данных.

  3. Оптимизация SQL-запросов: использование PostgreSQL с оптимизированными индексами для хранения исторических данных о ставках.

7. Результаты

После внедрения модели и дополнительных правил система значительно улучшила точность:

  • Количество ложных срабатываний снизилось на 85%.

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

  • Производительность системы была оптимизирована до 20 000 ставок в секунду при обработке.

Заключение

Процесс создания антифрод-системы для sidestake потребовал не только внедрения стандартных методов машинного обучения, но и глубокой доработки системы для учёта специфики ставок. Использование потоковых вычислений, комбинированных с машинным обучением, а также детальная настройка правил позволили создать систему, которая эффективно выявляет мошенничество, минимизируя ложные срабатывания. Однако ключевым уроком стало то, что в реальной жизни технологии требуют постоянной настройки и адаптации к новым данным.

Комментарии (0)