Como normalizar dados para rede neural e floresta de decisão

10

Eu tenho um conjunto de dados com 20000 amostras, cada uma com 12 recursos diferentes. Cada amostra está na categoria 0 ou 1. Quero treinar uma rede neural e uma floresta de decisão para categorizar as amostras para que eu possa comparar os resultados e as duas técnicas.

A primeira coisa que me deparei com a normalização adequada dos dados. Um recurso está no intervalo , outro em [ 30 , 40 ] e há um recurso que geralmente assume o valor 8 e às vezes 7. Então, como eu leio em diferentes fontes, normalização adequada dos dados de entrada é crucial para redes neurais. Como descobri, existem muitas maneiras possíveis de normalizar os dados, por exemplo:[0 0,106][30,40.]

  1. Normalização mínima e máxima : o intervalo de entrada é transformado linearmente no intervalo (ou alternativamente [ - 1 , 1 ][0 0,1 1][-1 1,1 1] , isso importa?)
  2. Normalização do escore Z : os dados são transformados para ter média zero e variação unitária:
    yneW=yoeud-significarVar

Qual normalização devo escolher? A normalização também é necessária para florestas de decisão? Com a normalização do Z-Score, os diferentes recursos dos meus dados de teste não estão no mesmo intervalo. Isso pode ser um problema? Todos os recursos devem normalizar com o mesmo algoritmo, para que eu decida usar o Min-Max para todos os recursos ou o Z-Score para todos os recursos?

Existem combinações em que os dados são mapeados para [-1 1,1 1] e também possuem média zero (o que implicaria uma transformação não linear dos dados e, portanto, uma alteração na variação e outras características dos dados de entrada).

Sinto-me um pouco perdido porque não consigo encontrar referências que respondam a essas perguntas.

Merlin1896
fonte

Respostas:

21

Eu discordo dos outros comentários.

Antes de tudo, não vejo a necessidade de normalizar dados para árvores de decisão . As árvores de decisão funcionam calculando uma pontuação (geralmente entropia) para cada divisão diferente dos dados (XxEu,X>xEu) . A aplicação de uma transformação aos dados que não altera a ordem dos dados não faz diferença.

Florestas aleatórias são apenas um monte de árvores de decisão, portanto, isso não muda essa lógica.

Redes neurais são uma história diferente. Primeiro de tudo, em termos de previsão, não faz diferença. A rede neural pode facilmente contrariar sua normalização, pois apenas dimensiona os pesos e altera o viés. O grande problema está no treinamento.

Se você usar um algoritmo como a retropropagação resiliente para estimar os pesos da rede neural, isso não fará diferença. O motivo é que ele usa o sinal do gradiente, e não sua magnitude, ao alterar os pesos na direção do que minimiza seu erro. Este é o algoritmo padrão para o neuralnetpacote em R, a propósito.

Quando isso faz diferença? Quando você usa a retropropagação tradicional com funções de ativação sigmóide, ela pode saturar o derivado sigmóide.

Considere a função sigmóide (verde) e sua derivada (azul):

sigmóide

s(9999)=0 0

X-minXmaxX-minX-0,5

A normalização real não é muito crucial porque influencia apenas as iterações iniciais do processo de otimização. Desde que esteja centralizado e a maioria dos seus dados esteja abaixo de 1, isso pode significar que você precisará usar um pouco menos ou mais iterações para obter o mesmo resultado. Mas o resultado será o mesmo, desde que você evite o problema de saturação que mencionei.

Há algo não discutido aqui que é regularização . Se você usar regularização na sua função objetivo, a maneira como você normalizar seus dados irá afetar o modelo resultante. Suponho que você já esteja familiarizado com isso. Se você souber que uma variável é mais propensa a causar super ajuste, sua normalização dos dados deve levar isso em consideração. É claro que isso é completamente independente do uso de redes neurais.

Ricardo Cruz
fonte
2
  1. Não há uma resposta clara . O que eu recomendaria seria dimensionar seus dados usando abordagens diferentes e, em seguida, usar o mesmo modelo para prever resultados em seu conjunto de validação (os RFs funcionariam bem aqui). Isso deve mostrar pelo menos qual abordagem de dimensionamento é melhor no seu problema de previsão.
  2. Você não precisa escalar seus dados para florestas aleatórias
  3. Os intervalos individuais não devem ser um problema, desde que sejam dimensionados de maneira consistente. Isso está apenas ilustrando que existem diferenças entre as variáveis, apenas em uma escala mais compacta do que antes.
  4. Sim - todos os seus dados devem ser dimensionados com a mesma abordagem. Caso contrário, os valores no seu conjunto de dados transformado podem estar relacionados não aos dados em si, mas ao algo usado para dimensionar.

Espero que isso ajude.

plumbus_bouquet
fonte
11
Ótima resposta, gostaria de acrescentar que isso depende um pouco da distribuição específica de dados com a qual você está lidando e se está removendo outliers. Os dados normais ficarão muito bons se você os padronizar. No entanto, uma distribuição uniforme pode parecer muito melhor com a normalização mín / máx. Além disso, uma distribuição normal de log com sigma = 10 pode ocultar muito do comportamento interessante próximo a zero se você o normal / mínimo.
AN6U5
@ AN6U5 - Ponto muito bom. Sinceramente, não pensei muito nos impactos do dimensionamento em diferentes distribuições / discrepâncias subjacentes. Pode ler esta manhã!
Plumbus_bouquet