Skip to content

iaroslav-dzh/fraud_txns_simulator

Repository files navigation

Симулятор фрод транзакций

Указатель

О чем этот проект

Реализовал на python генерацию синтетических банковских транзакций: легальных и мошеннических с учётом поведения клиентов и реализма сценариев. Моделирование транзакций. Полученные датасеты можно использовать для тестирования работы правил антифрод системы.

Стек: python (pandas, numpy, geopandas,matplotlib, ООП), Poetry, Power BI (модель данных, DAX)


  1. Очистил и преобразовал данные под генерацию при помощи pandas, numpy, geopandas.

  2. Написал модульный генератор транзакций при помощи функций и ООП. Разные разделы логики генератора это разные файлы, функции и классы, но точка запуская - единая. Вот схема: ссылка

  3. Конфигурации генератора транзакций поместил в YAML файлы, чтобы их можно было менять без исправления кода.

  4. Процесс документировал в jupyter ноутбуках - там обработка начальных данных и демонстрация главных функций и классов генератора. Также есть сайт с описанием проекта, где на каждый раздел есть страница с описанием.

  5. Загрузил данные в Power BI, создал модель данных и на ее основании дашборд с информацией о транзакциях. Создал визуализации, применил условное форматирование, создал DAX меры. Видео демонстрация на 2,5 минуты: Ссылка

  6. Зависимости проекта прописал в toml файле.

Итоги проекта:


  • Полученные датасеты можно использовать для тестирования работы правил антифрод системы.
  • Улучшил навыки обработки данных в pandas, numpy, geopandas.
  • Приобрел опыт написания систематизированного и связного кода. Компоненты отдельные, могут тестироваться по отдельности, но связаны в систему. Считаю что такой опыт очень полезен для работы с ETL, обработкой данных.
  • Научился работать с конфигурациями в файлах (YAML).
  • Приобрел опыт ведения и выполнения объемной задачи от начала до конца: 14 jupyter ноутбуков с документированием процесса, более 2-х месяцев работы, примерно 4000 строк кода в модуле генератора.

Более развернутое описание проекта по ссылке - это сайт проекта. Там более подробное описание генератора транзакций по разделам.

Мошенничества (фрода) два типа:


  1. compromised client fraud - банковский аккаунт или карта клиента скомпрометированы.
  2. дроп фрод - клиент является дропом, дропов два типа: которые просто посредники в переправке потока денег (распределители) и которые занимаются отмыванием через покупку товаров на присланные им деньги (покупатели)

Фрод генерируется в соответствии с антифрод правилами. Т.е. транзакции генерируются с такими характеристиками, чтобы попадать под конкретные антифрод правила. В случае с compromised client fraud правило выбирается случайно и под него генерируется транзакция/и.


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


Все зависимости, включая модули проекта прописаны в pyproject.toml файле. Предлагаю установить их при помощи менеджера зависимостей poetry.

Клонирование репозитория

git clone https://github.com/iaroslav-dzh/fraud_txns_simulator.git

Установка poetry


Windows (Powershell)

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

При установке для Windows через powershell добавить путь ниже в path для пользователя

C:\Users\<ИМЯ_ПОЛЬЗОВАТЕЛЯ>\AppData\Roaming\Python\Scripts

После установки и добавления пути в path перезапустить терминал, затем проверить:

poetry --version

Linux, macOS, Windows (WSL)

curl -sSL https://install.python-poetry.org | python3 -

При установке для Линукс или macOS добавить путь ниже в PATH

$HOME/.local/bin

После установки и добавления пути в PATH перезапустить терминал, затем проверить:

poetry --version



Создание виртуальной среды

  • Создание среды, установка всех зависимостей, включая собственные модули согласно файлу pyproject.toml

Перейти в директорию проекта(клонированного репозитория) и исполнить команду

poetry install

Будет создана виртуальная среда и установлены все зависимости


Активация виртуальной среды

Чтобы войти в виртуальную среду где установлены все зависимости.
Документация Poetry: Activating the environment

Windows (powershell)

Находясь в директории проекта в терминале исполнить команду

Invoke-Expression (poetry env activate)

ЛИБО

Исполнить

poetry env activate

И затем скопировать вывод команды. Если это путь к скрипту, например:

"C:\Users\<ИМЯ_ПОЛЬЗОВАТЕЛЯ>\AppData\Local\pypoetry\Cache\virtualenvs\<НАЗВАНИЕ_СРЕДЫ>\Scripts\activate.ps1"

Вставить вывод в терминал и нажать Enter

C:\Users\<ИМЯ_ПОЛЬЗОВАТЕЛЯ>\AppData\Local\pypoetry\Cache\virtualenvs\<НАЗВАНИЕ_СРЕДЫ>\Scripts\activate.ps1

Линукс

Находясь в директории проекта в терминале исполнить команду

eval $(poetry env activate)

ЛИБО

Исполнить

poetry env activate

И затем скопировать вывод команды. Это может быть команда и путь, например:

source home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/.cache/pypoetry/virtualenvs/<ИМЯ_СРЕДЫ>/activate

Вставить вывод в терминал и нажать Enter

Возможные ошибки при настройке окружения


Ошибка returned non-zero exit status 9009

Poetry не может найти python.

Если в консоли будет что-то типа:

Command '['C:\\Users\\<USER>\\AppData\\Local\\Microsoft\\WindowsApps\\python.EXE', '-EsSc', 'import sys; print(sys.executable)']' returned non-zero exit status 9009.

Это исправляется командой:

poetry config virtualenvs.use-poetry-python true

Теперь poetry использует python который использовался при ее установке.

UnauthorizedAccess Error в powershell

Исполнить команду ниже. Для разрешения исполнения скриптов в текущей сессии powershell

Set-ExecutionPolicy RemoteSigned -Scope Process

Справка:

Другие инструкции


Подключение poetry env как kernel в Jupyter

  1. Зайти в виртуальную среду
  2. Установить ipykernel poetry add ipykernel
  3. Зарегистрировать poetry среду как ядро в Jupyter
python -m ipykernel install --user --name=poetry-env --display-name "Python (poetry-env)"
  1. Запустить Jupyter Notebook (можно из Anaconda или терминала), и в списке ядер (kernels) выберите Python (poetry-env).


Запуск генератора

Чтобы запустить генератор транзакций:

  1. Войти в виртуальную среду проекта
  2. Исполнить команду
python run_generator.py

У генератора транзакций могут быть заданы конфигурации через yaml файлы в папке config/. Подробнее об этом в Основные конфигурации и запуск генератора