Suponha que você tenha dois conjuntos de dados D1 e D2. Ambos são amostrados da mesma distribuição subjacente X. Quero usá-los para treinar uma rede neural. Os recursos são todos os números inteiros não assinados no intervalo [0; 2 ^ 64].
Devido ao fato de os recursos estarem em escalas muito diferentes, decidi usar a normalização do escore z em conjunto com uma função sigmóide. Isso significa que eu alimento os dados normalizados do z-score para a função logística para mapear os recursos para o [0; 1] intervalo.
Neste ponto, não tenho certeza em qual ponto normalizar os dados.
1.) Eu uso D1 e normalizo com mean_1 e std_dev_1, que são obtidos considerando apenas D1. Repito o processo para D2 e normalizo usando mean_2 e std_dev_2. Depois, treino a rede com os dois conjuntos de dados sequencialmente.
2.) Eu adiciono D1 e D2 para obter um conjunto D3 e normalizo-o calculando mean_3 e std_dev_3 em todo o conjunto de dados (D1 + D2). Então eu treino a rede com ele.
2 perguntas aqui:
a) Os dois métodos levam a resultados semelhantes? É especialmente importante para mim, pois o D2 pode se tornar disponível mais tarde que o D1 e preciso saber se devo treinar novamente a rede com todo o conjunto de dados.
b) Ao fazer inferência com a rede treinada, quais parâmetros devo usar para normalizar as novas entradas? Então eu tenho que usar mean_3 e std_dev_3 por exemplo?
EDIT: Descobri que a média e o desvio padrão da combinação dos dois conjuntos de dados podem ser calculados a partir da média e do desvio padrão dos originais. Isso significa (em teoria) que eles poderiam ser treinados sequencialmente e seus parâmetros de distribuição poderiam ser combinados para normatizar as entradas para inferência.
fonte
Respostas:
Você deve aplicar a mesma transformação a todos os indivíduos.
Não use o método 1; será tendencioso. Uma maneira fácil de entender isso é imaginar que dois indivíduos com características idênticas existemD1 e D2 . Você deseja que esses dois indivíduos também sejam idênticos nos conjuntos de dados transformados, mas seu método 1 não permite isso.
O método 2 está OK. Se você deseja treinar sequencialmente, outra opção seria aplicar a transformação induzida por mean_1 e std_dev_1 em todos os pontos de dados; Observe, no entanto, que isso pode causar problemas se os pontos de dados futuros forem muito diferentes dos dados emD1 1 .
fonte
Se D1 e D2 são realmente da mesma distribuição, desde que D1 tenha pelo menos algumas centenas de pontos de dados, você não deve ver muita variação na média e no desvio padrão, portanto, normalizar todos os dados com base em D1 não deve representam muito de um problema. A normalização de cada subconjunto de dados com base em sua própria média e desvio padrão significa que seu sobreajuste seguirá mais do tamanho da amostra do subconjunto que do tamanho geral da amostra e, de certa forma, você está apresentando um recurso falso de "qual subamostra fez isso" o ponto de dados vem? ". A normalização dos dados com diferentes meios e std não deve afetar tanto o resultado do treinamento da rede neural quanto o tempo necessário para convergir. Se você estiver preocupado com o último, considere considerar os resultados de um como os valores iniciais para nas próximas.
fonte
Algumas observações:
Se os dois conjuntos de dados forem da mesma distribuição, ambos os procedimentos deverão fornecer o mesmo resultado (como D1 e D2 teriam a mesma média e variação). Mas aparentemente eles não são.
Verifique qual é a média e a variação reais de cada conjunto de dados. Se eles são os mesmos - isso não importa. Se forem diferentes, normalize cada conjunto de dados com sua própria média e variação (método 1)
Treinar em um conjunto de dados embaralhadosD3=D1¯∪D2¯ , onde uma barra significa normalização. Treinar primeiro em um conjunto de dados e depois em outro pode causar muitos problemas e deve ser feito com cautela (consulte o esquecimento catastrófico ).
Se novas entradas forem da mesma fonte que D2, normalize-as com média e variação de D2.
A aplicação de sigmóide em valores normalizados pode não ser necessária.
fonte