Генератор транзакций. Главная страница

Репозиторий проекта: Ссылка
Диаграммы: Подробная диаграмма структуры генератора

Установка зависимостей и запуск

Список Jupyter ноутбуков

Ниже ноутбуки в которых по порядку продемонстрирован процесс написания генератора транзакций с демонстрацией основных классов и функций генератора. Начинается с создания данных необходимых для генерации транзакций и продолжается описанием и демонстрацией частей генератора. Заканчивается все описанием и демонстрацией конечного скрипта агрегирующего все разделы генерации: легальные транзакции и фрод всех типов.

Также в конце добавил ноутбук о загрузке транзакций и других данных в SQL базу данных.

Развернуть список ноутбуков

Общее описание генератора транзакций

Пояснение: compromised client fraud это фрод когда либо аккаунт либо карта клиента скомпрометированы. Т.е. кто-то другой совершает операции через них. В генерации нет конкретного обозначения аккаунта или карты, есть просто online статус транзакции, т.е. транзакция либо онлайн - как-будто мобильное приложение или веб-приложение на ПК; либо оффлайн - как-будто карта. Далее иногда буду называть этот фрод просто compromised fraud.

Генератор состоит из четырех разделов генерации:

  1. легальные транзакции
  2. compromised client fraud транзакции
  3. транзакции дропов распределителей
  4. транзакции дропов покупателей

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

Параметры генерации задаются в yaml файлах в папке config/

Принцип генерации - каскадный. Все разделы генерируются по очереди: легальные, compromised fraud, дропы распределители, дропы покупатели.

Между разделами есть зависимости. Генерация compromised fraud зависит от легальных транзакций т.к. клиенты у кого будет compromised fraud это случайно выбранная часть клиентов для кого мы сгенерировали легальные транзакции. Генерация фрода под некоторые типы правил требует наличия легальных транзакций у клиента - например, резкая смена геопозиции между транзакциями.

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

О числе транзакций и клиентов говорится “примерно” т.к. в генерации легальных транзакций количество транзакций для каждого клиента это случайное число из нормального обрезанного распределения. Желаемое количество транзакций выставляется в конфиг файле, но из-за рандомизации все же колеблется. В compromised фроде тоже есть элемент случайности числа транзакций для одного из правил.

В целом, касательно количества транзакций, все выглядит так:

  1. генерируется случайное число легальных транзакций
  2. перед генерацией compromised фрода в зависимости от общего fraud rate и входящего в него compromised rate, на основании фактического числа легальных транзакций рассчитывается примерное количество транзакций compromised фрода соответствующее fraud rate и compromised rate. И от этого числа считается количество клиентов для семплирования под compromised фрод
  3. генерируется случайное число compromised фрод транзакций в районе рассчитанного количества
  4. перед генерацией транзакций дропов распределителей снова обращаемся к фактическому числу легальных транзакций и fraud rate с входящей в нее долей фрода дропов распределителей. Снова считаем сколько примерно нужно клиентов для соответствия выставленной доле.
  5. генерируется также случайное число транзакций дропов распределителей в районе рассчитанного количества
  6. затем такой же расчет для дропов покупателей и генерация их транзакций

Диаграмма соотношений легальных и фрод транзакций

Диаграмма соотношений легальных и фрод транзакций

В итоге все разделы генерации объединяются в единый генератор в скрипте run_generator.py

Таблица транзакций
Название колонки Описание
client_id ID клиента
txn_time Время транзакции
unix_time UNIX-время
amount Сумма
type Тип транзакции
channel Канал
category Категория
online Онлайн (да/нет)
merchant_id ID торговой точки
trans_city Город транзакции
trans_lat Широта
trans_lon Долгота
trans_ip IP-адрес
device_id ID устройства
account Счёт
is_fraud Фрод (да/нет)
is_suspicious Подозрение (да/нет)
status Статус транзакции
rule Антифрод правило

Файлы создаваемых транзакций пишутся в две директории:

  1. индивидуальную директорию создаваемую под текущий запуск генератора - для хранения истории файлов каждого запуска
  2. постоянную директорию для файлов созданных при последнем запуске - файлы перезаписываются каждый запуск

Разделы генерации

Список разделов. По ссылкам развернутое описание каждого раздела. Либо просто нажмите на кнопку "Далее" ниже.

  1. Генерация легальных транзакций
  2. Генерация compromised fraud транзакций
  3. Дропы
  4. Объединение всех разделов в цельный генератор