Машинное обучение для обнаружения мошенничества - несбалансированные данные работают лучше, чем синтетические сбалансированные данные

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

Немного общего контекста. Как вы можете теперь себе представить, наборы данных о мошенничестве сильно разбалансированы и составляют около 1% подозрительных действий (это точно мой случай). Этот сценарий часто приводит к тому, что модели ML предсказывают, что все виды деятельности не являются мошенничеством, и в то же время получают высокую степень точности. Однако простой взгляд на матрицу путаницы выявляет проблему. Чтобы решить эту проблему, обычной процедурой является балансировка данных так, чтобы процент мошенничества увеличивался либо за счет недостаточной выборки, либо избыточной выборки. Для этого есть несколько способов, но я решил применить синтетическую генерацию данных с помощью SMOTE.

Проблема здесь в том, что мои оригинальные модели ML с необработанными данными имеют действительно хорошую прогнозирующую точность (с фантастическими значениями AUC-RO и значениями Каппа Коэна), в то время как те же модели с обработанными сбалансированными данными дают все еще хорошие результаты, но с более низкой точностью. Я удивлен получением таких хороших результатов в обоих сценариях, и я бы сказал, что модели не переоснащаются, поскольку (стратифицированный) раздел поднимается до 80% в целях тестирования. Я также не понимаю, как балансировка данных может привести в 4 раза больше ложных негативов.

Некоторая деталь данных:

  • Объем данных: ≈380000
  • Случаи мошенничества: ≈3700
  • Несбалансированные данные Случайные значения леса: точность = 99,822%, коэффициент Коэна K = 0,895. FN = 21 и FP = 114
  • Сбалансированные данные Случайные значения леса: Точность = 99,751%, Когена K = 0,862. FN = 86 и FP = 102
  • Метод для балансировки данных: SMOTE с ближайшими соседями k = 1, с равными соотношениями классов.

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

Заранее спасибо!

0 ответов

Другие вопросы по тегам