Фэн Чжао, Тинтинг Цяо и Эрди Калли, специалисты по данным, Platform Risk, Adyen.

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

Хотя модели, основанные на бизнес-правилах, и традиционные алгоритмы машинного обучения (МО) в некоторой степени эффективны, они с трудом справляются с растущей изощренностью мошеннических действий. Чтобы защитить средства продавцов и обеспечить безопасность рынка, крайне важно постоянно совершенствовать наши методы обнаружения мошенничества.

В этом посте мы познакомим вас за кулисами и узнаем, как Adyen использует нейронные сети графов (GNN) для защиты интересов наших клиентов.

Борьба с мошенничеством продавцов

В Adyen команда Score — это команда, занимающаяся выявлением случаев мошенничества со стороны продавцов на торговых площадках и платформах. За прошедшие годы мы внедрили комбинацию моделей, основанных на бизнес-правилах, и традиционных алгоритмов машинного обучения. Эти алгоритмы каждый день выявляют случаи мошенничества среди миллионов продавцов с возможностью масштабирования, обеспечивая безопасность как наших продавцов, так и платформы Adyen, и они продемонстрировали удовлетворительные результаты.
Однако эти алгоритмы рассматривают поведение учетной записи каждого продавца отдельно. Мы также считаем, что, используя призму графиков, мы можем выявить более сложные закономерности, учитывая взаимосвязи и отношения между продавцами. Такой подход позволяет нам получить более глубокое представление об экосистеме и лучше понять, как различные продавцы могут сотрудничать или влиять друг на друга, что в конечном итоге позволяет нам улучшить наши стратегии обнаружения и предотвращения мошенничества.

Введите модели нейронной сети графа

Графовые нейронные сети (GNN) предлагают многообещающее решение для повышения возможностей обнаружения мошенничества. Это класс нейронных сетей, специально предназначенных для работы с данными, структурированными в виде графов. GNN могут фиксировать сложные закономерности и зависимости; позволяя нам обнаруживать тонкие мошеннические действия, которые часто пропускают модели, основанные на правилах, и традиционные подходы ML.

В последние годы GNN стали использоваться для решения проблем обнаружения мошенничества в промышленности. Чтобы сослаться на несколько; Uber предложил экспериментальное решение для обнаружения совместного мошенничества, а Amazon использовала платформу AWS для создания GNN для обнаружения мошенничества. Тем не менее, применить эту новую идею для обнаружения мошенничества со стороны продавцов на производстве в Adyen по-прежнему было непросто.

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

Граф транзакций

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

На этом графике мы можем наблюдать двух продавцов, связанных с их клиентами несколькими карточками или электронными письмами. Например, рассмотрим продавца Б: этот продавец получил одну транзакцию с банковской карты покупателя ( settled_count: 1) и две транзакции с адреса электронной почты покупателя ( settled_count : 2). Всего продавец Б получил 3 расчетных платежа ( settled_count:3). Ребра на графике указывают, использовалась ли для покупки у продавца банковская карта или адрес электронной почты. Если есть ребро, соединяющее кредитную карту и продавца, это означает, что эта кредитная карта используется для покупки чего-либо у этого продавца.

Мы активно отслеживаем состояния продавцов на маркетплейсах и ведем записи; по ним мы можем определить, заблокирован ли продавец из-за мошеннических действий. Это означает, что мы можем пометить определенных продавцов в наших наборах данных машинного обучения — что является ключевым шагом на пути к контролируемому обучению — и обучить модель прогнозировать, совершает ли продавец мошеннические действия или нет.

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

Настройка нейронной сети графа: трансдуктивная или индуктивная?

Когда дело доходит до классификации узлов графов с использованием нейронных сетей графов (GNN), существует два распространенных подхода: трансдуктивный и индуктивный.

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

Трансдуктивные настройки часто приводят к повышению производительности, поскольку для обучения используется полный график. Однако в нашем конкретном случае получение меток о мошенничестве из контрольного журнала может занять около месяца. Эта задержка делает непрактичным использование трансдуктивной настройки, поскольку у нас недостаточно меток для обучения значимой модели в разумные сроки. Поэтому мы выбираем индуктивную настройку, при которой мы разделяем данные по времени и используем последние доступные метки на основе даты запуска, как показано на рисунке ниже:

  • График обучения + проверки. Мы обучаем модель GNN на этом графике и прекращаем обучение раньше из-за потерь при проверке в выборке.
  • Тестовый график. На этом графике мы оцениваем производительность обученной модели GNN, чтобы убедиться, что результат модели стабилен на данных вне выборки.
  • График вывода. Мы применяем модель к этому последнему графику и сообщаем специалистам по рискам о продавцах-мошенниках, которые могут быть замешаны в мошеннических действиях.

Запускаем GNN в производство

Чтобы вовремя выявлять мошенничество со стороны продавцов и поддерживать оптимальную производительность, мы хотим использовать самые последние данные и ежедневно запускать GNN. Это представляет собой серьезную проблему при производстве GNN. Чтобы обеспечить масштабируемость, мы ввели две ключевые оптимизации:

  • Создание масштабируемых графиков с помощью GraphFrames: мы используем Spark для анализа и моделирования данных и делаем это в масштабе для миллиардов транзакций в день. Для создания графа транзакций мы также использовали операторы графа в Spark — GraphFrames, который предоставляет API-интерфейс Graph на основе DataFrame для запуска создания графа в распределенной настройке. Кроме того, поскольку графы обучения, тестирования и вывода независимы, мы дополнительно оптимизировали их, запустив создание этих графов параллельно, чтобы в полной мере использовать вычислительные ресурсы.
  • Сводный график с двудольной проекцией: вместо использования исходного графика идентификатора продавца, например карта продавца, электронная почта продавца, мы спроецировали график на уровень продавца и суммировали действия покупателей по краям. Эта оптимизация уменьшила график в пять раз (5x) по сравнению с исходным размером и значительно повысила эффективность наших процессов обучения, тестирования и вывода. В качестве иллюстративного примера мы сжали график транзакций между продавцами и покупателями, как было показано ранее, в меньший график ниже:

На этом графике мы видим двух связанных продавцов, каждый из которых отмечен соответствующей функцией settled_count, обозначающей количество индивидуальных транзакций. Граничные элементы между ними — card_id_settled_count и shopper_email_id_settled_count — отражают общее поведение покупателей.

Собрав все это вместе, мы реализовали конвейер модели GNN с помощью Airflow; наш надежный планировщик работ по созданию конвейеров ETL и ML в Адьене. Конвейер состоит из 3 этапов (см. изображение ниже):

  • Сначала мы создаем параллельные графики в Spark.
  • Во-вторых, мы конвертируем графики в формат DGL, обучаем модель GNN и применяем ее к графикам тестирования и вывода.
  • Наконец, мы используем Spark для генерации предупреждений о мошенничестве с соответствующими бизнес-показателями, чтобы сделать результат понятным для специалистов по рискам.

Весь конвейер работает в производстве каждый день, а сквозная продолжительность составляет в среднем 2 часа.

В итоге

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