Interpretation der neuronalen Netzwerkausgabe in R?

8

Ich habe es geschafft, ein neuronales Netzwerk meiner Daten zu erstellen. Bei der Interpretation des R-Ausgangs bin ich mir aber nicht so sicher. Ich habe den folgenden Befehl verwendet, um ein neuronales Netzwerk zu erstellen:

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

Dann habe ich folgenden Befehl verwendet, um die Ausgabe zu sehen:

    > 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

Kann ich aus der obigen Ausgabe das folgende Diagramm des neuronalen Netzwerks schließen?: Netz

Die zweite Frage ist, wie kann ich wissen, wie nützlich dieses Diagramm ist? Ich meine, ich wollte die Kategorienummer (Zielvariable) aus den unabhängigen Variablen finden. Wie kann ich nun entscheiden, ob dieses Netzwerk mir wirklich geholfen hat, die Kategorie (Zielvariable) vorherzusagen? Was ist die endgültige Ausgabe oder wie findet man das?

Kann ich die folgende Ausgabe des obigen n-Netzwerks abschließen? ::

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

Grüße,


quelle

Antworten:

6

Ihre Interpretation sieht richtig aus. Sie können dies selbst überprüfen, indem Sie predicteinige Daten aufrufen und Ihre Berechnungen mit vergleichen predict. Ich habe dies zuerst in einer Tabelle gemacht und dann mithilfe der Metaprogrammierung ein neuronales R-Netzwerk berechnet .

Das R-Paket neuralnetzeichnet übrigens schöne Diagramme, unterstützt aber anscheinend nur die Regression (keine Klassifizierung?).

Andrew
quelle
Andrew, danke für die Antwort. Eine weitere Sache wollte ich diskutieren, als ich eine Gleichung erhielt: category = -0.46 (iplen) +0.15 (date_time) +0.64 von der nnet-Ausgabe. Jetzt kann ich dies mit meiner Regressionsgleichung vergleichen, die ich nach der linearen Regression wie folgt erstellen kann: lm (Kategorie ~ iplen + date_time) und dann lautet die lineare Regressionsgleichung wie folgt: category = ß1 (iplen) + ß2 (date_time) + ß0
Es ist nicht ganz klar, aber die Klassifizierung kann durch Setzen von "linear.output = FALSE" im neuralnetPaket erreicht werden. ref
Herr Tsjolder
Was bedeutet die Zeilen "iter 130 value 119841.088094" und "final value 136242.000000"? Was sind das für Zahlen?
Skan
1
@skan: Das ist die Optimierung des Gradientenabstiegs
Andrew
5

Sie können auch den folgenden Code zum Zeichnen von nnet-Ergebnissen verwenden

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)

Referenz: https://beckmw.wordpress.com/tag/nnet/

Fahad Malik
quelle
Hm, das ist interessant, aber in meinem Fall nicht sehr gut gezeichnet (scheint keine Gewichtsinformationen zu wollen). Upvoting, da mehr Tools vorhanden sind, ist besser als weniger!
Ken