Выполнить нормализацию объекта до или в рамках валидации модели?

52

Обычной хорошей практикой в ​​машинном обучении является нормализация характеристик или стандартизация данных переменных предиктора, вот и все, центрируйте данные, вычитая среднее значение, и нормализуйте его, деля на дисперсию (или стандартное отклонение тоже). Для самодостаточности и, насколько я понимаю, мы делаем это для достижения двух основных целей:

  1. Избегайте сверхмалых весов модели с целью численной устойчивости.
  2. Обеспечьте быструю конвергенцию алгоритмов оптимизации, таких как, например, Conjugate Gradient, чтобы большая величина одного измерения предиктора относительно других не приводила к медленной конвергенции.

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

Таким образом, я выполняю нормализацию данных тренировки и сохраняю среднее значение и дисперсию. Затем я применяю нормализацию признаков к переменным предиктора наборов данных проверки и тестирования, используя среднее значение и отклонения обучения. Есть ли в этом какие-то принципиальные недостатки? Кто-нибудь может порекомендовать лучшую альтернативу?

Ходящий по небу
источник
Связано: stats.stackexchange.com/questions/2306/…
Штеффен

Ответы:

46

Ваш подход совершенно правильный. Хотя преобразования данных часто недооценивают как «предварительную обработку», нельзя особо подчеркнуть, что преобразования для оптимизации производительности модели можно и нужно рассматривать как часть процесса построения модели.

Обоснование: модель должна применяться к невидимым данным, которые, как правило, недоступны на момент создания модели. Процесс проверки (включая разделение данных) имитирует это. Таким образом, чтобы получить хорошую оценку качества модели (и мощности обобщения), необходимо ограничить вычисление параметров нормализации (среднее значение и дисперсию) обучающим набором.

Я могу только догадываться, почему это не всегда делается в литературе. Одним из аргументов может быть то, что вычисление среднего значения и дисперсии не настолько чувствительно к небольшим изменениям данных (но даже это верно только в том случае, если базовый размер выборки достаточно велик и данные приблизительно нормально распределены без экстремальных выбросов).

Штеффен
источник
Я нахожу это немного запутанным. ОП говорит, что он выполняет нормализацию функций для наборов данных проверки и тестирования. Ваш ответ сначала говорит, что его подход правильный. Затем вы говорите: «Нужно ограничить вычисление параметров нормализации обучающим набором», а это не то, что он делает. Таким образом, ваш ответ противоречит самому себе, говоря ему, что он делает правильно, а затем предлагая иначе. Что мне здесь не хватает?
Махоня
4
То, что делает ФП, описано в его последнем параграфе, и это именно то, что я сказал. Конечно, нормализация применяется к набору тестов / проверок, если она была применена к обучающему набору. Важным моментом является то, что параметры этой нормализации были рассчитаны только по тренировочным данным, а не по всему набору. Надеюсь это поможет.
Штеффен
Ах, спасибо большое. Я неправильно понял ваш ответ. Я думал, что вы предлагали «применение» нормализации только к тренировочному набору, что явно было не тем, что вы предлагали.
Махоня
2

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

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

lennon310
источник
1
Я полагаю, что нормализация данных может ускорить градиентный спуск в том, что без нормализации rss имеет эллиптические контуры, поэтому при фиксированной скорости обучения может потребоваться больше итераций, чтобы сходящийся градиент спускался. В то время как при масштабировании rss имеет контуры окружности (симметричные), поэтому градиентный спуск быстро сходится. Я прав?
авокадо
1

Методология, которую вы описали, звучит, как говорили другие. Вы должны выполнить те же преобразования для функций вашего набора тестов, что и для функций из вашего обучающего набора.

Я думаю, что стоит добавить, что еще одной причиной нормализации функций является повышение производительности определенных процессов, которые чувствительны к различиям в масштабе определенных переменных. Например, анализ основных компонентов (PCA) направлен на то, чтобы охватить наибольшую долю дисперсии, и в результате придаст больший вес переменным, которые демонстрируют наибольшую дисперсию, если нормализация признаков не была выполнена изначально.

bibzzzz
источник
Очень хороший момент! Спасибо, что привнесли его. Я вспоминаю из моих исследований, которые всегда нормализуют матрицу ввода перед вычислением PCA.
SkyWalker