Interpretando a saída da rede neural em R?

8

Consegui criar uma rede neural dos meus dados. Mas não tenho tanta certeza sobre a interpretação da saída R. Eu usei o seguinte comando para criar rede neural:

> net=nnet(formula = category~iplen+date_time, size=0,skip=T,lineout=T)
# weights:  3
initial  value 136242.000000 
final  value 136242.000000 
converged

Então eu usei o seguinte comando para ver a saída:

    > summary(net)
a 2-0-1 network with 3 weights
options were - skip-layer connections 
 b->o i1->o i2->o 
 0.64 -0.46  0.15

Portanto, a partir da saída acima, posso concluir o seguinte diagrama da rede neural: internet

A segunda pergunta é como saber se esse diagrama é útil? Quero dizer, eu queria encontrar o número da categoria (variável de destino) das variáveis ​​independentes. agora, como posso decidir se essa rede realmente me ajudou a prever a categoria (variável de destino)? Qual é o resultado final ou como encontrar isso?

Posso concluir a seguinte saída da rede n acima? :

category= -0.46(iplen)+0.15(date_time)+0.64

Saudações,


fonte

Respostas:

6

Sua interpretação parece correta. Você pode verificar você mesmo chamando predictalguns dados e comparando seus cálculos com predict. Primeiro fiz isso em uma planilha e depois calculei uma rede R neural usando metaprogramação .

A propósito, o pacote R neuralnetdesenha diagramas agradáveis, mas aparentemente ele suporta apenas regressão (não classificação?).

Andrew
fonte
Andrew, obrigado pela resposta. Mais uma coisa que eu queria discutir sobre isso ao obter uma equação: category = -0.46 (iplen) +0.15 (date_time) +0.64 da saída nnet. agora posso comparar isso com minha equação de regressão que eu posso criar depois de fazer a regressão linear da seguinte maneira: lm (categoria ~ iplen + date_time) e a equação de regressão linear será algo como: category = ß1 (iplen) + ß2 (date_time) + ß0
Não está completamente claro, mas a classificação pode ser obtida definindo `linear.output = FALSE` no neuralnetpacote. ref
Sr. Tsjolder 11/02
Qual é o significado das linhas "iter 130 value 119841.088094" e "value final 136242.000000"? Quais são esses números?
skan
1
@skan: Essa é a otimização da descida do gradiente #
Andrew # /
5

você também pode usar o seguinte código para plotar resultados da nnet

install.packages("devtools")
library(devtools)
source_url('https://gist.githubusercontent.com/fawda123/7471137/raw/466c1474d0a505ff044412703516c34f1a4684a5/nnet_plot_update.r')

#plot each model
plot.nnet(net)

referência: https://beckmw.wordpress.com/tag/nnet/

Fahad Malik
fonte
Hum, isso é interessante, mas não é muito bom no meu caso (não parece querer colocar informações de peso). Ainda assim, a votação positiva, pois ter mais ferramentas é melhor do que ter menos!
12779 Ken