Уменьшение размерности, норализация, повторная выборка, k-кратное резюме ... В каком порядке? - PullRequest
7 голосов
/ 06 июня 2019

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

  • Содержит 40000 образцов с 20 функциями. После одного горячего кодирования количество функций составляет 50 (4 числовых, 46 категориальных).
  • Большинство без маркировки: из 40 000 образцов 33 000 образцов не имеют маркировки.
  • Высокая несбалансированность: из 7000 меченых образцов только 800 образцов (11%) являются положительными (мошенничество).

Метрики - это точность, отзыв и оценка F2. Мы больше ориентируемся на то, чтобы избежать ложных срабатываний, поэтому мы ценим высокий отзыв В качестве предварительной обработки я передискретизировал положительные случаи, используя SMOTE-NC, который также учитывает категориальные переменные.

После того, как я попробовал несколько подходов, включая полу-контролируемое обучение с самообучением, распространение меток / распространение меток и т. Д., Я достиг высокого показателя отзыва (80% на тренировках, 65-70% на тестах). Тем не менее, моя оценка точности показывает некоторые следы переоснащения (60-70% на тренировках, 10% на тестировании). Я понимаю, что точность хороша для тренировок, потому что она пересчитана, и низка для тестовых данных, потому что она напрямую отражает дисбаланс классов в тестовых данных. Но этот показатель точности недопустимо низок, поэтому я хочу его решить.

Итак, чтобы упростить модель, я думаю о применении уменьшения размерности. Я нашел пакет под названием prince, который поставляется с FAMD (Факторный анализ для данных смеси).

Вопрос 1 : Как мне следует провести нормализацию, FAMD, перекрестную валидацию в k-кратном порядке и повторную выборку? Правильный ли мой подход ниже?

Вопрос 2 : Пакет prince не имеет таких методов, как fit или transform, как в Sklearn, поэтому я не могу выполнить 3-й шаг, описанный ниже. Любые другие хорошие пакеты, чтобы сделать fit и transform для FAMD? И есть ли другой хороший способ уменьшить размерность в этом наборе данных?

Мой подход:

  1. Сделайте k сгибов и выделите один из них для проверки, остальные используйте для обучения
  2. Нормализовать данные обучения и преобразовать данные проверки
  3. Подгонка FAMD к данным обучения и преобразование данных обучения и испытаний
  4. Повторная выборка только тренировочных данных с использованием SMOTE-NC
  5. Тренируйте любую модель, оцените по данным проверки
  6. Повторите 2-5 тысяч раз и возьмите среднее значение точности, вспомните F2

* Я также был бы признателен за любые советы по моему общему подходу к этой проблеме

Спасибо!

...