SMOTE Алгоритм и классификация: переоцененный успех предсказания
Я столкнулся с проблемой, на которую не могу найти ответ. У меня есть проблема бинарной классификации (выходной Y=0 или Y=1) с Y = 1 классом меньшинства (фактически Y = 1 означает дефолт компании, с пропорцией =0.02 в исходном кадре данных). Поэтому я вычислил передискретизацию с использованием алгоритма SMOTE только на моем тренировочном наборе (после разделения моего кадра данных в обучающих и тестовых наборах). Я тренирую логистическую регрессию на своем тренировочном наборе (с пропорциями класса "defaut"=0,3), а затем смотрю на кривую ROC и MSE, чтобы проверить, хорошо ли мой алгоритм предсказывает значение по умолчанию. Я получаю очень хорошие результаты с точки зрения как AUC (AUC=0,89), так и MSE (MSE=0,06). Тем не менее, когда я пытаюсь более тщательно и индивидуально взглянуть на свои прогнозы, я обнаружил, что 20% дефолта не очень хорошо предсказаны. У вас есть метод, чтобы хорошо оценить качество моего прогноза (качество означает для меня прогнозы, которые хорошо прогнозируют дефолт). Я думал, что AUC - хороший критерий... Пока у вас есть метод для улучшения моей регрессии? Спасибо
1 ответ
Для каждой проблемы классификации вы можете построить матрицу путаницы.
Это матрица двустороннего входа, которая позволяет вам видеть не только истинные положительные / истинные отрицательные значения (TP / TN), которые являются вашими правильными предсказаниями, но также ложные положительные (FP) / ложные отрицательные значения (FN), и это большую часть времени ваш истинный интерес.
FP и FN - это ошибки, которые допускает ваша модель. Вы можете отслеживать, насколько хорошо ваша модель справляется с определением TP (1-FP) или TN (1-FN), используя чувствительность или специфичность ( ссылка).
Обратите внимание, что вы не можете улучшить одно без снижения другого. Поэтому иногда вам нужно выбрать один.
Хорошим компромиссом является оценка Ф1, которая пытается усреднить два.
Так что, если вы больше заинтересованы в значениях по умолчанию (давайте представим, что defaults=Positive Class
), вы предпочтете модель с более высокой чувствительностью. Но не забывайте также не пренебрегать специфичностью.
Вот пример кода в R:
# to get the confusion matrix and some metrics
caret::confusionMatrix(iris$Species, sample(iris$Species))