Это важно для очистки тестовых данных? - PullRequest
0 голосов
/ 25 февраля 2020

В данных обучения я разработал и очистил свои данные. Это важно сделать то же самое с тестовыми данными? Я знаю, что некоторые базовые c модификации, такие как кодирование меток, разделение зависимых / независимых функций и т. Д. c .. также необходимы в тестовых данных. Но нужно ли нам ОЧИЩАТЬ тестовые данные, прежде чем делать прогнозы?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Я не могу ответить вам Да или Нет, поэтому позвольте мне начать с распределения данных по всем вашим наборам Train / Test / Dev. По словам профессора Андрея Нга, наборы Test и Dev должны быть из одного и того же дистрибутива ( Youtube ), но набор обучающих программ может быть из другого дистрибутива ( Проверьте здесь ), и часто это хорошая вещь. Иногда очистка обучающего набора очень полезна, а также применяется некоторая базовая операция c для ускорения процесса обучения (например, нормализация, которая не очищает), но мы говорим о данных обучения, которые могут и должны иметь тысячи тысяч примеров, поэтому иногда вы не можете проверить свои данные вручную и почистить их, потому что, возможно, они вообще не стоят; Что я имею в виду? Хорошо, позвольте мне показать вам пример:

Допустим, вы используете классификатор кошек (Cat или no-Cat), и у вас есть точность 90%, что означает, что у вас ошибка 10%. выполнив анализ ошибок ( проверьте его здесь ), вы обнаружите, что:

  1. 6% вашей ошибки вызвано изображениями с ошибками (изображения без кошек
    помечены как кошка и наоборот).
  2. 44% вызвано размытыми изображениями.
  3. 50% вызвано изображениями больших кошек, помеченных как кошки. в этом случае все время, которое вы потратите на исправление помеченных изображений, улучшит вашу производительность (0,6%) в лучшем случае (поскольку это 6% от общей ошибки 10%), поэтому ЭТО НЕ СТОИТ исправляя данные о метках.

Я привел пример данных с ошибками, но в целом я имею в виду любые виды очистки и исправления.

НО очистки данные в Набор тестов может быть проще, и это должно быть сделано для обоих наборов Test / Dev, если это возможно, потому что ваш набор тестов будет отражать производительность вашей системы на данных в реальном времени. Операции, которые вы упомянули в своем вопросе, не совсем чисты, но используются для ускорения процесса обучения или для того, чтобы сделать данные подходящими для алгоритма, и их применение зависит от формы и типа данных (изображений, голосовых записей, слов. .) и о проблеме, которую вы пытаетесь решить.

в конце В качестве ответа я могу вам сказать, что:

  • форма и форма данных должны быть одинаковыми во всех трех наборах (поэтому применение кодирования меток должно применяться ко всем данным, а не только к обучающим данным, а также к входным данным, используемым для прогнозирования, поскольку они изменяют форму выходной метки).
  • Количество функций должно быть одинаковым всегда.
  • Любая операция, которая изменяет (форму, форму, количество элементов и т. Д.), Примененную к данным, должна применяться к каждому сэмплу, который вы собираетесь использовать в своей системе.
1 голос
/ 25 февраля 2020

Это зависит от:

Нормализация данных: Если вы нормализовали данные тренировки, тогда да, нормализуйте данные теста точно так же, как вы нормализовали данные тренировки. Но будьте осторожны, чтобы не перенастраивать параметры, настроенные вами для данных обучения.

Заполнение пропущенных значений: то же самое. Обрабатывайте данные теста как данные обучения, но не перенастраивайте ни один из параметров.

Удаление выбросов: возможно, нет. Цель тестового набора - оценить, насколько хорошо ваша модель будет работать с невидимыми данными. Поэтому удаление выбросов, вероятно, не будет хорошей идеей.

В общем: делайте с вашими тестовыми данными только те вещи, которые вы можете / будете делать с невидимыми данными при применении вашей модели.

...