Обычной хорошей практикой в машинном обучении является нормализация характеристик или стандартизация данных переменных предиктора, вот и все, центрируйте данные, вычитая среднее значение, и нормализуйте его, деля на дисперсию (или стандартное отклонение тоже). Для самодостаточности и, насколько я понимаю, мы делаем это для достижения двух основных целей:
- Избегайте сверхмалых весов модели с целью численной устойчивости.
- Обеспечьте быструю конвергенцию алгоритмов оптимизации, таких как, например, Conjugate Gradient, чтобы большая величина одного измерения предиктора относительно других не приводила к медленной конвергенции.
Обычно мы разбиваем данные на наборы для обучения, проверки и тестирования. В литературе мы обычно видим, что для нормализации признаков они принимают среднее значение и дисперсию (или стандартное отклонение) по всему набору переменных-предикторов. Большой недостаток, который я вижу здесь, заключается в том, что если вы это сделаете, вы фактически вводите будущую информацию в обучающие переменные предиктора, а именно будущую информацию, содержащуюся в среднем значении и дисперсии.
Таким образом, я выполняю нормализацию данных тренировки и сохраняю среднее значение и дисперсию. Затем я применяю нормализацию признаков к переменным предиктора наборов данных проверки и тестирования, используя среднее значение и отклонения обучения. Есть ли в этом какие-то принципиальные недостатки? Кто-нибудь может порекомендовать лучшую альтернативу?
источник
Ответы:
Ваш подход совершенно правильный. Хотя преобразования данных часто недооценивают как «предварительную обработку», нельзя особо подчеркнуть, что преобразования для оптимизации производительности модели можно и нужно рассматривать как часть процесса построения модели.
Обоснование: модель должна применяться к невидимым данным, которые, как правило, недоступны на момент создания модели. Процесс проверки (включая разделение данных) имитирует это. Таким образом, чтобы получить хорошую оценку качества модели (и мощности обобщения), необходимо ограничить вычисление параметров нормализации (среднее значение и дисперсию) обучающим набором.
Я могу только догадываться, почему это не всегда делается в литературе. Одним из аргументов может быть то, что вычисление среднего значения и дисперсии не настолько чувствительно к небольшим изменениям данных (но даже это верно только в том случае, если базовый размер выборки достаточно велик и данные приблизительно нормально распределены без экстремальных выбросов).
источник
Нормализация функций заключается в создании различных функций в одном масштабе. Масштабирование ускоряет снижение градиента, избегая многих дополнительных итераций, которые требуются, когда одна или несколько функций принимают значения, значительно превышающие остальные (без масштабирования визуализируемая функция стоимости будет демонстрировать большую асимметрию).
Я думаю, что имеет смысл использовать среднее значение и переменную из набора для обучения, когда приходят данные испытаний. Тем не менее, если объем данных огромен, наборы обучения и проверки можно приблизительно рассматривать как нормальное распределение, таким образом, они приблизительно разделяют среднее значение и переменную.
источник
Методология, которую вы описали, звучит, как говорили другие. Вы должны выполнить те же преобразования для функций вашего набора тестов, что и для функций из вашего обучающего набора.
Я думаю, что стоит добавить, что еще одной причиной нормализации функций является повышение производительности определенных процессов, которые чувствительны к различиям в масштабе определенных переменных. Например, анализ основных компонентов (PCA) направлен на то, чтобы охватить наибольшую долю дисперсии, и в результате придаст больший вес переменным, которые демонстрируют наибольшую дисперсию, если нормализация признаков не была выполнена изначально.
источник