В 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? И есть ли другой хороший способ уменьшить размерность в этом наборе данных?
Мой подход:
- Сделайте k сгибов и выделите один из них для проверки, остальные используйте для обучения
- Нормализовать данные обучения и преобразовать данные проверки
- Подгонка FAMD к данным обучения и преобразование данных обучения и испытаний
- Повторная выборка только тренировочных данных с использованием SMOTE-NC
- Тренируйте любую модель, оцените по данным проверки
- Повторите 2-5 тысяч раз и возьмите среднее значение точности, вспомните F2
* Я также был бы признателен за любые советы по моему общему подходу к этой проблеме
Спасибо!