Passung von Trainingsdaten
Wichtig zur Beantwortung dieser Fragen ist zunächst das Verständnis vom sogenannten Overfitting, also der Überanpassung eines KNN an die Trainingsdaten. Schauen wir uns noch einmal den Trainingsprozess und das Aktualisieren der Gewichtungsfaktoren der einzelnen Neuronen an. Bei vorgestellten unendlichen Aktualisierungen, also unendlich Trainingsepochen, würden die Zusammenhänge zwischen Eingabe- und Ausgabewerten vom KNN perfekt widergegeben werden können. Das KNN lernt somit die Zusammenhänge der Trainingsdaten auswendig. Häufig kommt dies bei großen KNN vor, da durch die Vielzahl der Gewichtungsfaktoren der Neuronen eine Vielzahl an Zusammenhängen dargestellt werden kann. Die folgende Abbildung zeigt diese (Über)anpassung an die Trainingsdaten für unterschiedliche Anwendungsfälle von KNN (mehr dazu im nächsten Abschnitt). Dargestellt ist neben der Überanpassung/Overfitting auch die Unteranpassung/Underfitting, was vor allem bei zu wenig Trainingsepochen und/oder zu kleinen KNN vorkommt. Unser Ziel ist immer, eine Optimalanpassung/optimal fitting zu erreichen.
Zum optimalen Anpassen eines KNN an die jeweilige Aufgabe ist es wichtig, die vorhandenen historischen Daten in einen Trainingsdatensatz und einen davon unabhängigen Testdatensatz aufzuteilen. Außerdem ist es möglich, zusätzlich einen Validierungsdatensatz von den historischen Daten abzugrenzen. Die Aufgaben dieser drei Datensätze sind die Folgenden:
- Trainingsdatensatz: Anhand dieser Trainingsdaten wird, wie der Name vermuten lässt, das Training der Gewichtungsfaktoren der Neuronen des KNN durchgeführt. Die zuvor erarbeitete Aktualisierung für eine festgelegte Anzahl an Trainingsepochen wird mit diesen Trainingsdaten durchgeführt.
- Testdatensatz: Die Testdaten werden im Trainingsprozess auf keinen Fall verwendet und dienen der Überprüfung, ob im Trainingsprozess die gewünschten Zusammenhänge vom KNN erlernt und generalisiert werden konnten. Dieser Testdatensatz muss groß genug sein, um stochastische Unterschiede zum Trainingsdatensatz zu vermeiden, und darf keinerlei Abhängigkeiten zum Trainingsdatensatz haben, da diese sonst ja bereits im Trainingsprozess erlernt werden könnten. Der Testdatensatz dient somit der Simulation der realen Anwendung, und wird häufig erst nach dem Training des KNN erstellt und dabei getestet.
- Validierungsdatensatz: Es ist zusätzlich möglich einen Validierungsdatensatz von den historischen Daten abzugrenzen. Dieser muss genau wie der Testdatensatz aufgebaut sein (keine Abhängigkeiten mit dem Trainingsdatensatz, ausreichende Größe). Anders als der Testdatensatz wird der Validierungsdatensatz bereits im Trainingsprozess verwendet um die Performance des KNN, also die Entwicklung des Fehlers des KNN überwachen zu können. Das Ziel des Trainingsprozesses ist die Reduzierung des Fehlers des KNN. Bei einer Überanpassung/Overfitting des KNN an die Trainingsdaten kann dies durch einen ansteigenden Fehler des KNN auf den Validierungsdaten erkannt werden. Zumeist wird bei einem solchen Anstieg der Trainingsprozess abgebrochen um eine Überanpassung an die Trainingsdaten zu verhindern.