Der Rat, den ich geben würde, ist wie folgt:
Schöpfen Sie die Möglichkeiten linearer Modelle (z. B. logistische Regression) aus, bevor Sie zu neuronalen Netzen übergehen, insbesondere wenn Sie viele Funktionen und nicht zu viele Beobachtungen haben. Bei vielen Problemen übertrifft ein neuronales Netz einfache lineare Klassifikatoren nicht. Der einzige Weg, um herauszufinden, ob Ihr Problem in dieser Kategorie liegt, besteht darin, es auszuprobieren und zu sehen.
Untersuchen Sie zunächst die Kernel-Methoden (z. B. Support Vector Machines (SVM), logistische Kernel-Regression) und die Gaußschen Prozessmodelle. In beiden Fällen wird die Überanpassung wirksam durch Einstellen einer kleinen Anzahl von Hyperparametern gesteuert. Bei Kernel-Methoden erfolgt dies häufig durch Kreuzvalidierung, bei Gaußschen Prozessmodellen durch Maximierung der Grenzwahrscheinlichkeit (auch als Bayes'scher "Beweis" für das Modell bezeichnet). Ich habe festgestellt, dass es viel einfacher ist, mit diesen Methoden ein vernünftiges Modell zu erhalten, als mit neuronalen Netzen, da die Mittel zur Vermeidung einer Überanpassung viel einfacher sind.
Wenn Sie wirklich ein neuronales Netzwerk verwenden möchten, beginnen Sie mit einem (regulierten) Radialbasisfunktionsnetzwerk und nicht mit einem Feedforward-Netzwerk vom Typ Multilayer Perceptron (MLP).
Wenn Sie ein MLP verwenden, verwenden Sie Regularisierung. In diesem Fall ist es weniger anfällig für Architekturentscheidungen, z. B. für die Optimierung der Anzahl versteckter Einheiten. Stattdessen müssen Sie nur einen guten Wert für den Regularisierungsparameter auswählen. MacKays Bayesian "Evidence Framework" bietet eine gute Methode zum Festlegen des Regularisierungsparameters. Wenn Sie die Regularisierung verwenden, sind die Anzahl der Beobachtungen und die Anzahl der Variablen weniger ein Problem.
Um eine Überanpassung zu erkennen, führen Sie einfach eine Kreuzvalidierung durch, um die Generalisierungsleistung zu testen.
Bei Klassen mit gleichen Häufigkeiten ist zu beachten, dass das Modell die Minderheitenklasse wahrscheinlich unterschätzt, wenn Sie ein Modell mit einem ausgewogenen Trainingssatz trainieren, die Klassen in den Betriebsdaten jedoch nicht ausgewogen sind. Wenn Sie einen probabilistischen Klassifikator wie eine logistische Regression oder ein neuronales Netzwerk verwenden, können Sie die geschätzten Wahrscheinlichkeiten immer korrigieren, um dies nach dem Training zu berücksichtigen. Wenn Ihr Datensatz sehr unausgewogen ist, würde ich eine unterschiedliche Gewichtung von Mustern aus der positiven und der negativen Klasse empfehlen, wobei die Gewichtungsfaktoren durch Kreuzvalidierung ausgewählt werden.
Wenn die Klassen jedoch sehr unausgeglichen sind, ist es normalerweise so, dass falsch-negative und falsch-positive Fehler Differenzkosten verursachen (z. B. ist bei medizinischen Screeningtests ein falsch-negativer Wert viel schlimmer als ein falsch-positiver Wert). Oft müssen Sie nur die Fehlklassifizierungskosten in die Fehlerfunktion einbeziehen, die zum Trainieren des Netzwerks verwendet wird.
Wenn Sie ein MATLAB-Benutzer sind (wie ich), kann ich die NETLAB-Software (Ian Nabney und Chris Bishop) oder die Software, die zum Buch Gaußscher Prozess für maschinelles Lernen von Rasmussen und Williams gehört, wärmstens empfehlen. Ich kann das Buch "Neuronale Netze zur Mustererkennung" von Chris Bishop auch jedem empfehlen, der mit neuronalen Netzen anfängt. Es ist ein brillantes Buch, das das Material mit großer Klarheit und einem Mindestmaß an Mathematik abdeckt, um wirklich zu verstehen, was Sie tun, und das meiste davon ist in der NETLAB-Software implementiert (die möglicherweise auch unter Octave ausgeführt wird).
HTH
PS Die beste Methode zur Modellierung mit einem neuronalen Netz ist wahrscheinlich die Verwendung eines Bayes'schen Ansatzes, der auf dem von Radford Neal entwickelten Hybrid Monte Carlo (HMC) basiert. Im Allgemeinen beginnen Probleme bei der Modellierung, wenn Sie versuchen, einige Parameter zu optimieren, und am Ende eine Überanpassung auftreten. Die beste Lösung ist, niemals etwas zu optimieren und stattdessen über Parameter hinweg an den Rand zu setzen (zu integrieren). Da diese Integration leider nicht analytisch durchgeführt werden kann, müssen Sie stattdessen Stichprobenansätze verwenden. Dies ist jedoch (a) rechenintensiv und (b) ein bisschen "schwarze Kunst" und erfordert tiefes Verständnis und Erfahrung.