Я пытаюсь предсказать результат сложной системы, используя нейронные сети (ИНС). Исходные (зависимые) значения находятся в диапазоне от 0 до 10000. Разные входные переменные имеют разные диапазоны. Все переменные имеют примерно нормальное распределение.
Я рассматриваю разные варианты масштабирования данных перед тренировкой. Один из вариантов - масштабировать входные (независимые) и выходные (зависимые) переменные до [0, 1], вычисляя совокупную функцию распределения, используя значения среднего и стандартного отклонения каждой переменной, независимо. Проблема с этим методом заключается в том, что если я буду использовать функцию активации сигмоида на выходе, я, скорее всего, пропущу экстремальные данные, особенно те, которые не видны в тренировочном наборе.
Другим вариантом является использование z-показателя. В этом случае у меня нет крайней проблемы с данными; однако я ограничен линейной функцией активации на выходе.
Каковы другие принятые методы нормализации, которые используются с ANN? Я пытался искать отзывы на эту тему, но не нашел ничего полезного.
источник
Ответы:
Стандартный подход заключается в том, чтобы масштабировать входные данные так, чтобы они имели среднее значение 0 и дисперсию 1. Также очень помогает линейная декорреляция / отбеливание / pca.
Если вы заинтересованы в хитростях этой профессии, я могу порекомендовать вам эффективную бумагу для обратного пропуска LeCun.
источник
1- Мин-макс нормализация сохраняет исходное распределение баллов за исключением коэффициента масштабирования и преобразует все баллы в общий диапазон [0, 1]. Однако этот метод не является надежным (т. Е. Метод очень чувствителен к выбросам.
2- Стандартизация (нормализация по Z-шкале) Наиболее часто используемый метод, который рассчитывается с использованием среднего арифметического и стандартного отклонения данных. Тем не менее, как среднее, так и стандартное отклонение чувствительны к выбросам, и этот метод не гарантирует единого числового диапазона для нормализованных оценок. Кроме того, если входные оценки не распределены по Гауссу, этот метод не сохраняет входное распределение на выходе.
3- Медиана и MAD: Медиана и медиана абсолютного отклонения (MAD) нечувствительны к выбросам и точкам в крайних хвостах распределения. поэтому это надежно. Однако этот метод не сохраняет входное распределение и не преобразует оценки в общий числовой диапазон.
4-оценки тана: оценки тана, представленные Hampel et al. надежны и высокоэффективны. Нормализация дается
где µGH и σGH - это оценки среднего и стандартного отклонения, соответственно, истинного распределения баллов, как это дано оценщиками Hampel.
Поэтому я рекомендую tanh-оценки.
ссылка https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt
источник
Я дал аналогичный ответ здесь. При проведении множественной регрессии, когда вы должны центрировать свои предикторные переменные и когда вы должны стандартизировать их? но думал, что это был достаточно другой контекст, чтобы ответ мог быть здесь.
Существует отличный ресурс usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html.
В простых сроках приводятся некоторые проблемы и соображения, когда нужно нормализовать / стандартизировать / изменить масштаб данных. Поскольку он рассматривает предмет с точки зрения машинного обучения, и поскольку ваш вопрос касается ML, он может иметь некоторое отношение.
источник
Вы могли бы сделать
источник
Если вы работаете
python
,sklearn
есть метод для этого, использующий различные методы в своемpreprocessing
модуле (плюс отличная функция конвейера, с примером в их документах):источник
Ну, [0,1] это стандартный подход. Для нейронных сетей лучше всего работает в диапазоне 0-1. Минимальное-максимальное масштабирование (или нормализация) - подход, которому нужно следовать.
Теперь о выбросах, в большинстве сценариев мы должны их обрезать, поскольку выбросы не являются общими, вы не хотите, чтобы выбросы влияли на вашу модель (если только обнаружение аномалий не является проблемой, которую вы решаете). Вы можете обрезать его, основываясь на эмпирическом правиле 68-95-99.7, или составить прямоугольник, наблюдать и соответственно обрезать его.
Формула MinMax -
(xi - min(x)) / (max(x) - min(x))
или можно использоватьsklearn.preprocessing.MinMaxScaler
источник
«Принято» - это то, что работает лучше для вас - тогда вы принимаете это.
По моему опыту, подгонка распределения из семейства распределений Джонсона к каждой из непрерывных функций работает хорошо, потому что распределения очень гибкие и могут преобразовать большинство одномодальных функций в стандартные нормальные распределения. Это также поможет с мультимодальными функциями, но суть в том, что они обычно помещают функции в наиболее желательную форму (стандартные данные с гауссовским распределением идеальны для работы - они совместимы, а иногда и оптимальны для большинства доступен статистический метод / метод ML).
http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php
источник