2016-11-26 10 views
0

У меня есть набор данных с 11 с функцией следующего диапазона:Как нормализовать нейронную сеть backpropagation с несколькими функциями с несколькими диапазонами?

1000001 < feature 1 < 1560504 
10000 < feature 2 < 15151 
1 < feature 3 < 8 
1001 < feature 4 < 3051 
100 < feature 5 < 136 
100 < feature 6 < 323 
1 < feature 7 < 179 
0 < feature 8 < 23 
0 < feature 9 < 60034 
114206 < feature 10 < 5318251 
30 < feature 11 < 356 

и один булевой выход.

Я хочу использовать нейронную сеть backpropagation для этого набора данных.
Как нормализовать ввод?

ответ

0

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

x_i = (x_i - mean(x))/sigma(x) where x is a feature 

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

Если вы используете Scikit и т.д., вы можете использовать стандартные пакеты предварительной обработки: http://scikit-learn.org/stable/modules/preprocessing.html

+0

спасибо большое. Я использую matlab, и в соответствии с вашим результатом я использую zscore (trainData). Он применяет стандартизованную нормализацию z-балла для каждого столбца. но в моем нормированном наборе данных есть отрицательные значения. Это нормально? – lida

+1

Отрицательные значения в порядке (вы используете signoid или tanh в качестве функции активации, диапазон распространяется и в отрицательном домене). Я не использую z-score, потому что он предполагает нормальное распределение ваших функций, и это не может быть правдой. Лучше, imho, линейная нормализация между [0,1] или [-1, 1]. Для вывода нормализуйте линейно в диапазоне выхода функции активации, избегая асимптотической части, где есть незначительное разрешение, а чистые характеристики хуже: [-0,9, 0,9] для tanh или [0,9] для сигмовидной функции. –