Discussão do artigo "Redes Neurais Profundas (Parte II). Desenvolvimento e seleção de preditores"

 

Novo artigo Redes Neurais Profundas (Parte II). Desenvolvimento e seleção de preditores foi publicado:

O segundo artigo da série sobre redes neurais profundas considerará a transformação e seleção dos preditores durante o processo de preparação de dados para treinar um modelo.

Vamos lembrar quais variáveis ​​o conjunto de dados original DT$train contém:

require(funModeling)
plot_num(env$DT$train %>% select(-Data), bins = 20)

FSelect 1

Fig.28. Distribuição de variáveis ​​no conjunto de dados do DT$train

Autor: Vladimir Perervenko

 

É interessante:

Обрезка минимального значения — это простой в использовании алгоритм, при котором на каждом шаге отключаются веса с наименьшим абсолютным значением. Этот алгоритм требует ретрансляции сети практически на каждом шаге и дает субоптимальные результаты.

Estou entendendo corretamente a ordem de operação dessa função?

1) Treinar totalmente a rede 12-8-5-1 original

2) encontrar um link com peso mínimo e remover a entrada

3) Treinar novamente a rede 11-8-5-1 sem a entrada remota

E assim por diante, por várias dezenas de ciclos de retreinamento. Até que não reste mais nenhuma rede 6-2-1-1.

Parece-me que o tempo gasto com essa eliminação de pesos, entradas e neurônios internos insignificantes será muito maior do que um único treinamento completo (que fizemos na etapa 1).

Quais são as vantagens dessa abordagem?

 
elibrarius:

É interessante:

Estou entendendo corretamente a ordem de operação dessa função?

1) Treinar totalmente a rede 12-8-5-1 original

2) encontrar um link com peso mínimo e remover a entrada

3) Treinar novamente a rede 11-8-5-1 sem a entrada remota

E assim por diante, por várias dezenas de ciclos de retreinamento. Até que não reste mais nenhuma rede 6-2-1-1-1.

Parece-me que o tempo gasto com essa eliminação de pesos, entradas e neurônios internos insignificantes será muito maior do que um único treinamento completo (que fizemos na etapa 1).

Quais são as vantagens dessa abordagem?

1- O algoritmo funciona exatamente assim. Com uma exceção: os neurônios em todas as camadas ocultas são descartados.

2. É definido um conjunto mínimo de entradas e uma estrutura mínima que fornece o mesmo resultado que o conjunto completo.

Quais são as vantagens? Removemos todas as coisas desnecessárias que geram classificações falsas. É isso que os desenvolvedores afirmam.

Apenas uma maneira de selecionar preditores importantes

Boa sorte

 
Vladimir Perervenko:

1) O algoritmo funciona exatamente assim. Com uma exceção: os neurônios em todas as camadas ocultas são descartados.

2. Um conjunto mínimo de entradas e uma estrutura mínima são definidos para fornecer o mesmo resultado que o conjunto completo.

Quais são as vantagens? Removemos todas as coisas desnecessárias que geram classificações falsas. É isso que os desenvolvedores afirmam.

Apenas uma maneira de selecionar preditores importantes

Boa sorte

1) Se não houver conexões entre as entradas e os neurônios intrínsecos, então as próprias entradas podem ser desligadas.

2) Estou confuso com o tempo gasto muitas vezes mais do que se você apenas treinasse o modelo completo de acordo com o ponto 1. Se o resultado é o mesmo, por que gastar tanto tempo?

Posso presumir que os preditores eliminados serão ignorados no futuro, quando houver retreinamento/retreinamento, e a economia de tempo será apenas nesse momento. Mas a importância dos preditores também pode mudar com o tempo.

Eu estava interessado nesse truque, pois também comecei a fazê-lo, mas desisti depois de perceber o tempo que ele leva.

Talvez os loops de abandono permitam mais erros e menos épocas de retreinamento do que o treinamento final.


Gostaria de saber qual lógica é usada para filtrar os neurônios ocultos? Cada neurônio tem muitas conexões de entrada. Pela soma mínima dos pesos de entrada? Ou a soma mínima dos pesos de saída? Ou a soma total?

 
elibrarius:

1) Se não houver conexões entre as entradas e os neurônios internos, então as próprias entradas podem ser desligadas.

2) Estou confuso com o fato de consumir muito mais tempo do que se você apenas treinasse o modelo completo de acordo com o ponto 1. Se o resultado é o mesmo, por que perder tanto tempo?

Posso presumir que os preditores eliminados serão ignorados no futuro, quando houver retreinamento/retreinamento, e a economia de tempo será apenas nesse momento. Mas, afinal de contas, a importância dos preditores também pode mudar com o tempo.

Eu estava interessado nesse truque, pois também comecei a fazê-lo, mas desisti depois de perceber o tempo que leva.

Talvez os loops de abandono permitam mais erros e menos épocas de retreinamento do que o treinamento final.


Gostaria de saber qual lógica é usada para filtrar os neurônios ocultos? Cada neurônio tem muitas conexões de entrada. Pela soma mínima dos pesos de entrada? Ou a soma mínima dos pesos de saída? Ou a soma total?

Dê uma olhada no pacote e na descrição da função. Não analisei isso em profundidade. Mas em vários modelos (como o H2O) é assim que eles determinam a importância dos preditores. Acabei de verificar e não achei isso confiável.

É claro que a importância dos preditores muda com o tempo. Mas se você leu meus artigos, deve ter notado que recomendo enfaticamente o retreinamento do modelo regularmente quando a qualidade diminui abaixo de um limite predefinido.

Essa é a única maneira correta. IMHO

Boa sorte

Boa sorte

 
Vladimir Perervenko:

Confira o pacote e a descrição da função. Não estudei isso em profundidade. Mas em vários modelos (por exemplo, H2O) é assim que eles determinam a importância dos preditores. Acabei de verificar e não achei isso confiável.

É claro que a importância dos preditores muda com o tempo. Mas se você leu meus artigos, deve ter notado que recomendo enfaticamente o retreinamento do modelo regularmente quando a qualidade diminui abaixo de um limite predefinido.

Essa é a única maneira correta. IMHO

Boa sorte

Boa sorte

Muito obrigado!
 

Não seria melhor inserir os dados de hora e dia no NS não com um preditor, mas com preditores separados para o número de horas e dias?

Se for um, o peso/valor de segunda-feira (1) e terça-feira (2) será 100% diferente, e o de quinta-feira (4) e sexta-feira (5), 20%. Com as horas 1,2 e 22,23, a diferença é ainda maior. E passar de 5 para 1 ou de 23 para 1 seria um salto enorme no peso total.

Ou seja, haverá distorções na importância dos dias e das horas se eles forem representados por um único preditor.

5 e 24 preditores extras é muito. Mas como a sequência de dias e horas é cíclica, eles podem ser traduzidos em um ângulo em um círculo e fazer a mesma coisa que os ângulos regulares: "Faz mais sentido fornecer o seno e o cosseno desse ângulo como entradas." Ou seja, haverá 2 preditores para horas e dias. A ideia foi tirada daqui http://megaobuchalka.ru/9/5905.html
 
elibrarius:

Não seria melhor inserir os dados de hora e dia no NS não com um preditor, mas com preditores separados para o número de horas e dias?

Se for um, o peso/valor de segunda-feira (1) e terça-feira (2) será 100% diferente, e o de quinta-feira (4) e sexta-feira (5), 20%. Com as horas 1,2 e 22,23, a diferença é ainda maior. E passar de 5 para 1 ou de 23 para 1 seria um salto enorme no peso total.

Ou seja, haverá distorções na importância dos dias e das horas se eles forem representados por um único preditor.

5 e 24 preditores extras é muito. Mas como a sequência de dias e horas é cíclica, eles podem ser traduzidos em um ângulo em um círculo e fazer a mesma coisa que os ângulos regulares: "Faz mais sentido fornecer o seno e o cosseno desse ângulo como entradas." Ou seja, haverá 2 preditores para horas e dias. A ideia é tirada daqui http://megaobuchalka.ru/9/5905.html

A hora do dia e o dia (semana, mês, ano) são variáveis nominais, não numéricas. Só podemos falar sobre o fato de elas serem ordenadas ou não. Portanto, obrigado pela sugestão, mas não aceita.

Usar essas variáveis como variáveis numéricas? Você pode fazer uma experiência, mas não estou olhando nessa direção. Se tiver algum resultado, compartilhe.

Boa sorte

 
Li o artigo e, na primeira parte, há muitas transformações de preditores, o que certamente é informativo, mas eu gostaria de ver dois modelos com e sem transformação para avaliar a eficácia de todas essas transformações. Além disso, qual é o objetivo de se esforçar para obter uma distribuição normal?
 

Discussões e perguntas sobre o código podem ser feitas no tópico

Boa sorte

 
O pacote R funModelling não tem a função "
bayesian_plot()
?

O pacote R funModeling não tem a função "?