Репозиторий проекта:
Ссылка
Диаграммы: Подробная диаграмма структуры генератора
Конфигурации генератора находятся в папке config/
в
yaml
файлах. Основные из них валидируются при запуске
генератора перед началом генерации.
Файл time.yaml
Основные настройки это диапазон времени в котором генерируются транзакции. Верхняя граница диапазона не строгая, т.к. генерация времени частично сделана так, что может быть незначительный выход за её пределы, например если случайно выбранное время “конфликтует” со временем других транзакций, например находится слишком близко при этом не являясь фродом и т.п.
Часть time.yaml
timestamps: # Генерация timestamp-ов для времени транзакций
start: "2025-01-01"
end: "2025-01-20"
format: "%Y-%m-%d" # Строка формата stftime. Формат передаваемых start и end.
freq: "min" # частота генерации timestamp-ов. Минуты, секунды, дни и т.д. 'min', 's', 'D' etc.
Файл legit.yaml
Основными для легальных транзакций являются конфигурации количества
транзакций. Генерация легальных транзакций это самая долгая часть
генерации, так что если не хочется долго ждать, то лучше не выставлять
слишком большие числа. Уже 10000 хватит чтобы продемонстрировать работу
генератора.
Важно. От количества легальных транзакций зависит кол-во фрод транзакций. Если выставить слишком маленькое число конфигурация может не пройти валидацию т.к. при таком числе не будет фрода. В целом, если что, то валидация выдаст ошибку и укажет, что можно изменить. Подробнее о валидации конфигов Объединение всех разделов в цельный генератор
Часть legit.yaml
где настраивается кол-во
транзакций
txn_num: # настройки кол-ва транзакций.
total_txns: 5000 # Сколько примерно транзакций сгенерировать
# Размер чанка. Каждый чанк транз-ций пишется в отдельный файл.
# Это на случай генерации очень большого кол-ва, чтобы не занимать память.
# Потом из чанков собирается целый датафрейм и пишется в целый файл.
chunk_size: 4000
avg_txn_num: 30 # Среднее кол-во на клиента
txn_num_std: 10 # Стандартное откл. кол-ва транзакций на клиента
low_bound: 1 # мин. транз-ций на клиента
up_bound: 120 # макс. транз-ций на клиента
Основными конфигами фрода являются доли общего фрода и отдельных
видов фрода. Они выставляются в fraud.yaml
.
Доля общего фрода это доля от всего количества транзакций. Доли отдельного фрода это доли от общего фрода.
Важно. Абсолютные значения соответствующие долям
фрода это примерные числа, т.к. начиная с генерации легальных
транзакций, число транзакций является случайным, как видно из конфига в
legit.yaml
. В compromised фроде тоже есть доля случайности
в числе транзакций, как и в количестве транзакций дропов.
Настройки долей фрода также подлежат валидации в начале работы генератора.
Часть fraud.yaml
fraud_rates:
total: 0.01 # доля фрода от всех транзакций
# Ниже по типам фрода доли от всего фрода
compr_client: 0.5 # фрод с компрометацией данных/аккаунтов клиентов.
drops:
distributor: 0.30 # дропы которые переводят и снимают полученные деньги
purchaser: 0.20 # дропы которые покупают товары на полученные деньги
Конфиг файлы для фрода
fraud.yaml
- общие конфигиcompr.yaml
- compromised фродdrops.yaml
- дропыconfig/
python run_generator.py
all_txns.parquet