Quando normalizar os dados ao usar dois conjuntos de dados da mesma distribuição?


7

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.


Por que essa pergunta tem uma recompensa, mas ainda não há uma resposta satisfatória? Bem, acho que você precisa fornecer mais informações sobre os conjuntos de dados D1 e D2. Qual é a origem (algum processo físico?) E o formato (essa é a matriz 1-d de números?). Conhecer o objetivo (por exemplo, é uma classificação binária?) Também seria útil.
hans

@hans: os dados são basicamente metadados no tráfego da rede (por exemplo, número médio de pacotes / s). O que tento fazer é encontrar anomalias no tráfego. A ideia era que, em uma rede perfeitamente fina, o tráfego normal tivesse algum padrão distinto e que as anomalias causassem um desvio desse padrão.
DocDriven

Respostas:


3

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.


'(...) imagine que dois indivíduos com características idênticas existem em D1 e D2. Você deseja que esses dois indivíduos também sejam idênticos nos conjuntos de dados transformados - não exatamente verdadeiro. Muitas vezes, você faz o oposto: (especialmente se seu conjunto de dados é pequeno), você aumenta os dados para que um exemplo seja apresentado algumas vezes um pouco diferente para um NN.
hans

@hans: então o que você está dizendo é que o método 1 é viável?
DocDriven

@DocDriven Estou dizendo que esse argumento não pode ser usado para rejeitar o método um.
hans

1

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.


Não entendo sua última afirmação. Quais valores iniciais devo levar para quê?
DocDriven 8/08/19

@DocDriven Quando você inicializa uma rede neural, precisa semear valores iniciais para os pesos. A semeadura com pesos de treinamento anterior pode acelerar a reciclagem, embora haja riscos como superajustes.
Acumulação 8/08/19

1

Algumas observações:

  1. 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.

  2. 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)

  3. Treinar em um conjunto de dados embaralhados D3=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 ).

  4. Se novas entradas forem da mesma fonte que D2, normalize-as com média e variação de D2.

  5. A aplicação de sigmóide em valores normalizados pode não ser necessária.


Obrigado por esclarecer isso. Em relação ao ponto 1.), os dois conjuntos de dados são da mesma distribuição: são, mas a média e a variação nem sempre são exatamente iguais à média e à variação da população, por exemplo, existem pequenas diferenças. Isso significa que não importa com quais parâmetros normalizo novas entradas (ponto 4)?
precisa saber é o seguinte

@DocDriven Você está certo, pode haver pequenas diferenças. Se os conjuntos de dados são grandes, as diferenças devem ser pequenas e irrelevantes. Se os conjuntos de dados são pequenos, o principal problema é o tamanho dos conjuntos de dados e como aumentá-los. Quão grandes eles são precisamente?
hans

cerca de 1000 a 2000 amostras por conjunto. Então, suponho que as diferenças devam ser pequenas.
DocDriven

11
Ok, e como os conjuntos são diferentes? Por exemplo, no domínio CV, se eu tivesse dois conjuntos de fotos feitos com câmeras diferentes, normalizaria isso separadamente. Mas se eu tivesse dois conjuntos feitos com a mesma câmera, mas em outros dias, eu os fundiria e normalizaria juntos.
hans
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.