Лучшие практики для предварительной обработки числовых данных для входов DNN - PullRequest
0 голосов
/ 28 октября 2019

У меня есть куча разно масштабированных числовых входов. Некоторые из этих входов либо с нормальным, либо с плоским распределением, но группа этих входов имеет другие распределения вероятностей. Я хочу передать эти данные в DNN. Я понимаю, что есть несколько вариантов потенциальной предварительной обработки, но я не уверен, что выбрать / литературу по теме. Насколько я вижу, у меня есть несколько вариантов:

  1. Не обрабатывать данные каким-либо образом и не добавлять слои нормализации в DNN
  2. Не обрабатывать данные, новыполнить пакетную нормализацию на входе
  3. Не выполнять предварительную обработку данных, но применять обучаемое линейное преобразование по элементам (т.е. элементный топор + b)
  4. Предварительная обработка путем сжатия между мин / макс (возможно, делать это толькодля полностью распределенных данных?)
  5. Нормализация по среднему значению / std (возможно, сделать это только для нормально распределенных данных?)
  6. Отображение в процентиль

Есть ли литература/ сравнение производительности между различными методами? Должен ли я посмотреть распределение для каждой переменной и выбрать преобразование в зависимости от типа распределения? Если я выбираю, основываясь на типе распределения, есть ли метрики для того, чтобы сказать, что что-то "плоское" или "нормальное" достаточно (например, вычислить расхождение KL от идеально распределенных данных)? Я нахожусь в довольно большом режиме данных (~ 15 млн. Примеров для большинства функций)

Этот набор данных имеет много числовых особенностей, и многие из них не распределены нормально / равномерно, поэтому было бы больно грубо пытаться использовать различные комбинации предварительной обработки.

...