Решение графовых классификационных задач как инструмент обнаружения мошеннических банковских транзакций

Яковенко Е.С., Сушков В.М., Леонов П.Ю.

Статья в журнале

Информатизация в цифровой экономике (РИНЦ, ВАК)
опубликовать статью | оформить подписку

Том 5, Номер 2 (Апрель-июнь 2024)

Цитировать:
Яковенко Е.С., Сушков В.М., Леонов П.Ю. Решение графовых классификационных задач как инструмент обнаружения мошеннических банковских транзакций // Информатизация в цифровой экономике. – 2024. – Том 5. – № 2. – doi: 10.18334/ide.5.2.121050.



Введение

Банки и иные финансовые институты в настоящее время сталкиваются со стремительно растущим объёмом клиентов, открытых продуктов и совершаемых банковских транзакций. Большой объём общего числа транзакций, а также инновационные методы сокрытия финансовых преступлений, включая мошенничество и отмывание преступных доходв, делает выявление таких преступлений очень трудоёмким даже при использовании автоматизированных средств анализа и продвинутого программного обеспечения.

Опыт промышленных проектов последних лет показал, что графовая аналитика – действенное средство в выявлении подозрительных явлений в графоподобных системах [1] [2] (которыми в том числе являются банковские системы), а графовые алгоритмы машинного обучения и нейронные сети ничем не уступают традиционным методам, используемым при работе с «плоскими» данными, получаемыми из реляционных баз данных [3]. Наибольшая эффективность при работе с данными, представленными в виде графа, достигается при сочетании результатов, полученных после применения экспертных правил, и аналитической работы, проводимой графовыми нейронными сетями. На данный момент организации недостаточно осведомлены в возможностях и перспективах графовой аналитики. Вследствие этого целью исследования стала практическая реализация данного подхода. Был сгенерирован синтетический набор банковских транзакций, разработаны экспертные правила для применения, а также создана графовая модель, способная решать классификационные задачи в подобных системах.

Создание тестового набора данных

В опытно-промышленной эксплуатации аналитических приложений структура анализируемых данных диктуется бизнес-логикой протекаемых процессов и, как следствие, данных, полученных по результатам потоковой обработки. Такие данные зачастую содержат конфиденциальную информацию о пользователях, клиентах и деталях совершаемых ими действий, поэтому они никогда не публикуются в открытом доступе. Отсутствие наборов реальных данных вынуждает исследователей, не имеющих доступ к промышленной среде какой-либо компании, создавать «синтетические» наборы (synthetic datasets) для решения аналитических задач и использования в алгоритмах машинного обучения. При разработке синтетических данных важно, чтобы их содержание было близко к реальному миру. Например, если моделируется набор банковских операций, важно, чтобы такие данные наиболее точно отражали поведение реальных клиентов банка.

Существует множество алгоритмов генерации синтетических наборов банковских транзакций; примерами являются алгоритмы PaySim [4], AMLSim, SynthAML [5]. В то же время, анализ таких алгоритмов выявил ряд неустранимых проблем, которые делают их использование невозможным, включая:

1. Отсутствие или недостаточность параметризации для создания необходимых нам типов и свойств транзакций;

2. Отсутствие адаптера для выгрузки данных в графовые базы данных в языке, на котором был написан алгоритм;

3. Непригодность алгоритма для создания графовой системы.

Вышеперечисленные факторы обусловили необходимость разработки нового алгоритма генерации банковских транзакций, результат работы которого можно применить при решении задач графовой аналитики. Данные будут включать в себя два набора: accounts – с информацией о счетах клиентов банка, и transactions – с информацией об операциях, совершаемых клиентами. Оба набора создаются в виде JSON-файлов, для упрощения выгрузки в качестве коллекций в графовую базу данных ArangoDB. Структура полей в наборах accounts и transactions представлена в таблицах 1 и 2 соответственно.

Таблица 1. Структура набора transactions. Составлено авторами

Наименование поля
Описание
tx_id
Уникальный номер транзакции
sender_id
Уникальный номер отправителя
receiver_id
Уникальный номер получателя
tx_type
Тип транзакции. Случайным образом выбирается из списка: TRANSFER (перевод), CASH_IN (внесение наличных), CASH_OUT (выдача наличных)
tx_amount
Сумма транзакции
timestamp
Час, в который была совершена транзакция. Принимает значение от 0 до 47 (генерируются транзакции за период 2 суток)
is_alerted
Флаг подозрительности операции. Принимает значение 1 или 0
is_fraud
Флаг того, что операция была мошеннической. Принимает значение 1 или 0. Не используется, но может быть использован при обучении на абсолютно истинных данных – операциях, которые точно были мошенническими
Таблица 2. Структура набора accounts. Составлено авторами

Наименование поля
Описание
account_id
Уникальный номер счёта
start_balance
Исходный баланс на счёте. Использует в генерации случайную величину, имеющую нормальное распределение со средним значением 2500 и стандартным отклонением 1000 (настраиваемые значения)
account_type
Тип счёта. Случайным образом выбирается из списка: DEBIT (дебетовый счёт), CREDIT (кредитовый счёт)
account_creation_dttm
Час создания счёта. Может принимать значение от -1000 (настраиваемое значение) до 47
Стоит отметить, что в промышленных средах структуры данных по типу accounts содержат также данные, позволяющие идентифицировать клиента по его счёту, например ФИО, паспортные данные, номер телефона. Один счёт также может контролировать несколько клиентов; такая структура вынудила бы нас ввести ещё один набор вершин и рёбер в граф – клиентов и принадлежности счёта клиенту.

При генерации синтетических данных мы используем конфигурационные параметры, в частности:

· NUM_ACCOUNTS – число счетов для генерации. Значение по умолчанию: 20;

· MAX_TX_IN_ONE_HOUR – максимальное количество операций между счетами в час. Значение по умолчанию: 30;

· MIN_TX_IN_ONE_HOUR – минимальное количество операций между счетами в час. Значение по умолчанию: 10;

· CREDIT_NEGATIVE_LIMIT – лимит по отрицательному остатку по счетам типа CREDIT. Баланс дебетовых счетов, в отличие от кредитовых, не может опускаться ниже 0.

Применение экспертных правил

В зависимости от требований бизнес-аналитики и технических ограничений, экспертные правила могут применяться к наборам данных в любой момент времени, а именно:

1. Непосредственно при инкрементальной загрузке (в нашем случае – при генерации синтетического набора данных);

2. В целевом хранилище данных, куда они попадают после загрузки.

Первый вариант предпочтителен для быстрой обработки отдельно взятой операции, если пользователь уверен, что результат проверки не потребуется как ретроспективно, так и при анализе дальнейших операций; второй же, наоборот, удобен при необходимости агрегации данных и рассмотрения операции в контексте других, схожих с ней по каким-либо признакам, операций. В нашем приложении с помощью экспертного правила проверяется подозрительность операции, то есть ей выставляется значение флага is_alerted, равное 0 либо 1. Первый способ применения экспертного правила реализован как функция python, являющаяся частью модуля генерации синтетических данных, а второй – как AQL-запрос, выполняющийся для коллекций ArangoDB.

Экспертные правила, сформулированные для выявления подозрительных операций среди всего массива, следующие:

1. Сумма. Операция признаётся подозрительной, если:

a. Её сумма превышает 2500 для операций типа TRANSFER и 1000 для операций типа CASH_IN и CASH_OUT;

b. По результатам её проведения баланс счёта типа CREDIT становится отрицательным (для дебетовых счетов такие операции невозможны).

Проверка этих экспертных правил осуществляется непосредственно при генерации набора данных.

2. Частота. Операции признаются подозрительными, если их за один час было совершено более 3-х между одни и тем же отправителем и получателем. Применение данного экспертного правила требует агрегации данных по совершаемым транзакциями, поэтому может осуществляться только в целевом хранилище с данными, то есть в коллекции ArangoDB. В листинге 1 представлен AQL запрос, с помощью которого можно проверить транзакции на выполнение данного правила.

Листинг 1. AQL-запрос для проверки экспертного правила №2. Составлено авторами

FOR tx IN transaction

COLLECT sender = tx.sender, receiver = tx.receiver, dttm = tx.timestamp

INTO txGroup

LET txGroupSize = LENGTH(txGroup)

FILTER txGroupSize > 3

LET alerted_tx_ids = txGroup [*].tx.tx_id

FOR tx IN transaction

FILTER tx.tx_id IN alerted_tx_ids

UPDATE tx WITH {is_alerted : true} IN transaction

3. Новизна. Операция признаётся подозрительной, если была произведена со счёта, который был создан в тот же час или за час до произведения операции с этого счёта. Структура созданных нами синтетических данных позволяет проверить выполнение этого экспертного правила как и во время загрузки операций, так и в целевом хранилище. Однако предпочтителен последний вариант, поскольку проверка использует специфику хранимых данных, а именно их представление в виде коллекций рёбер и вершин. В листинге 2 представлен AQL-запрос для проверки данного экспертного правила.

Листинг 2. AQL-запрос для проверки экспертного правила №3. Составлено авторами

FOR acc IN account

FOR v_acc, e_tx

IN 1..1 ANY acc transaction

FILTER (e_tx.timestamp - acc.account_creation_dttm) <= 1

UPDATE e_tx WITH {is_alerted : true} IN transaction

По результатам применения экспертных правил некоторые операции были отмечены флагом is_alerted, что свидетельствует о возможности совершения мошеннических действий. На данном этапе возможна проверка этих операций аналитиками и выявления действительных фактов мошенничества, что позволит отметить их флагом is_fraud.

Использование графовой нейронной сети

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

В отличие от стандартной реляционной модели, данные, хранящиеся в графовом представлении, имеют уникальную структуру: пары вершин, связанные между собой рёбрами. Графовые нейронные сети позволяют извлечь наибольшее преимущество из такой организации данных при помощи сообщений [6]. В контексте графов сообщением принято называть информацию, передаваемую по рёбрам от одних вершинам к другим. При этом, в зависимости от архитектуры нейронной сети, сообщения могут как являться агрегацией различных свойств различных элементов графа (как рёбер, так и вершин), так и изменять их.

Алгоритм построения графовой нейронной сети можно разбить на следующие шаги:

1. Определение входных и выходных данных.

Поскольку в созданном нами графе исследовать на подозрительность можно только транзакцию, но не счёт, перед нами стоит графовая задача классификации рёбер. Для построения графовой структуры и её интеграции с графовыми нейронными сетями в данной работе использована библиотека DGL – Deep Graph Library. ArangoDB имеет адаптер, позволяющий создать dgl граф из коллекций вершин и рёбер. При этом требуется спецификация метаграфа – структуры, с помощью которой можно принести вершины и рёбра и их атрибуты, избежав неоднозначности. В листинге 3 представлен данный метаграф.

Листинг 3. Метаграф для импорта коллекций ArangoDB в dgl граф. Составлено авторами

tx_metagraph = {

"vertexCollections" : {

"account" : {

"features" : {

"account_type" : CategoricalEncoder(mapping={

"DEBIT" : 0,

"CREDIT" : 1

}),

"account_creation_dttm" : IdentityEncoder(dtype=torch.int)

}

}

},

"edgeCollections" : {

"transaction" : {

"features" : {

"tx_type" : CategoricalEncoder(),

"tx_amount" : IdentityEncoder(dtype=torch.int),

"timestamp" : IdentityEncoder(dtype=torch.int)

},

"label" : "is_alerted"

}

}

}

Задаются единственные коллекции вершин (account) и рёбер (transaction); для обеих коллекций в поле features указаны атрибуты, которые, по нашему мнению, будут влиять на обучение и классификацию: тип и время создания счёта, тип, сумма и время совершения транзакции. При этом все категориальные переменные были преобразованы к числовому типу . Для коллекции рёбер указано также поле label – результат работы алгоритма классификации.

2. Создание модели.

Для решения классификационной задачи рёбер принято решение использовать графовую нейронную сеть, основанную на алгоритме SAGE [7]. Сам по себе алгоритм SAGEConv не использует атрибуты рёбер графа; его предназначение – агрегация информации о вершинах, соседних с данной, и последующая их нормализация. Таким образом, использование двухуровневой сети на основе SAGE позволяет адаптивно изменять значения атрибутов вершин исследуемого графа. Размеры слоёв нейронной сети определяются следующим образом:

· Количество нейронов во входном слое диктуется логикой работы SAGEConv. Так как данный алгоритм агрегирует информацию о вершинах графа, данный слой имеет 2 нейрона – размерность признакового пространства вершин;

· Включение в модель двух уровней сети SAGEConv требует наличия скрытого (промежуточного) слоя, размер которого задаётся при помощи конфигурационного параметра NUM_HIDDEN_FEATURES (по умолчанию он равен 20);

· В целях использования в обучении модели признакового пространства не только вершин, но и рёбер графа, в архитектуру сети добавлен класс DotProductPredictor; его задачей является создание сообщений на основе атрибутов вершин графа и исходящих из них рёбер, нормализация этих сообщений (для того, чтобы они находились в интервале от 0 до 1) и размещение их в атрибуте label. Поэтому выходной слой имеет три нейрона: для возможности конкатенации атрибутов рёбер и вершин графа они должны иметь одинаковую размерность.

3. Обучение модели.

Для обучения и для создания графовой нейронной сети используется библиотека torch, содержащую множество моделей нейронных сетей и оптимизаторов параметров. Выбран оптимизатор Adam – базовый оптимизатор, опирающийся на алгоритм градиентного спуска. Оптимизатор работает с множеством параметров нейронной сети, представленных в виде матриц; размер матриц при этом определяется размером слоёв сети: входного, скрытого, выходного. Стандартный алгоритм обучения нейронной сети в torch состоит из нескольких шагов:

1. Вычисление результативных признаков (в нашем случае – атрибута label) в одной итерации работы модели;

2. Вычисление функции потерь как среднего из разности квадратов предсказанных и реальных значений результативного признака;

3. Вычисление градиента на основе потерь и смещение параметров оптимизатора на величину градиента;

4. Повторение алгоритма.

Для остановки работы алгоритма введены два конфигурационных параметра: LOSS_TOLERANCE – минимально допустимое изменение в значении функции потерь, и MAX_NUM_STEPS – максимальное число итераций обучения.

Один из сеансов обучения сети остановился после 102 шагов, итоговое значение потери составило 0,2477. Таким образом, значения атрибута label рёбер графов были предсказаны сетью с точностью 75,23%.

Проблемы обучения и дальнейшего использования модели

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

1. Для набора данных, используемом при обучении GNN (сокр. от Graph Neural Network – графовая нейронная сеть), разбиение на обучающую, тестовую и валидационную выборки не является оптимальной стратегией, а иногда и вовсе невозможно. Это связано с тем, что сеть агрегирует информацию из вершин «по соседству», то есть вершин, отстоящих от данной не более, чем на k рёбер [8]. С одной стороны, чтобы убедиться во вхождении в обучающую выборку всех ближайших соседей избранных вершин, может потребоваться алгоритм со значительной вычислительной мощностью. С другой стороны, невключение таковых может привести к снижению качества обучения за счёт непредоставления полной оригинальной информации. Как следствие, графовая нейронная сеть, в отличие от обыкновенной, чаще всего обучается на всём объёме предоставляемых данных. Использование разделений на обучающую и тестовую выборки при этом может иметь смысл для вычисления функции потерь (такой подход используется во многих базовых архитектурах GNN), однако эксперименты над моделью, предложенной в данной работе, показали, что потери при классификации не отличаются значимо при использовании всех данных или лишь данных, отобранных в обучающую выборку;

2. Базовые графовые алгоритмы неспособны работать в инкрементальном режиме. Под инкрементальным режимом понимается способность использовать уже вычисленные параметры нейронной сети для предсказания значений в единичном режиме. Например, если известны веса в слоях стандартной нейронной сети, возможно передать в качестве входного вектора одну строку данных и получить на выходе предсказанные значения интересующих параметров, при этом не затрагивая сами значения весов. В свою очередь, графовые нейронные сети будут вынуждены провести полный пересчёт модели для решения единичной классификационной или регрессионной задачи, что значительно повышает их требовательность с точки зрения вычислительных ресурсов. Отметим, что существуют алгоритмы, позволяющие осуществлять инкрементальное обучение графовых моделей [9] [10]. Однако ни один из них не является «коробочным» решением и не может быть применен без адаптации при решении конкретной задачи, так как такие алгоритмы не являются частью самой модели, а должны применяться именно как надстройка над базовым алгоритмом обучения.

В целом, алгоритм обучения графовой нейронной сети состоит из следующих шагов:

1. Передача полного массива данных с вычисленными заранее значениями целевых переменных;

2. Обучение модели;

3. Сравнение значений целевых переменных до и после обучения и дальнейший анализ данных, в которых это значение изменилось;

4. Накопление достаточного объёма данных, ещё не знакомых сети, и повторение алгоритма.

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

Заключение

В данной статье представлен инструмент для создания синтетических наборов данных, имитирующих банковские транзакции и поведение реальных клиентов. Рассмотрено практическое применение двух основных подходов графовой аналитики: использование экспертных правил и графовых нейронных сетей – для решения графовой классификационной задачи. Методики обучения и применения GNN значительно отличаются от стандартных нейронных сетей; однако, по нашему мнению, при правильной разработке и эксплуатации графовая аналитика не уступает стандартным методикам ни в производительности, ни в точности предсказаний, что позволяет современным компаниям использовать её для решения прикладных бизнес-задач, в частности, для выявления мошеннических банковских транзакций.


Страница обновлена: 06.05.2024 в 19:25:32