0

Извините за весь текст, но я думаю, что фон этого проекта поможет:Результаты машинного обучения слишком хороши, чтобы быть правдой?

Я работаю над проектом бинарной классификации. Первоначальный набор данных состоял из 28 000 классов 0 и 650 класса 1, поэтому он был очень сильно несбалансирован. Мне был предоставлен набор данных с избыточным и избыточным выборкой для работы с 5 000 из каждого класса (экземпляры класса 1 были просто дублированы 9 раз). После обучения модели на этом и получения суб-парных результатов (AUC около 0,85, но это должно было быть лучше), я начал задаваться вопросом, были ли эти методы выборки на самом деле хорошей идеей, поэтому я снова взял оригинальный сильно несбалансированный набор данных. Я включил его прямо в GradientBoostClassifier по умолчанию, обучен его на 80% данных и я сразу же получил что-то вроде этого:

Accuracy: 
0.997367035282 
AUC: 
.9998 
Confusion Matrix: 
[[5562 7] 
[ 8 120]] 

Теперь, я знаю, что высокая точность может быть артефактом из несбалансированных классов, но Я не ожидал, что AUC понравится тому или иному виду производительности! Поэтому я очень смущен и чувствую, что где-то в моей технике что-то было ошибкой ... но я понятия не имею, что это такое. Я тоже пробовал пару разных классификаторов и получил одинаковые уровни смехотворно хорошей производительности. Я не оставил метки классов в массиве данных, и данные обучения ПОЛНОСТЬЮ отличаются от данных тестирования. Каждое наблюдение имеет около 130 признаков, поэтому это не простая классификация. Очень похоже, что что-то не так, я уверен, что классификатор не может быть таким хорошим. Может ли быть что-нибудь еще, что я упускаю из виду? Любые другие распространенные проблемы, с которыми сталкиваются люди, сталкиваются с несбалансированными данными?

Я могу предоставить код, вероятности, примеры datapoints и т. Д., Если они были бы полезны, но я не хотел, чтобы это слишком долгое время. Спасибо всем, кто может помочь!

+3

Вопрос, вероятно, принадлежит на [Stats Exchange] (http://stats.stackexchange.com/) – Kartik

+2

Классификатор, который предсказал весь класс 0, получит точность ~ 98% в соответствии с вашими числами. Перекос настолько велик, что он доминирует над измерениями, и ваша самая большая путаница вызвана изменением того, как вы принимаете свои показатели. Вы просто не можете сравнить AUC, измеренную по сбалансированному набору, и одну взятую на этом исходном наборе, так что вы не знаете здесь, что лучше. Решите, что вы хотите измерить в первую очередь относительно своей цели и придерживайтесь ее - независимо от того, как вы тренируетесь. –

+0

@NeilSlater Спасибо, я немного запутался. Что вы имеете в виду, когда говорите, решите, что я хочу измерить и придерживаюсь? Я не уверен, что это то, о чем вы говорите, но я пытался максимизировать истинно-положительную ставку для 20% -ного ложноположительного курса, поэтому именно поэтому я был так заинтересован в AUC. Этот проект предназначен для диагностики заболеваний, поэтому истинный положительный показатель очень важен, и поэтому меня меньше беспокоит общая точность. – MrDinkleburg

ответ

0

Точность не может быть лучшим показателем производительности в вашем случае, может быть, вы можете думать об использовании точности, вспомнить и F1 счетов, а также выполнять некоторые отладки с помощью кривых обучения, переобучение обнаружения и т.д.

+0

Правильно, ну, я не очень сильно смотрю на счет точности. Я вижу только из матрицы замешательства, что это действительно хороший классификатор, я просто не знаю, реалистично ли это делать это хорошо или если это может свидетельствовать о какой-то ошибке. – MrDinkleburg

+0

Если набор данных легко разделяется, и вы используете 80% набора данных для обучения, и есть только 2 класса, это не редкость, чтобы получить действительно хорошие результаты. –

+0

@MrDinkleburg перекрестная проверка. –

Смежные вопросы