AAYMA
RU
Войти

AML Graph

Explainable-пайплайн AML: строит направленный граф транзакций, назначает узлам 6 ролей, кластеризует Louvain и ранжирует кандидатов на проверку.

Рабочий MVP
Команда «Arys» 8💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Arys
Кейс HackAlem.ai: Финансы — Freedom
Стадия: Рабочий MVP

Задача кейса: «Граф денег»: восстановить структуру организованной группы по сети транзакций (AML)

Суть

Explainable-пайплайн AML: строит направленный граф транзакций, назначает узлам 6 ролей, кластеризует Louvain и ранжирует кандидатов на проверку. Интерфейс на Streamlit.

Как устроено

pipeline.py читает nodes, edges и transactions (Parquet или CSV) и строит граф в NetworkX. Считаются структурные, денежные и временные признаки, seed coverage, betweenness, PageRank, Louvain-кластеры. Роль выбирается из шести интерпретируемых role-score. Priority score — взвешенная сумма перцентильно нормализованных признаков, веса лежат в config.json, для известных seed множитель 0.55. На выходе nodes_roles, clusters, top_nodes CSV с полем evidence.

Ключевые решения

  • NetworkX
  • Louvain
  • PageRank
  • betweenness
  • percentile normalization
  • rule-based roles

Особенности

Честно разобраны ограничения выгрузки: depth=4 и out_degree=0 не считаются достаточным основанием для роли terminal. Seed намеренно понижены в рейтинге, чтобы топ-лист искал новых участников. Есть план масштабирования до ~1 млн узлов (igraph, GraphFrames).

Стек

Python · NetworkX · pandas · Streamlit


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-5f7fa4b5-arys.

README

README.md

AML Graph — восстановление финансовой структуры сети

Локальный explainable-пайплайн по ТЗ HackAlem AI. Из nodes/edges/transactions строит направленный граф, рассчитывает структурные, денежные и временные признаки, Louvain-кластеры, 6 ролей и priority score.

Роли

consolidator, transit, distributor, terminal, coordinator, peripheral.

Важно: depth=4 && out_degree=0 не считается достаточным основанием для terminal, поскольку это граница 4-hop выгрузки. Все формулировки — гипотезы для AML-проверки, не утверждения о виновности.

Быстрый запуск

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\\Scripts\\activate
pip install -r requirements.txt
python pipeline.py
streamlit run app.py

Pipeline автоматически предпочитает Parquet, если он есть; иначе читает CSV.

Выход

  • outputs/nodes_roles.csv: gid, role, role_score, cluster_id, priority_score, evidence
  • outputs/clusters.csv: cluster_id, n_nodes, n_seed, sum_kzt_internal, top_gids, hypothesis
  • outputs/top_nodes.csv: rank, gid, role, priority_score, why
  • outputs/node_features.csv: диагностические признаки для UI/аудита

Priority score

0.24 seed_coverage + 0.23 betweenness + 0.17 degree + 0.12 volume + 0.09 PageRank + 0.08 cluster_bridge + 0.07 role_score, после percentile-нормализации. Известным seed применяется множитель 0.55: задача TOP-листа — искать следующие узлы для проверки, а не повторять исходные 81.

Explainability

Роль выбирается из шести интерпретируемых role-score. В evidence сохраняются наблюдаемые признаки (fan-in/fan-out, поток, seed coverage, betweenness, межкластерные связи). Весовые коэффициенты priority вынесены в config.json.

Ограничения

Граф содержит только исходящие переводы от seed на 4 колена, поэтому observed IN/OUT не является полным балансом клиента. Seed имеют неполный входящий поток; depth=4 обрезан; операции ниже порога исходной выгрузки невидимы.

Масштабирование до ~1 млн узлов

NetworkX заменить на igraph/Graph-tool/Spark GraphFrames или специализированный graph engine; centrality считать приближённо; seed coverage — батчевым multi-source traversal; признаки хранить в Parquet/аналитической БД. UI должен получать ego-subgraph через API, а не загружать весь граф в браузер.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
6
Авторы
2
Файлы
19
Ветки
1

Авторы коммитов

Aral Absamatov 5Aral Absamatov 1

История коммитов

  • 2026-09-23 17:18Implement AML transaction graph analysis pipelineAral Absamatov
  • 2026-09-23 16:40ЖобаAral Absamatov
  • 2026-09-23 16:04Үшінші файлAral Absamatov
  • 2026-09-23 15:25Екінші файлAral Absamatov
  • 2026-09-23 15:23Бірінші файлAral Absamatov
  • 2026-09-23 14:49Step 1Aral Absamatov
Структура репозитория (19 файлов)
README.md
app.py
config.json
data/edges.csv
data/nodes.csv
data/transactions.csv
outputs/clusters.csv
outputs/node_features.csv
outputs/nodes_roles.csv
outputs/top_nodes.csv
pipeline.py
requirements.txt
src/aml_graph/__init__.py
src/aml_graph/export.py
src/aml_graph/features.py
src/aml_graph/io.py
src/aml_graph/scoring.py
src/aml_graph/validate.py
tests/test_pipeline.py

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.