Interpréter la sortie du réseau neuronal dans R?

8

J'ai réussi à créer un réseau neuronal de mes données. Mais je ne suis pas sûr de l'interprétation de la sortie R. J'ai utilisé la commande suivante pour créer un réseau neuronal:

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

Ensuite, j'ai utilisé la commande suivante pour voir la sortie:

    > 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

Donc, à partir de la sortie ci-dessus, puis-je conclure le diagramme suivant du réseau neuronal?: net

La deuxième question est de savoir comment puis-je savoir à quel point ce diagramme est utile? Je veux dire que je voulais trouver le numéro de catégorie (variable cible) à partir des variables indépendantes. Alors maintenant, comment puis-je décider si ce réseau m'a vraiment aidé à prédire la catégorie (variable cible)? Quel est le résultat final ou comment le trouver?

Puis-je conclure la sortie suivante du réseau n ci-dessus? :

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

Cordialement,


la source

Réponses:

6

Votre interprétation semble correcte. Vous pouvez le vérifier vous-même en appelant predictcertaines données et en comparant vos calculs à predict. J'ai d'abord fait cela dans une feuille de calcul, puis j'ai calculé un réseau neuronal R à l'aide de la métaprogrammation .

Soit dit en passant, le package R neuralnetdessine de beaux diagrammes, mais apparemment, il ne prend en charge que la régression (pas la classification?).

Andrew
la source
Andrew, merci pour la réponse. Une autre chose que je voulais discuter de cela car j'ai obtenu une équation: catégorie = -0,46 (iplen) +0,15 (date_time) +0,64 à partir de la sortie nnet. maintenant, puis-je comparer cela avec mon équation de régression que je peux créer après avoir effectué une régression linéaire comme suit: lm (catégorie ~ iplen + date_time), puis l'équation de régression linéaire sera quelque chose comme: catégorie = ß1 (iplen) + ß2 (date_time) + ß0
Ce n'est pas complètement clair, mais la classification peut être obtenue en définissant `linear.output = FALSE` dans le neuralnetpackage. ref
M. Tsjolder
Quelle est la signification des lignes "iter 130 value 119841.088094" et "final value 136242.000000"? Quels sont ces chiffres?
skan
1
@skan: C'est l'optimisation de la descente de gradient
Andrew
5

vous pouvez également utiliser le code suivant pour tracer les résultats 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)

référence: https://beckmw.wordpress.com/tag/nnet/

Fahad Malik
la source
Hm, c'est intéressant, mais ne trame pas très bien dans mon cas (ne semble pas vouloir mettre des informations sur le poids). Pourtant, il est préférable de voter pour avoir plus d'outils que d'en avoir moins!
Ken