Normalização e padronização de dados em redes neurais

40

Estou tentando prever o resultado de um sistema complexo usando redes neurais (RNAs). Os valores do resultado (dependentes) variam entre 0 e 10.000. As diferentes variáveis ​​de entrada têm intervalos diferentes. Todas as variáveis ​​têm distribuições aproximadamente normais.

Considero diferentes opções para dimensionar os dados antes do treinamento. Uma opção é dimensionar as variáveis ​​de entrada (independentes) e de saída (dependentes) para [0, 1] calculando a função de distribuição cumulativa usando os valores de média e desvio padrão de cada variável, independentemente. O problema com este método é que, se eu usar a função de ativação sigmóide na saída, provavelmente perderei dados extremos, especialmente aqueles não vistos no conjunto de treinamento

Outra opção é usar um z-score. Nesse caso, não tenho o problema extremo dos dados; no entanto, estou limitado a uma função de ativação linear na saída.

Quais são outras técnicas de normalização aceitas que estão sendo usadas com RNAs? Tentei procurar opiniões sobre este tópico, mas não encontrei nada útil.

Boris Gorelik
fonte
Às vezes, a normalização dos escores Z é usada, mas tenho uma sensação engraçada de que pode ser o outro nome para a resposta do bayer?
osknows
É o mesmo, exceto na parte de clareamento.
bayerj
1
Se você está prevendo um valor (como está) em vez de uma probabilidade (isto é, regressão em vez de classificação), deve sempre usar uma função de saída linear.
precisa saber é
Rank-Gauss, de Michael Jahrer . É posto, em seguida, torná-lo gaussiano.
user3226167 7/08

Respostas:

32

Uma abordagem padrão é dimensionar as entradas para ter média 0 e uma variação de 1. Também a correlação linear / branqueamento / pca ajuda muito.

Se você estiver interessado nos truques do comércio, posso recomendar o eficiente papel de backprop da LeCun.

bayerj
fonte
1
Obviamente, nunca se deve tentar normalizar cegamente os dados se os dados não seguirem uma distribuição normal (única). stats.stackexchange.com/a/816/4581
user4581
24
Com redes neurais você precisa. Caso contrário, você saturará imediatamente as unidades ocultas, então seus gradientes estarão próximos de zero e nenhum aprendizado será possível. Não se trata de modelagem (as redes neurais não assumem nenhuma distribuição nos dados de entrada), mas de questões numéricas.
bayerj
Estou bastante confuso. Este link ( machinelearningmastery.com/… ) diz que a padronização é útil quando o algoritmo que você está usando faz suposições sobre seus dados com uma distribuição gaussiana (não é o caso da NN). Caso contrário, ele diz que você deve usar a Normalização. Alguém pode me esclarecer?
Ihebiheb
21

1- A normalização mín-máx mantém a distribuição original das pontuações, exceto por um fator de escala, e transforma todas as pontuações em um intervalo comum [0, 1]. No entanto, esse método não é robusto (ou seja, o método é altamente sensível a valores discrepantes).

2- Padronização (normalização do escore Z) A técnica mais usada, calculada usando a média aritmética e o desvio padrão dos dados fornecidos. No entanto, tanto o desvio médio quanto o padrão são sensíveis aos valores discrepantes, e essa técnica não garante uma faixa numérica comum para os escores normalizados. Além disso, se as pontuações de entrada não forem distribuídas gaussianas, essa técnica não reterá a distribuição de entrada na saída.

3- Mediana e MAD: A mediana e o desvio médio absoluto (MAD) são insensíveis aos valores extremos e aos pontos nas caudas extremas da distribuição. portanto, é robusto. No entanto, essa técnica não retém a distribuição de entrada e não transforma as pontuações em um intervalo numérico comum.

4- estimadores tanh: Os estimadores tanh introduzidos por Hampel et al. são robustos e altamente eficientes. A normalização é dada por

estimadores de tanh onde μGH e σGH são as estimativas de média e desvio padrão, respectivamente, da distribuição de pontuação genuína, conforme fornecido pelos estimadores de Hampel.

Portanto, recomendo os estimadores de tanh.

referência https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt

Ahmad Hassanat
fonte
Estou com dificuldade para encontrar informações sobre esse estimador de tanh. Alguém pode lançar alguma luz sobre isso?
Ben Ogorek 6/10
Finalmente, encontrei um artigo que descreve bem os estimadores tanh para normalização: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Eles não parecem viáveis ​​como uma opção de normalização de uso geral. "[Estimadores de Tanh] são muito mais complicados de calcular, em comparação com os escores-z adaptativos ... Os pontos de cauda para três intervalos diferentes da pontuação média da distribuição devem ser definidos de uma maneira ad hoc. Esses parâmetros podem ser difíceis. determinar experimentalmente e, se escolhido incorretamente, limitar a eficácia dos estimadores de tanh. "
Ben Ogorek
8

Dei uma resposta semelhante aqui Ao realizar uma regressão múltipla, quando você deve centralizar suas variáveis ​​preditoras e quando deve padronizá-las? mas achava que era um contexto suficientemente diferente para que uma resposta pudesse chegar aqui.

Existe um ótimo recurso da usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

Em termos simples, fornece alguns dos problemas e considerações quando se deseja normalizar / padronizar / redimensionar os dados. Como trata o assunto de uma perspectiva de aprendizado de máquina, e como sua pergunta é ML, ela pode ter alguma relevância.

Paulo
fonte
Você deve escrever os pontos principais de cada links, por isso não há necessidade de "navegação" adicional
leoschet
2

Você poderia fazer

  • normalização min-max (normalize entradas / metas para cair no intervalo [-1,1]), ou
  • normalização do desvio médio-padrão (Normalizar entradas / metas para ter média zero e variação da unidade / desvio padrão)
prashanth
fonte
1

Se você estiver trabalhando python, sklearnpossui um método para fazer isso usando diferentes técnicas em seu preprocessingmódulo (além de um recurso de pipeline bacana, com um exemplo em seus documentos):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)
ryanjdillon
fonte
0

Bem, [0,1] é a abordagem padrão. Para redes neurais, funciona melhor no intervalo de 0 a 1. A escala Min-Max (ou Normalização) é a abordagem a seguir.

Agora, nos discrepantes, na maioria dos cenários, precisamos recortá-los, já que discrepantes não são comuns, você não deseja que os discrepantes afetem seu modelo (a menos que a detecção de anomalias seja o problema que você está resolvendo). Você pode recortá-lo com base na regra empírica de 68-95-99.7 ou fazer um gráfico de caixa, observar e recortá-lo.

Fórmula MinMax - (xi - min(x)) / (max(x) - min(x)) ou pode usarsklearn.preprocessing.MinMaxScaler

D Intocável
fonte
-1

"Aceito" é o que funciona melhor para você - então você o aceita.

Na minha experiência, ajustar uma distribuição da família de distribuições Johnson para cada um dos recursos contínuos funciona bem porque as distribuições são altamente flexíveis e podem transformar a maioria dos recursos uni-modais em distribuições normais padrão. Também ajudará com recursos multimodais, mas o ponto é que geralmente os coloca da forma mais desejável possível (os dados distribuídos gaussianos padrão são ideais para trabalhar - são compatíveis e, às vezes, ideais para quase todos os método estatístico / ML disponível).

http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php

JPJ
fonte