Как нормализовать данные для нейронной сети и леса принятия решений


10

У меня есть набор данных с 20000 сэмплами, каждый имеет 12 различных функций. Каждая выборка относится к категории 0 или 1. Я хочу обучить нейронную сеть и лес решений для классификации выборок, чтобы можно было сравнить результаты и оба метода.

Первое, на что я наткнулся, это правильная нормализация данных. Одна особенность находится в диапазоне [0,106] , другая - в [30,40] и есть одна особенность, которая в основном принимает значение 8, а иногда и 7. Так как я читаю в разных источниках, правильная нормализация входных данных имеет решающее значение для нейронных сетей. Как я выяснил, существует множество возможных способов нормализации данных, например:

  1. Min-Max Normalization : входной диапазон линейно преобразуется в интервал [0,1] (или, альтернативно, [1,1] , это имеет значение?)
  2. Нормализация Z-показателя : данные преобразуются, чтобы иметь нулевое среднее значение и единичную дисперсию:
    ynew=yoldmeanVar

Какую нормализацию выбрать? Нужна ли нормализация для принятия решений? С нормализацией Z-Score различные характеристики моих тестовых данных не лежат в одном диапазоне. Может ли это быть проблемой? Должна ли каждая функция нормализоваться по одному и тому же алгоритму, чтобы я решил либо использовать Min-Max для всех функций, либо Z-Score для всех функций?

[1,1]

Я чувствую себя немного потерянным, потому что я не могу найти ссылки, которые отвечают на эти вопросы.

Ответы:


21

Я не согласен с другими комментариями.

(Xxi,X>xi)

Случайные леса - это просто набор деревьев решений, поэтому это не меняет этого обоснования.

Нейронные сети - это отдельная история. Прежде всего, с точки зрения прогнозирования, это не имеет значения. Нейронная сеть может легко противостоять вашей нормализации, поскольку она просто масштабирует веса и изменяет смещение. Большая проблема в обучении.

Если вы используете такой алгоритм, как упругое обратное распространение, для оценки весов нейронной сети, то это не имеет значения. Причина в том, что он использует знак градиента, а не его величину, при изменении весов в направлении того, что минимизирует вашу ошибку. neuralnetКстати, это алгоритм по умолчанию для пакета в R.

Когда это имеет значение? Когда вы используете традиционное обратное распространение с функциями активации сигмоида, оно может насытить производное сигмоида.

Рассмотрим сигмовидную функцию (зеленый) и ее производную (синий):

сигмоид

s(9999)=0

XminXmaxXminX0.5

Фактическая нормализация не очень важна, потому что она влияет только на начальные итерации процесса оптимизации. Пока он центрирован и большая часть ваших данных меньше 1, это может означать, что вам придется использовать чуть меньше или больше итераций, чтобы получить тот же результат. Но результат будет таким же, если вы избежите проблемы насыщения, о которой я говорил.

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


2
  1. Нет четкого ответа . Я бы порекомендовал бы масштабировать ваши данные, используя разные подходы, а затем использовать ту же модель для прогнозирования результатов в вашем наборе несогласных (здесь бы отлично работали RF). Это должно как минимум показать вам, какой подход масштабирования является лучшим в вашей проблеме прогнозирования.
  2. Вам не нужно масштабировать данные для случайных лесов
  3. Отдельные диапазоны не должны быть проблемой, если они последовательно масштабируются с самого начала. Это просто показывает, что есть различия между переменными, только в более компактном масштабе, чем раньше.
  4. Да, все ваши данные должны масштабироваться с использованием одного и того же подхода. В противном случае значения в преобразованном наборе данных могут относиться не к самим данным, а к алгоритму, используемому для масштабирования.

Надеюсь, это поможет.


1
Отличный ответ, я бы просто добавил, что это немного зависит от конкретного распределения данных, с которыми вы имеете дело, и от того, удаляете ли вы выбросы. Нормальные данные будут выглядеть очень хорошо, если вы их стандартизируете. Тем не менее, равномерное распределение может выглядеть намного лучше с минимальной / максимальной нормализацией. Кроме того, нормальное логарифмическое распределение с сигма = 10 может скрыть большую часть интересного поведения, близкого к нулю, если вы мин / макс нормализуете его.
AN6U5

@ AN6U5 - Очень хорошая мысль. Честно говоря, я не особо задумывался о влиянии масштабирования на различные базовые распределения / выбросы. Могу прочитать это сегодня утром!
plumbus_bouquet
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.