#dataset #data-science
Вопрос:
(Я немного напрягся, чтобы сформулировать название — пожалуйста, не стесняйтесь предложить другое название).
У меня есть текстовый набор данных, который мне нужно классифицировать, скажем, есть три класса. Мне нужно создать целевые объекты, вручную установив метки на основе текста (скажем, три класса dog
, cat
, bird
).
Когда я это делаю, я замечаю, что у нас, скажем, 70% собак, 20% кошек и 10% птиц.
Поскольку многие модели машинного обучения борются с несбалансированными данными, моей первой мыслью было бы заставить сбалансированный набор данных просто игнорировать часть текста dog
и cat
(т. е. «недостаточную выборку»), в результате чего получится (почти) сбалансированный набор данных, что облегчит обучение модели.
Однако меня беспокоит то, что если мы хотим обучить, например, нейронную сеть и получить вероятность для каждого класса, то не обучение правильному распределению данных приведет к чрезмерно/недостаточно уверенным прогнозам?
Ответ №1:
Действительно, если ваш набор данных несбалансирован, существует риск повлиять на производительность вашего классификатора.
Вы найдете множество библиотек, которые помогут вам справиться с этой проблемой (см. Ниже), и суть в том, что если классы одинаково представлены в вашем наборе данных, это может только помочь предотвратить ошибки вашего классификатора:
https://github.com/MaxHalford/pytorch-resample
https://github.com/ufoym/imbalanced-dataset-sampler
https://imbalanced-learn.org/stable/auto_examples/index.html#general-examples и т.д…
(но вы также можете сделать эту выборку самостоятельно, это не должно быть слишком сложно, например, такие библиотеки, как pandas, имеют такую функциональность)
В качестве меры предосторожности разделите свой набор данных на 3:
- Обучение (например, 70% наших данных): основная часть данных, используемых для обучения
- Проверка (например, 20%): что ваш классификатор использует для регуляризации (т. Е. для предотвращения чрезмерной подгонки)
- Тест (например, 10%):
this data is NEVER exposed to your classifier
в учебных целях вы сохраняете его отдельно и просто используете в конце своей модели, чтобы оценить его истинную производительность (вы вызываете прогноз и сравниваете с ожидаемыми классами).
Это должно быть хорошей отправной точкой.