Цель: Выявление и прогнозирование мошеннических транзакций

По данным Forbes, убытки от мошенничества, понесенные банками и продавцами по всем кредитным, дебетовым и предоплаченным платежным картам общего назначения и частным торговым маркам, выпущенным во всем мире, достигли 21,84 млрд долларов США в 2015 году, при этом на Соединенные Штаты (США) приходится почти два -пятых (38,7%) от общей суммы в 8,45 млрд долларов. Но к 2020 году он может превысить 12 миллиардов долларов, если отразится глобальный процентный рост в 45%.

Набор данных:

Код: https://github.com/aabdygaziev/capstone-project

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

Мой подход к проблеме:

Используемые инструменты:

  • питон
  • панды, scikit-learn, imblearn, mlxtend, lightgbm

Методологии:

  • Синтетическое меньшинство по методу выборки — SMOTE
  • Методы вменения — SimpleImputer
  • Выбор функции

Актуальность проблемы

Самые большие проигрыши

Очистка данных. Процесс очистки очень важен. Прежде чем проводить анализ и строить модель, очистите данные. В моем случае я установил пороговый уровень 20% для отсутствующих значений. Если функция имеет более 20% отсутствующих значений, эта функция удаляется. Остальным, удовлетворяющим требованию, присваиваются их значения. Кроме того, удаляются выбросы, лежащие в квантилях 0,025 и 0,975. Собрано 99,5% данных.

Выбор функций:

После внедрения методов выбора признаков эти признаки оказались важными:

  • C1-C14 (подсчет, например, сколько адресов связано с платежной картой и т. д. Фактическое значение маскируется)
  • TransactionAmt (сумма транзакции)
  • TransactionDT (разница во времени от заданной эталонной даты и времени)
  • карта1 — карта6 (информация о платежной карте, такая как тип карты, категория карты, банк-эмитент, страна)
  • D1-D15: дельта времени, например, количество дней между предыдущей транзакцией.
  • Vxxx: Vesta разработала богатые функции, включая ранжирование, подсчет и другие отношения сущностей.

Несбалансированный набор данных. Этот набор данных очень несбалансирован. Только 3,5% отмечены 1 (мошенничество), а 96,5% — 0 (не мошенничество).

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

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

Если вы хотите узнать больше о SMOTE: https://www.cs.cmu.edu/afs/cs/project/jair/pub/volume16/chawla02a-html/node6.html#SECTION000420000000000000000

Моделирование

Во время проекта я пытался подогнать несколько моделей:

  1. RandomOverSampler, LinearSVC (ресэмплинг, модель) — AUC 0,52
  2. BalancedRandomForestClassifier, — AUC 0,54
  3. SMOTE, RandomForestClassifier — AUC 0,71
  4. SMOTE, классификатор XGB — AUC 0,63
  5. SMOTE, Stacked Generalizer (уровень 2) — AUC 0,73
  6. SMOTE, GridSearch, LightGBM.LGBMClassifier — AUC 0,97

Лучшая модель: SMOTE, GridSearch, LightGBM.LGBMClassifier — AUC 0,97

Дерево решений модели: LightGBM.LGBMClassifier

Основные выводы из этого проекта:

  1. Иметь конкретную цель. Какую проблему вы решаете?
  2. Изучите свою проблему: с какими проблемами столкнулись другие люди, когда пытались решить эту проблему? (например, «несбалансированный набор данных»)
  3. Узнайте о своем наборе данных; изучите, какая информация у вас есть и что вы можете с ней сделать
  4. Проверьте свои данные: отсутствующие значения, нерелевантные функции, дубликаты и т. д.
  5. Инжиниринг данных: попробуйте уменьшить размер ваших данных
  6. Всегда старайтесь создавать свою модель с минимальным количеством функций.
  7. Проверьте свои результаты; настройте параметры для лучшего результата и протестируйте