Полное руководство по созданию и управлению системой обнаружения мошенничества на основе машинного обучения.

Краткая история мошенничества

Самая ранняя зарегистрированная попытка мошенничества была обнаружена еще в 300 году до нашей эры в Греции.

Греческий морской торговец по имени Гегестратос хотел застраховать свой корабль и груз, поэтому застраховал их. В то время этот полис был известен как «нижний» и работал на том основании, что купец занимал деньги в размере стоимости своего корабля и груза.

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

Гегестратос планировал потопить свою пустую лодку, оставить заем и продать кукурузу. План провалился, и он утонул, пытаясь спастись от своей команды и пассажиров, когда они поймали его на месте преступления.

Спустя более 2000 лет финансовые учреждения все еще ведут ту же битву.

Машинное обучение и мошенничество

Традиционно финансовые учреждения автоматически помечали транзакции как «высокорисковые» на основе набора четко определенных правил, а затем либо отклоняли, либо вручную проверяли помеченные транзакции.

Хотя эти системы на основе правил по-прежнему являются важной частью набора инструментов для борьбы с мошенничеством, они никогда не предназначались для современного интернет-бизнеса.

В эту новую эру финансов и банковского дела пришли огромные инновации от таких компаний, как PayPal, Stripe, Square и Venmo, которые упростили отправку и получение денег прямо со своих телефонов.

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

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

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

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

Постановка задачи

Представьте себя специалистом по данным в компании, которая создает продукты, которые позволяют миллионам мелких продавцов электронной коммерции и владельцев малого местного бизнеса вести бизнес в Интернете.

В отличие от традиционных аналогов, онлайн-продавцы несут ответственность за мошеннические покупки.

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

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

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

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

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

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

Данные

Вот некоторые общие сведения о наборе данных, с которым мы работаем:

  • У нас очень несбалансированный набор данных: 99% транзакций являются законными, а менее 1% (n = 8 213) — мошенническими.
  • Все мошеннические транзакции происходят из транзакций типа CASH_OUT (n = 4116) и TRANSFER (n = 4097). TRANSFER — это место, где деньги отправляются покупателю / мошеннику, а CASH_OUT — это место, где деньги отправляются продавцу, который платит покупателю / мошеннику наличными. Обращаясь к заинтересованным сторонам, мы определили, что способ совершения мошеннических транзакций: мошенничество совершается путем первоначального перевода средств на другой счет, который впоследствии обналичивает их.
  • 6,3 миллиона транзакций с 2,7 миллионами уникальных значений для функции nameDest, которая указывает идентификатор получателя транзакции. Поговорив с заинтересованными сторонами, вы узнаете, что схема именования столбцов nameDest и nameOrig следующая: идентификаторы, начинающиеся с C, указывают на то, что это учетная запись клиента, а идентификаторы, начинающиеся с M, указывают на то, что это учетная запись продавца.

И вот функции, присутствующие в нашем наборе данных:

Обратите внимание, что эти данные на самом деле являются смоделированными данными конкурса PaySim Kaggle. Перейти к источнику можно по этой ссылке:



Проблема построения модели

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

И главная проблема здесь заключается в следующем: как определить, хороша ли наша модель?

Давайте рассмотрим это немного глубже.

Ложноотрицательные результаты

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

Ошибочные срабатывания

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

Компромисс

Существует компромисс между ложноотрицательными и ложноположительными результатами.

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

Ложный отрицательный результат влечет за собой стоимость проданных товаров и комиссию за споры. Ложное срабатывание влечет за собой наценку на проданный товар.

Компании должны решить, как найти компромисс между этими двумя факторами.

Итак, для чего вы выбираете оптимизацию?

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

Противоположное верно, когда маржа больше: ложные срабатывания становятся более дорогостоящими, чем ложноотрицательные.

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

Коммерческая политика

Предположим, что наш бизнес предписывает политику блокировки платежа, если модель машинного обучения присваивает транзакции вероятность мошенничества не менее 0,8 — в математическом выражении P (мошенничество) › = 0,8.

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

Оценка модели машинного обучения

Есть МНОГО показателей, которые мы можем выбрать для оценки нашей модели машинного обучения.

Простая матрица путаницы дает 14 метрик.

Давайте рассмотрим три из них более подробно: точность, полнота и частота ложных срабатываний.

Точность

Точность нашей модели — это доля транзакций, отмеченных нашей моделью как мошеннические, которые действительно являются мошенническими.

Пример. Предположим, у нас было 100 транзакций, и наша модель помечает 60 из них как мошеннические.

И из тех 60 транзакций, которые были отмечены как мошеннические, 40 на самом деле являются мошенническими.

Тогда точность будет 40/60 = 0,66.

Более высокая точность означает меньшее количество ложных срабатываний.

Вспомнить

Отзыв нашей модели (то есть истинно положительный показатель) — это доля всех действительно мошеннических транзакций, которые были отмечены нашей моделью как мошеннические.

Пример: Предположим, у нас было 100 транзакций, и 50 из них действительно мошеннические.

И из этих 50 действительно мошеннических транзакций наша модель помечает 40 как мошеннические.

Тогда отзыв равен 40 / 50 = 0,8.

Более высокий показатель отзыва подразумевает меньшее количество ложноотрицательных результатов.

Ложноположительный результат

Уровень ложных срабатываний нашей модели — это доля всех законных (не мошеннических) транзакций, которые модель ошибочно пометила как мошеннические.

Пример: Предположим, у нас было 100 транзакций, и 50 из них являются законными.

И из этих 50 законных транзакций наша модель пометила 20 как мошеннические.

Тогда процент ложноположительных результатов равен 20/50 = 0,4.

Итак, вам, вероятно, интересно… Что такое «хорошие значения» для точности, полноты и доли ложных срабатываний.

Если бы у нас была модель идеального ясновидения, то 100% транзакций, которые она классифицирует как мошенничество, на самом деле были бы мошенничеством.

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

  • Точность будет равна 1 (100% транзакций, классифицируемых моделью как мошенничество, на самом деле являются мошенничеством).
  • Отзыв будет равен 1 (выявлено 100% фактических случаев мошенничества).
  • Коэффициент ложных срабатываний будет равен 0 (ни одна законная транзакция не была ошибочно классифицирована как мошенническая).

Мы не часто строим модели ясновидения, поэтому существует компромисс между точностью и полнотой.

Влияние порога вероятности

По мере того, как мы увеличиваем порог вероятности блокировки (бизнес-политика, которую мы обсуждали ранее), точность будет повышаться.

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

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

И наоборот, когда мы уменьшаем порог вероятности, происходит обратное: точность уменьшается, а полнота увеличивается.

ROC и кривые точности-отзыва

Кривые ROC

Один из способов понять и визуализировать этот компромисс — использовать ROC-кривую, которая отображает отзыв (также известный как истинно положительный показатель) в сравнении с ложноположительным показателем.

Идеальная модель будет иметь кривую ROC, которая будет охватывать верхний левый угол графика, где отзыв равен 1,0, а уровень ложных срабатываний равен 0,0.

Случайная модель будет иметь истинно положительный уровень, равный ложноположительному, и мы получим прямую линию.

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

Один из способов оценить общее качество модели — вычислить площадь под кривой ROC (ROC AUC).

Несбалансированность классов меняет все

Когда проблема классификации становится проблемой несбалансированной классификации — ROC AUC вводит в заблуждение.

В этих несбалансированных ситуациях небольшое количество правильных или неправильных прогнозов может привести к большому изменению кривой ROC или показателя ROC AUC.

Распространенной альтернативой являются кривая точного отзыва и площадь под кривой.

Кривые точного отзыва

Кривая точности-отзыва (или кривая PR) представляет собой график точности (ось Y) и отзыва (ось X) для различных порогов вероятности.

Совершенно опытная ясновидящая модель будет изображена в виде точки с координатой (1,1).

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

По мере того, как модель становится все лучше и лучше, она начинает охватывать правый верхний угол графика, где точность и полнота максимальны при 1,0.

Поскольку кривая Precision-Recall уделяет больше внимания классу меньшинства, она оказывается эффективной диагностикой несбалансированных моделей бинарной классификации.

Как и в случае с кривой ROC, мы можем зафиксировать общее качество модели, вычислив площадь под кривой точности-отзыва (PR AUC).

В нашем примере мы будем использовать площадь под кривой Precision-Recall в качестве показателя оценки.

Методология

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

В каждом из блокнотов, указанных ниже, есть все подробности для каждого шага методологии.

Мы будем отслеживать наши эксперименты с использованием Comet!

Зависимости

Мы будем использовать следующие библиотеки в Python, чтобы помочь нам с этим проектом:

  • панды
  • пустышка
  • научное обучение
  • неучиться
  • Комета МЛ
  • пикарет
  • сладкийвиз

Ноутбуки

Я твердо верю, что лучший способ научиться чему-то — это попробовать это самому. Вместо того, чтобы просто делиться фрагментами кода, я подумал, что вам будет интереснее взяться за руки, поэтому я поделился работающими блокнотами Colab, чтобы вам было легче следовать.

Получить необработанные данные



В этой записной книжке мы получаем доступ к данным, предоставленным нам нашими заинтересованными сторонами, и записываем необработанные данные в Comet как Артефакт.

Понимание данных



Профилирование данных с помощью библиотеки sweetviz, чтобы получить представление о них и посмотреть, что там происходит. Если вы еще не видели sweetviz в действии, будьте впечатлены! Это библиотека Python с открытым исходным кодом, которая генерирует красивые визуализации высокой плотности для запуска EDA (исследовательского анализа данных) всего двумя строками кода.

Узнайте больше об интеграции sweetviz с Comet здесь:



Исследовательский анализ данных и разработка функций



Более глубокий анализ данных и создание новых функций из необработанных данных. Мы также будем регистрировать версии наших данных как Артефакт в Comet, чтобы отслеживать их.

Алгоритмы выборочной проверки



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

Экспериментирование с гиперпараметрами



Мы будем использовать Comet для проведения экспериментов и выбора наилучшей комбинации гиперпараметров для этих алгоритмов.

Затем мы оценим производительность на тестовом наборе и зарегистрируем его в Реестре моделей в Comet. Это невероятно полезный инструмент, который позволяет нам хранить обученные модели машинного обучения, метаданные о данных и обучающих заданиях, использованных для создания модели, и отслеживать, какие версии находятся в производстве. Это важная часть головоломки для установления происхождения моделей машинного обучения.

Заключение

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

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

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

На этом все, до встречи в блокнотах.

И помните, друзья мои: у вас одна жизнь на этой планете, почему бы не попробовать сделать что-то большое?

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

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.