Einen Musterdatensatz kann ich hier leider nicht einstellen.
Es sei soviel gesagt, das es sich um ca. 150 Eingangsparameter handelt, welche die Eigenschaften von elektronischen Bauelementen in elektronischen Systemen beschreiben.
Die Ausgangsgroesse ist die Ausbeute eines Produktionsprozesses, an dessen Ende diese 150 Eingangsparameter erfasst werden.
Sowohl Ausgangs/Eingangsgroessen wuerden vor Einsatz von neuralnet normiert.
Im folgenden zu sehen in der ersten Zeile des Codes.
Code: Alles auswählen
#Bilde Formel mit Ausgang/Eingaengen fuer das Neuralnet Kommando
#Yield ist die Ausgangsgroesse.
#cnp1 eine Liste der Eingangsparameter
a <- as.formula(paste("yield1 ~ ",paste(cnp1,collapse = "+")))
#An den Parametern des Neuralnet KOmmandos ist (noch) nicht viel besonderes
#Die Resultate mit meinem Musterdatensatz (800 Zeilen) sind dennoch sehr gut.
f1 <- neuralnet(a,data=all1,hidden=c(100),rep=10)
Die Anwendung von “compute” auf den Musterdatensatz (das trainierte Netz f1 benuetzend) bringt Resultate, die Derart gut sind, das es schon fast unheimlich ist.
Code: Alles auswählen
#Durchfuehrung compute mit allen Spalten des Musterdatensatzes ausser der ersten (Ausgangsgroesse)
netres <- compute(f1,all1[,2:n_cn1])
Der Praediktion Zukünftiger Ausbeuten mit Hilfe der genannten Eingangsparameter.
Aber :
Trainiere ich das Netz mit nur 600 von 800 Zeilen und wende dann f1 auf die nicht zum trainieren verwendeten Zeilen an, ist die Abweichung von den Ausgangswerten im Musterdatensatz (also den sollwerten) und dem, was mit Hilfe des so trainierten Netzes generiert wird, beträchtlich sind.
Da ein tatsaechlicher Zusammenhang zwischen den Eingangs - und Ausgangsgroesse besteht und immerhin 75% des Urspruenglichen Datensatzers zum Training verwendet wurden, haette ich bessere Resultate erwartet (bzw erhofft).
Besagtes Verhalten sehe ich auch mit einer größeren Anzahl von Hidden Layern (bisher habe ich 1-3 Hiddensee layer probiert).
Ich frage mich nun, was die Ursache dieses Verhaltens ist.
Möglichkeiten, welche ich aktuell sehe :
- Etliche der Eingangsgroessen stehen nicht wirklich in Zusammenhang mit der Ausgangsgroesse und behindern auf eine mir nicht bekannte Art die Korrekte Funktion des Netzes
Das Training bringt zwar vordergründig gute Ergebnisse, ist aber nicht wirklich gute Ergebnisse. Moegliche Einflussparameter koennten die Lernrate, die Startgewichte der Netze oder der verwendete Lernalgorithmus sein.
- Gibt es Algorithmen (vorzugsweise in R packages vorhanden), um die Startgewichte bei unbefriedigenden Ergebnissen so anzupassen, das sich die Ergebnisse (Abweichung vom Sollwert) verbessern ?
Kann das unbefriedigende Verhalten an einem nicht ausreichend guten Lernalgorithmus liegen. Welchen wuerdet ihr favoritisieren.
Ich habe im Rahmen meiner Recherche vom Netz von Verfahrensweisen gelesen, bei welchen die Eingangsdaten “Vorbehandelt werden (keine Normierung, sondern anderes). Koennte darin die Loesung liegen ?
Das beobachte Problem entspricht wohl einer “Ueberanpassung” den Netzwe
Als zusätzliche Optionen böten sich daher vermutlich eine variation der Anzahl der Epochen wie auch eine Variation der Anzahl der Neuronen pro Hidden Layer an.
Das werde ich wohl ausprobieren... wäre aber natürlich dennoch dankbar für Inputs von anderer Seite.
Zb was die Minimierung des Aufwandes zur Bestimmung eines Optimums betrifft.
Gruss,
Christoph