Может ли дисбаланс в соотношении классов в обучающем и тестовом наборе вызвать низкую точность проверки?

Я участвую в хакатоне, где мы должны предсказать, заинтересован ли пользователь в работе с учетом таких особенностей, как пол, город, часы обучения, опыт, текущая компания и т. Д.

В обучающем наборе около 90% не заинтересованы в работе, а только 10%. Но в общедоступном тестовом наборе, который они выпустили, есть 50% каждого из этих двух классов, и моя точность проверки не превышает 55%, в то время как точность обучения составляет 99%.

И данные тестирования и обучения имеют пропущенные значения, и я вменяю их, используя RBM.

Мой вопрос:

Точность валидации ужасна из-за дисбаланса в соотношении классов или из-за неправильного определения пропущенных значений?

1 ответ

Решение

Объяснение:

Хорошо, я думаю, что вам нужно сначала повторить выборку ваших данных, потому что ваш алгоритм узнает, что большинство людей не заинтересованы в работе, и это правда, если мы просто посмотрим на распределение ваших обучающих данных (90% не заинтересованы, 10% заинтересованы). Ваш алгоритм просто предполагает, что ответ всегда "не заинтересован". Вот почему вы достигаете высокой точности на тренировочном наборе.

В ваших тестовых данных распределение изменилось до 50%:50%. Ваш алгоритм все еще предполагает, что все люди "не заинтересованы", и не может предсказать заинтересованных. (Ваша точность уменьшается на тестовом наборе примерно до 50%)

Как решить эту проблему:

Измените данные тренировки на соответствие 50%: 50% в наборе тренировок. Существуют разные методы передискретизации. Вот некоторые примеры:

  • Под-Sampling
  • Передискретизации
  • Техника избыточной выборки синтетических меньшинств (SMOTE)

Недостаточная выборка: уменьшает выборку большинства классов, удаляя элементы. В вашем случае это будет (10% интересуются и 10% не пересекаются). Недостатком является то, что вы будете просто учиться на 20% доступных данных обучения.

Чрезмерная выборка: повышается выборка класса меньшинства путем добавления избыточных точек. Преимущество: вы бы использовали все свои данные. Недостаток: может привести к переоснащению.

SMOTE: более сложный метод передискретизации, который добавляет синтетические образцы.

Я бы попробовал начать использовать простой оверрайт и проверить, решает ли это вашу проблему.

Для python вы можете использовать так называемый пакет imbalanced-learn, который содержит все заявленные здесь методы.

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