Применение PageRank в банках для борьбы с мошенничеством

Cloned Boy

Professional
Messages
874
Reaction score
696
Points
93
Образовательный разбор алгоритма и реальных кейсов.

1. Что такое PageRank?​

Алгоритм PageRank, разработанный Google для ранжирования веб-страниц, в банках адаптирован для оценки "важности" и рискованности сущностей (карт, аккаунтов, IP).

Ключевая идея:
Чем больше "входящих связей" (транзакций, ассоциаций) у объекта, тем выше его "вес" в системе.

2. Как банки используют PageRank?​

2.1. Выявление ключевых узлов мошенничества​

Пример графа:
Диаграмма:
diagram.jpg


Code:
graph LR
A[Карта 111] -->|Перевод $500| B[Аккаунт X]
C[Карта 222] -->|Перевод $500| B
D[Карта 333] -->|Перевод $500| B
B -->|Обналичивание| E[Криптобиржа Y]
Анализ:
  • Аккаунт X получает деньги с множества карт → высокий PageRank → помечается как "мул" (money mule).
  • Криптобиржа Y — конечная точка обналичивания → тоже высокий риск.

2.2. Ранжирование подозрительных BIN/карт​

  • Связи: Карта используется в 50+ аккаунтах → её PageRank растет.
  • Действие: Банк блокирует карту и проверяет связанные аккаунты.
Формула PageRank (упрощённо):
Code:
PR(A) = (1-d) + d * (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))
Где:
  • PR(A) — вес объекта А (например, карты).
  • T1...Tn — объекты, связанные с А.
  • C(Ti) — количество исходящих связей у Ti.
  • d — коэффициент затухания (~0.85).

3. Реальные кейсы в банках​

Кейс 1. Обнаружение "бот-сетей"​

  • Данные: 1000 аккаунтов регистрируются с одного IP.
  • Граф: Связь IP → Аккаунты.
  • PageRank: IP получает максимальный вес → блокировка всей сети.

Кейс 2. Поиск организаторов фрода​

  • Данные: Деньги с жертв поступают на 10 карт, затем объединяются на одной.
  • PageRank: Итоговый аккаунт имеет высший вес → приоритет для расследования.

4. Техническая реализация​

4.1. Инструменты​

  • Neo4j (графовая БД):
    cypher:
    Code:
    MATCH (c:Card)-[r:USED_BY]->(a:Account)
    RETURN c.number, pagerank(a) AS risk_score
    ORDER BY risk_score DESC
  • Apache Spark GraphX: Для Big Data.

4.2. Код на Python (NetworkX)​

Python:
import networkx as nx

# Создаём граф транзакций
G = nx.DiGraph()
G.add_edges_from([
("Карта 1", "Аккаунт A"),
("Карта 2", "Аккаунт A"),
("Аккаунт A", "Криптобиржа X")
])

# Считаем PageRank
pagerank = nx.pagerank(G, alpha=0.85)
print(pagerank)

Вывод:
Python:
{'Карта 1': 0.2, 'Карта 2': 0.2, 'Аккаунт A': 0.5, 'Криптобиржа X': 0.1}
→ Аккаунт A самый рискованный.

5. Ограничения и улучшения​

  • Проблема: Ложные срабатывания (например, общий IP в коворкинге).
  • Решение:
    • Комбинация с ML-моделями (анализ поведения).
    • Временные графы: Учёт "возраста" связей (новые связи рискованнее).

6. Где изучить глубже?​

  1. Документация:
  2. Курсы:
    • "Graph Analytics for Financial Services" (Coursera).
  3. Исследования:
    • Статьи IEEE о применении PageRank в фрод-детекшн.

Итог​

PageRank в банках — это:
✅ Ранжирование риска карт, аккаунтов и IP.
✅ Поиск центральных узлов в мошеннических схемах.
✅ Инструмент для расследований (связь "жертва → мул → обналичивание").

Пример запроса для анализа:
"Показать 10 карт с самым высоким PageRank за последний месяц, получивших переводы от 50+ аккаунтов".

Хотите разобрать как сочетать PageRank с машинным обучением? Или примеры из практики? Спрашивайте!
 
Top