{"id":7215,"date":"2021-08-01T14:09:23","date_gmt":"2021-08-01T14:09:23","guid":{"rendered":"https:\/\/rocketloop.de\/?p=7215"},"modified":"2021-09-08T15:51:57","modified_gmt":"2021-09-08T15:51:57","slug":"model-validation-overfitting-underfitting","status":"publish","type":"post","link":"https:\/\/rocketloop.de\/de\/blog\/modellvalidierung-overfitting-underfitting\/","title":{"rendered":"Modellvalidierung: Problembereiche und L\u00f6sungen - Overfitting und Underfitting"},"content":{"rendered":"<p class=\" translation-block\">Beim <a href=\"https:\/\/rocketloop.de\/de\/blog\/was-ist-machine-learning\/\">Machine Learning<\/a> geht es um die Verwendung und Entwicklung von Computersystemen, die in der Lage sind, zu lernen und sich anzupassen, ohne dabei explizite Anweisungen zu befolgen. Daf\u00fcr verwenden sie Algorithmen und statistische Modelle, um Muster in Daten zu analysieren und daraus eigenst\u00e4ndig R\u00fcckschl\u00fcsse f\u00fcr zuk\u00fcnftige Analysen zu ziehen. Die Ergebnisse eines solchen Modelltrainings k\u00f6nnen in weiterer Folge f\u00fcr die Erstellung von Vorhersagen (mit unbekannten Daten) verwendet werden.<\/p>\n\n\n\n<p class=\" translation-block\">Ein Modell ist eine destillierte Darstellung dessen, was ein maschinelles Lernsystem gelernt hat. Ein solches ist mit mathematischen Funktionen vergleichbar:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Es nimmt eine Anfrage in Form von Eingabedaten entgegen,<\/li><li>trifft eine Vorhersage zu diesen<\/li><li>und liefert aufgrund von dieser wiederum eine Antwort auf eine bestimmte Fragestellung.<\/li><\/ol>\n\n\n\n<p class=\" translation-block\">Das Programmieren und Trainieren (mit bekannten Datens\u00e4tzen) des Algorithmus ist dabei der erste wichtige Schritt. Die \u00dcberpr\u00fcfung, ob er auch f\u00fcr unbekannte Datens\u00e4tze - und damit in der Praxis - angewandt werden kann, der zweite. Denn nur durch diese \u00dcberpr\u00fcfung wissen wir anschlie\u00dfend, ob das Modell tats\u00e4chlich funktioniert und wir seinen Vorhersagen vertrauen k\u00f6nnen. Ansonsten k\u00f6nnte es sein, dass der Algorithmus die Daten, mit denen er gef\u00fcttert wird, lediglich auswendig lernt (Overfitting \/ \u00dcberanpassung) und in weiterer Folge nicht in der Lage ist, zuverl\u00e4ssige Vorhersagen f\u00fcr ihm unbekannte Datens\u00e4tze zu treffen.<\/p>\n\n\n\n<p>In diesem Beitrag zeigen wir dir zwei der h\u00e4ufigsten Probleme der Modellvalidierung auf: Das Overfitting und Underfitting. Sowie, wie du diese vermeiden kannst.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Inhaltsverzeichnis:<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"#section-one\" data-type=\"internal\" data-id=\"#section-one\">Was ist Modellvalidierung (und zu was dient sie)?<\/a><\/li><li><a href=\"#section-two\" data-type=\"internal\" data-id=\"#section-two\">Was bedeutet Overfitting (und Underfitting)?<\/a><\/li><li><a href=\"#section-three\" data-type=\"internal\" data-id=\"#section-three\">Wie kann Overfitting und Underfitting reduziert werden?<\/a><\/li><li><a href=\"#section-four\" data-type=\"internal\" data-id=\"#section-four\">Welche Methoden zur Modellvalidierung gibt es?<\/a><ol><li><a href=\"#section-four-one\" data-type=\"internal\" data-id=\"#section-four-one\">Train-Test-Split<\/a><\/li><li><a href=\"#section-four-two\">k-Fold Cross-Validation (k-Fold CV)<\/a><\/li><li><a href=\"#section-four-three\">Leave-One-Out Cross-Validation (LOOCV)<\/a><\/li><li><a href=\"#section-four-four\">Nested Cross-Validation (verschachtelte Kreuzvalidierung)<\/a><\/li><\/ol><\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"section-one\">1. Was ist Modellvalidierung (und zu was dient sie)?<\/h2>\n\n\n\n<p id=\"model-validation\" class=\" translation-block\">Definition: Das Verfahren der Modellvalidierung beschreibt den Vorgang, ein statistisches oder datenanalytisches Modell auf seine Performance hin zu \u00fcberpr\u00fcfen.<\/p>\n\n\n\n<p class=\" translation-block\">Sie ist ein wesentlicher Bestandteil des Modellentwicklungsprozesses und hilft dabei, das Modell zu finden, das Deine Daten am besten repr\u00e4sentiert. Au\u00dferdem dient sie dazu abzusch\u00e4tzen, wie gut dieses in der Zukunft funktionieren wird. Diese Bewertung, mit den f\u00fcr das Training verwendeten Datens\u00e4tzen durchzuf\u00fchren, ist nicht zielf\u00fchrend, da dadurch leicht \u00fcberoptimistische und \u00fcberangepasste Modelle erzeugt werden k\u00f6nnen (Overfitting).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"section-two\"><strong>2. Was bedeutet Overfitting (und Underfitting)?<\/strong><\/h2>\n\n\n\n<p id=\"overfitting-underfitting\" class=\" translation-block\">Overfitting (deutsch: \u201e\u00dcberanpassung\u201c) bezieht sich auf ein Modell, das die Trainingsdaten zu gut modelliert. Sprich, dass es zu speziell an seinen Trainingsdatensatz angepasst ist.<\/p>\n\n\n\n<p class=\" translation-block\">\u00dcberanpassung tritt dann auf, wenn ein Modell die Details und das Rauschen (zuf\u00e4llige Schwankungen) in den Trainingsdaten in einem Ausma\u00df erlernt, das sich negativ auf seine Leistung bei neuen \/ unbekannten Daten auswirkt. Das zeigt sich dadurch, dass das Rauschen aufgegriffen und als Konzept gelernt wird. Das Problem hiermit ist, dass diese Konzepte nicht auf neue Daten zutreffen und sich somit negativ auf die Generalisierungsf\u00e4higkeit (Anwendbarkeit auf jeglichen unbekannten Datensatz) des Modells auswirken.<\/p>\n\n\n\n<p class=\" translation-block\">Niedrige Fehlerraten und eine hohe Varianz sind starke Indikatoren f\u00fcr eine \u00dcberanpassung. Sie ist wahrscheinlicher bei <a href=\"https:\/\/link.springer.com\/chapter\/10.10073-540-29305-1_5\">nichtparametrischen und nichtlinearen Modellen<\/a>, die beim Lernen einer Zielfunktion mehr Flexibilit\u00e4t haben. Daher enthalten viele nichtparametrische Algorithmen f\u00fcr maschinelles Lernen Parameter oder Techniken, um einzuschr\u00e4nken, wie viele Details das Modell erlernen soll.<\/p>\n\n\n\n<p>Entscheidungsb&auml;ume sind z. B. ein nichtparametrischer Algorithmus f&uuml;r maschinelles Lernen, der sehr flexibel ist. Bei diesen kommt es deshalb h&auml;ufig zu einer &Uuml;beranpassung der Trainingsdaten. Dieses Problem kann jedoch gel&ouml;st werden, indem ein Baum nach dem Lernen beschnitten wird, um einen Teil der Details zu entfernen, die er w&auml;hrend des Lernprozesses aufgenommen hat.<\/p>\n\n\n\n<p class=\" translation-block\">Au\u00dferdem tritt Overfitting h\u00e4ufig dann auf, wenn der Trainingsdatensatz relativ klein und das Modell gleichzeitig relativ komplex ist. Ein zu komplexes Modell kann die Trainingsdaten n\u00e4mlich schnell zu genau abbilden - umgekehrt bildet ein zu simples Modell die Trainingsdaten schnell zu ungenau ab (hier spricht man von Underfitting \/ Unteranpassung).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"406\" src=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_overfitting_and_underfitting.png\" alt=\"Modellvalidierung_Overfitting_und_Underfitting\" class=\"wp-image-7221\" srcset=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_overfitting_and_underfitting.png 650w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_overfitting_and_underfitting-300x187.png 300w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_overfitting_and_underfitting-16x10.png 16w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption>In dieser Grafik siehst die Probleme, die bei der Modellvalidierung aufgrund von Underfitting und Overfitting im Vergleich zu einem optimalen Modell auftreten.<\/figcaption><\/figure>\n\n\n\n<p class=\" translation-block\">Ein zu einfaches Datenmodell ist in der Regel nicht in der Lage, die Beziehung zwischen den Eingabe- und Ausgabevariablen genau zu erfassen. Dadurch entsteht eine hohe Fehlerrate - sowohl mit den Trainingsdaten als genauso mit unbekannten Datens\u00e4tzen. Eine hohe Verzerrung \/ Fehlerrate in Kombination mit einer geringen Varianz sind in weiterer Folge starke Indikatoren f\u00fcr eine Unteranpassung.<\/p>\n\n\n\n<p class=\" translation-block\">Da dieses Verhalten schon w\u00e4hrend dem Training gut zu sehen ist, sind unterangepasste Modelle in der Regel leichter zu identifizieren als \u00fcberangepasste. Die L\u00f6sung f\u00fcr das Underfitting kann mehr Trainingszeit, ein Mehr an Eingabefunktionen oder weniger Regularisierung sein - doch dazu mehr im n\u00e4chsten Abschnitt.<\/p>\n\n\n\n<p class=\" translation-block\">Sowohl Over- als auch Underfitting f\u00fchren zu einer zu geringen Allgemeing\u00fcltigkeit eines Modells. Falls ein Modell jedoch nicht zuverl\u00e4ssig auf unbekannte Daten angewandt werden kann, dann kann es allerdings genauso wenig f\u00fcr Klassifizierungs- oder Vorhersageaufgaben verwendet werden. Die generalisierte Anwendung eines Modells auf neue Daten ist letztendlich das, was es uns erm\u00f6glicht, Algorithmen f\u00fcr das maschinelle Lernen zu verwenden, um Vorhersagen zu treffen und Daten zu klassifizieren.<\/p>\n\n\n\n<p class=\" translation-block\">Die Herausforderung ist es also, das Modell zwar einerseits so einfach wie m\u00f6glich, jedoch andererseits nicht zu einfach, zu halten. Ein perfektes Modell - das hei\u00dft eines, bei dem es weder zu Over- noch zu Underfitting kommt - ist nahezu unm\u00f6glich zu erstellen. Es gibt jedoch verschiedene Methoden und Werkzeuge, mit welchen diese negativen Effekte mit hoher Wahrscheinlichkeit ausgeschlossen werden k\u00f6nnen. Welche das sind, erf\u00e4hrst du im n\u00e4chsten Kapitel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"section-othree\"><strong>3. Wie kann Overfitting und Underfitting reduziert werden?<\/strong><\/h2>\n\n\n\n<p class=\" translation-block\">Um beim Training eines Modells Over- und Underfitting von vornherein m\u00f6glichst weitgehend auszuschlie\u00dfen gibt es verschiedene Methoden. Die wichtigsten von diesen haben wir dir im Folgenden aufgef\u00fchrt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Overfitting beim Machine Learning verhindern:<\/strong><\/h3>\n\n\n\n<p class=\" translation-block\"><strong>a) K\u00fcrzere Trainingszeit (Early Stopping):<\/strong> Bei dieser Methode brichst du das Training ab, bevor das Modell zu viele Details (inklusive dem Rauschen) des Datensatzes auswendig lernt. Bei diesem Ansatz besteht allerdings die Gefahr, dass der Trainingsprozess zu fr\u00fch gestoppt wird - was wiederum zu dem gegenteiligen Problem der Unteranpassung f\u00fchrt. Den \"Sweet Spot\" zwischen Underfitting und Overfitting zu finden, ist somit das ultimative Ziel.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>b) Mit mehr Daten trainieren:<\/strong> Das Erweitern des Trainingssatzes um mehr Daten kann die Genauigkeit des Modells erh\u00f6hen, indem es ihm mehr M\u00f6glichkeiten bietet, die ma\u00dfgebliche Beziehung zwischen den Eingabe- und Ausgabevariablen herauszufiltern. Allerdings ist dies nur dann eine effektive Methode, wenn du ausschlie\u00dflich saubere und aussagekr\u00e4ftige Daten einspeist. Andernfalls f\u00fcgst du dem Modell nur ein unn\u00f6tiges Mehr an Komplexit\u00e4t hinzu, was schlussendlich erst Recht zu einer \u00dcberanpassung f\u00fchrt.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>c) Datenerweiterung:<\/strong> W&auml;hrend es theoretisch das Beste ist, lediglich saubere und aussagekr&auml;ftige Trainingsdaten anzuwenden, werden manchmal gezielt verrauschte Daten hinzugef&uuml;gt, um ein Modell stabiler zu machen. Diese Methode sollte jedoch sparsam (sowie vor allem nur von erfahrenen Anwendern) eingesetzt werden.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>d) Merkmalsauswahl:<\/strong> Dabei identifizierst du die wichtigsten Merkmale der Trainingsdaten, um anschlie\u00dfend die irrelevanten - und damit \u00fcberfl\u00fcssigen - eliminieren zu k\u00f6nnen. Dies wird h\u00e4ufig mit einer Reduzierung der Dimensionen verwechselt, ist aber ein anderer Ansatz.\u00a0 Beide Methoden helfen dir jedoch dabei ein Modell zu vereinfachen, um den dominanten Trend in den Daten zu ermitteln.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>e) Normalisierung:<\/strong> Diese h\u00e4ngt mit dem vorherigen Punkt der Merkmalsauswahl zusammen, da sie dazu dient, festzulegen, welche Merkmale eliminiert werden sollen. Dazu wendest du eine \"Strafe\" auf die Eingabeparameter mit den gr\u00f6\u00dferen Koeffizienten an, wodurch anschlie\u00dfend die Varianz im Modell begrenzt wird.\u00a0 Es gibt eine Reihe von Normalisierungsmethoden (z. B. L1- und Lasso-Regularisierung oder Dropout) - diese haben jedoch alle dasselbe Ziel: Das Rauschen in den Daten zu identifizieren und zu reduzieren.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>f) Ensemble-Methoden:<\/strong> Diese bestehen aus einem Satz von Klassifikatoren (wie z. B. Entscheidungsb\u00e4umen). Deren Vorhersagen fasst du zusammen, um das g\u00fcnstigste Ergebnis zu ermitteln. Die bekanntesten Ensemble-Methoden sind Bagging und Boosting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Overfitting beim Machine Learning verhindern:<\/strong><\/h3>\n\n\n\n<p class=\" translation-block\"><strong>a) L&auml;ngere Trainingszeit:<\/strong> So wie eine Verk&uuml;rzung der Trainingsphase das Overfitting reduziert, reduziert ihre Verl&auml;ngerung das Underfitting. Wie bereits erw&auml;hnt liegt die Herausforderung deshalb darin, die optimale Dauer des Modelltrainings auszuw&auml;hlen.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>b) Merkmalsauswahl:<\/strong> Falls nicht gen\u00fcgend pr\u00e4diktive Merkmale vorhanden sind, f\u00fcgst du mehr von diesen - oder welche mit st\u00e4rkerer Bedeutung - ein. In einem <a href=\"https:\/\/rocketloop.de\/de\/blog\/kuenstliche-neuronale-netze\/\">neuronalen Netzwerk<\/a> k\u00f6nntest du zum Beispiel mehr versteckte Neuronen hinzuf\u00fcgen. Und in einem Wald mehr B\u00e4ume. Dadurch verleihst du dem Modell mehr Komplexit\u00e4t, was zu besseren Trainingsergebnissen f\u00fchrt - allerdings nur zu dem Punkt, an welchem wiederum das Overfitting beginnt.<\/p>\n\n\n\n<p class=\" translation-block\"><strong>c) Normalisierung abschw\u00e4chen:<\/strong> Falls du die Methoden zur Normalisierung der Trainingsdaten zu streng anwendest, kann das dazu f\u00fchren, dass die Merkmale zu einheitlich werden. Dadurch ist das Modell nicht mehr in der Lage, den dominanten Trend zu identifizieren, was zu einem Underfitting f\u00fchrt. Durch die Verringerung der Regulierung kannst du wieder mehr Komplexit\u00e4t und Variation einbringen.<\/p>\n\n\n\n<p class=\" translation-block\">Wie du sehen kannst, gleicht es der Wanderung auf einem schmalen Grat, den Mittelweg zwischen Under- und Overfitting zu finden. Um sicherzugehen, dass bei Deinem Modell keines der beiden Probleme vorliegt, musst du dieses validieren. Es gibt verschiedene Methoden zur Evaluierung von Modellen in der Datenwissenschaft: Die bekannteste davon ist sicherlich die k-fold Cross Validation. Diese - und noch ein paar weitere - wollen wir dir im Folgenden vorstellen.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"section-four\"><strong>4. Welche Methoden zur Modellvalidierung gibt es?<\/strong><\/h2>\n\n\n\n<p>Modellbewertungsmethoden werden verwendet, um<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li class=\" translation-block\">die <strong>Passgenauigkei<\/strong>t zwischen Modell und Daten <strong>zu beurteilen<\/strong>,&nbsp;<\/li><li class=\" translation-block\"><strong>verschiedene Modelle zu vergleichen<\/strong> (im Zusammenhang mit der Modellauswahl),<\/li><li class=\" translation-block\">und <strong>um vorherzusagen, wie genau die Prognosen<\/strong> (in Verbindung mit einem bestimmten Modell und Datensatz) voraussichtlich<strong> sein werden.<\/strong><\/li><\/ul>\n\n\n\n<p class=\" translation-block\">Die Validierung dient also dazu, zu zeigen, dass das Modell eine realistische Darstellung des untersuchten Systems ist: Dass es das Systemverhalten mit ausreichender Genauigkeit reproduziert, um die Ziele der Analyse zu erf\u00fcllen. W\u00e4hrend die Techniken zur Modellverifizierung allgemein sind, solltest du die Vorgehensweise selbst viel spezifischer anlegen. Sowohl f\u00fcr das betreffende Modell - als auch f\u00fcr das System, in dem es angewendet werden soll.\u00a0<\/p>\n\n\n\n<p class=\" translation-block\">So wie die Modellentwicklung von den Zielen der Studie beeinflusst wird, wird dies auch f\u00fcr die Modellvalidierung gelten. Wir stellen dir an dieser Stelle nur einige wenige der verwendeten Methoden vor - es gibt jedoch noch eine Vielzahl weiterer. Welche du am Ende ausw\u00e4hlst, solltest du abh\u00e4ngig von den spezifischen Parametern und Merkmalen des von dir entwickelten Modells machen.<\/p>\n\n\n\n<p class=\" translation-block\">Die Grundlage aller Validierungstechniken ist das Aufteilen des Datensatzes beim Training des Modells. Dies geschieht, um nachzuvollziehen, was passiert, wenn es mit Daten konfrontiert wird, die es noch nie gesehen hat. Deshalb ist eine der einfachsten Methoden der Train-Test-Split.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"section-four-one\"><strong>1. Train-Test-Split<\/strong><\/h3>\n\n\n\n<p id=\"train-test-split\" class=\" translation-block\">Das Prinzip ist einfach: du teilst deine Daten nach dem Zufallsprinzip in etwa 70% f\u00fcr das Training und 30% f\u00fcr das Testen des Modells auf. Beim Optimieren nach dieser Methode kann es aber wiederum leicht zum Auftreten von Overfitting kommen. Warum? Weil das Modell nach den Hyperparametern sucht, die zu dem spezifischen Train-Test passen, den du durchgef\u00fchrt hast.<\/p>\n\n\n\n<p class=\" translation-block\">Um dieses Problem zu l\u00f6sen, kannst du einen zus\u00e4tzlichen Holdout-Satz erstellen. Dies sind in der Regel 10-20% der Daten, die du f\u00fcr die sp\u00e4tere Validierung reservierst und deshalb weder f\u00fcr das Training noch f\u00fcr den Test verwendest. Nach der Optimierung deines Modells durch den Train-Test-Split kannst du anschlie\u00dfend mit dem Holdout-Set validieren, ob kein Overfitting vorliegt.<\/p>\n\n\n\n<p class=\" translation-block\">Was aber, wenn in einer Teilmenge unserer Daten beispielsweise nur Personen eines bestimmten Alters oder Einkommensniveaus enthalten sind? Ein solcher (ung\u00fcnstiger) Fall wird als Stichprobenverzerrung bezeichnet. Dabei handelt es sich um einen systematischen Fehler aufgrund einer nicht zuf\u00e4lligen Stichprobe eines Datensatzes (wie der gerade angesprochenen Bev\u00f6lkerung), der dazu f\u00fchrt, dass einige Datenpunkte (Personen) weniger wahrscheinlich einbezogen werden als andere.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"section-four-two\"><strong>2. k-Fold Cross-Validation (k-Fold CV)<\/strong><\/h3>\n\n\n\n<p class=\" translation-block\">Um die Stichprobenverzerrung zu minimieren, betrachten wir nun den Ansatz der Validierung etwas anders. Was w\u00e4re, wenn wir statt eines einzigen Aufteilungsvorgangs viele Aufteilungen vornehmen und f\u00fcr alle Kombinationen von diesen validieren?<\/p>\n\n\n\n<p id=\"k-fold-cross-validation\" class=\" translation-block\">An dieser Stelle kommt die <strong>k-fold Kreuzvalidierung<\/strong> ins Spiel. Sie&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li class=\" translation-block\">teilt die Daten in k Foldings auf,&nbsp;<\/li><li class=\" translation-block\">trainiert dann die Daten auf k-1 Foldings&nbsp;<\/li><li class=\" translation-block\">und testet auf dem einen Folding, das ausgelassen wurde.&nbsp;<\/li><\/ol>\n\n\n\n<p>Dies wird f\u00fcr alle Kombinationen durchgef\u00fchrt und das Ergebnis f\u00fcr die einzelnen Instanzen gemittelt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"406\" src=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_k_fold_cross_validation.png\" alt=\"modellvalidierung-k-fold-kreuzvalidierung\" class=\"wp-image-7222\" srcset=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_k_fold_cross_validation.png 650w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_k_fold_cross_validation-300x187.png 300w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_validation_k_fold_cross_validation-16x10.png 16w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption>In dieser Grafik siehst Du den schematischen Ablauf der k-fold Kreuzvalidierung zur &Uuml;berpr&uuml;fung Deines Modells f&uuml;r das Machine Learning.<\/figcaption><\/figure>\n\n\n\n<p class=\" translation-block\">Dadurch werden alle Daten sowohl f\u00fcr das Training als auch f\u00fcr die Validierung verwendet. Aber jeder Datenpunkt (jedes Folding) nur einmal f\u00fcr diese. F\u00fcr k wird typischerweise ein Wert zwischen 5 und 10 gew\u00e4hlt, da hier eine gute Balance zwischen Rechenaufwand und Genauigkeit erreicht wird. Der Vorteil dieser Methode ist, dass du eine relativ variantenfreie Performancesch\u00e4tzung erh\u00e4ltst. Der Grund daf\u00fcr ist, dass wichtige Strukturen in den Trainingsdaten nicht ausgeschlossen werden k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"section-four-three\"><strong>3. Leave-One-Out Cross-Validation (LOOCV)<\/strong><\/h3>\n\n\n\n<p class=\" translation-block\">Die Leave-One-Out-Kreuzvalidierung ist ein Spezialfall der Kreuzvalidierung, bei der die Anzahl der Foldings der Anzahl der Instanzen (Beobachtung) im Datensatz entspricht. Der Lernalgorithmus wird also einmal f\u00fcr jede Instanz angewandt, wobei alle anderen Instanzen als Trainingsset und die ausgew\u00e4hlte Instanz als Single-Item-Testset verwendet wird. Dieses Verfahren ist eng verwandt mit der statistischen Methode der <a href=\"https:\/\/www.ssoar.info\/ssoar\/handle\/document\/6688\">Jack-Knife-Sch\u00e4tzung<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"406\" src=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_leave_one_out_cross_validation.png\" alt=\"modellvalidierung_leave_one_out_cross_validation\" class=\"wp-image-7223\" srcset=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_leave_one_out_cross_validation.png 650w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_leave_one_out_cross_validation-300x187.png 300w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_leave_one_out_cross_validation-16x10.png 16w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption>In dieser Grafik siehst Du den schematischen Ablauf der LOOCV-Kreuzvalidierung zur &Uuml;berpr&uuml;fung Deines Modells f&uuml;r das Machine Learning.<\/figcaption><\/figure>\n\n\n\n<p class=\" translation-block\">Eine Instanz ist ein Fall in den Trainingsdaten und wird durch eine Anzahl von Attributen beschrieben. Ein Attribut ist wiederum ein Aspekt \/ Merkmal einer Instanz (z. B. Alter, Temperatur, Luftfeuchtigkeit).\u00a0<\/p>\n\n\n\n<p class=\" translation-block\">Die Methode ist allerdings rechnerisch sehr aufwendig, da das Modell n-mal trainiert werden muss. Wende sie also nur an, falls die zugrunde liegende Datenmenge klein ist oder du \u00fcber die Rechenleistung f\u00fcr eine entsprechend gro\u00dfe Anzahl an Berechnungen verf\u00fcgst.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"section-four-four\"><strong>4. Nested Cross-Validation (verschachtelte Kreuzvalidierung)<\/strong><\/h3>\n\n\n\n<p id=\"nested-cross-validation\" class=\" translation-block\">Bei der Modellauswahl ohne geschachtelte Kreuzvalidierung werden dieselben Daten zum Abstimmen der Modellparameter und zum Bewerten der Modellleistung verwendet, was zu einer optimistisch verzerrten Bewertung des Modells (Overfitting) f\u00fchren kann. Wir erhalten eine schlechte Sch\u00e4tzung der Fehler in den Trainings- oder Testdaten aufgrund von Informationslecks.\u00a0<\/p>\n\n\n\n<p class=\" translation-block\">Um dieses Problem zu \u00fcberwinden, kommt die geschachtelte Kreuzvalidierung (Nested Cross-Validation) ins Spiel, die es erlaubt, den Schritt der Hyperparameter-Abstimmung vom Schritt der Fehlersch\u00e4tzung zu trennen. Zur Veranschaulichung verschachteln wir einfach einmal zwei k-fache Kreuzvalidierungsschleifen.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li class=\" translation-block\">Die<strong> innere Schleife<\/strong> f&uuml;r die <strong>Hyperparameter-Abstimmung<\/strong><\/li><li class=\" translation-block\">sowie <strong>die \u00e4u\u00dfere<\/strong> f\u00fcr die <strong>Sch\u00e4tzung der Genauigkeit<\/strong><\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"406\" src=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_nested_cross_validation.png\" alt=\"model_optimization_nested_cross_validation\" class=\"wp-image-7224\" srcset=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_nested_cross_validation.png 650w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_nested_cross_validation-300x187.png 300w, https:\/\/rocketloop.de\/wp-content\/uploads\/2021\/07\/model_optimization_nested_cross_validation-16x10.png 16w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption>In dieser Grafik siehst Du den schematischen Ablauf der verschachtelten Kreuzvalidierung zur &Uuml;berpr&uuml;fung Deines Modells f&uuml;r das Machine Learning.<\/figcaption><\/figure>\n\n\n\n<p class=\" translation-block\">Es steht dir dabei frei, die Kreuzvalidierungsans\u00e4tze f\u00fcr die innere und \u00e4u\u00dfere Schleife frei zu w\u00e4hlen. So kannst du z. B. die Leave-One-Out-Methode sowohl f\u00fcr die innere als auch f\u00fcr die \u00e4u\u00dfere Schleife verwenden, falls du nach bestimmten Gruppen aufteilen m\u00f6chtest.<\/p>\n\n\n\n<p>Das war unsere kurze \u00dcbersicht \u00fcber die wichtigsten Methoden zur Validierung eines Modells f\u00fcr das maschinelle Lernen. Damit sind wir auch schon am Ende unseres Beitrags zum Thema \u201cProblemfelder der Modellvalidierung (und deren L\u00f6sungen): Overfitting und Underfitting!\u201d angelangt. Wir hoffen, die hier aufgef\u00fchrten Informationen und Praxisbeispiele sind dir bei Deinem eigenen Softwareentwicklungsprojekt hilfreich.<\/p>\n\n\n\n<p class=\" translation-block\">Falls du dabei doch etwas Unterst\u00fctzung ben\u00f6tigen solltest, laden wir Dich ein mit uns<a href=\"https:\/\/rocketloop.de\/de\/contact\/\"> Kontakt<\/a> aufzunehmen, um f\u00fcr Deine<a href=\"https:\/\/rocketloop.de\/de\/lp\/software-entwicklung\/\"> Softwareentwicklung<\/a> auf unser erfahrenes Team zur\u00fcckzugreifen - wir freuen uns auf Deine Nachricht. So sparst du wertvolle Zeit f\u00fcr Deinen Launch, welche du in den Aufbau Deines eigenen Teams investieren kannst, damit du die n\u00e4chste Produktentwicklung komplett Inhouse stemmst!<\/p>","protected":false},"excerpt":{"rendered":"<p>Machine Learning is about the use and development of computer systems that are able to learn and adapt without following explicit instructions. To do this, they use algorithms and statistical models to analyze patterns in data and independently draw conclusions for future analyses. The results of such model training can subsequently be used to make [&hellip;]<\/p>","protected":false},"author":2,"featured_media":7219,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","footnotes":""},"categories":[8],"tags":[],"class_list":["post-7215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-machine-learning"],"acf":[],"_links":{"self":[{"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/posts\/7215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/comments?post=7215"}],"version-history":[{"count":17,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/posts\/7215\/revisions"}],"predecessor-version":[{"id":7681,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/posts\/7215\/revisions\/7681"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/media\/7219"}],"wp:attachment":[{"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/media?parent=7215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/categories?post=7215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/tags?post=7215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}