{"id":625,"date":"2019-04-11T15:20:04","date_gmt":"2019-04-11T15:20:04","guid":{"rendered":"https:\/\/rocketloop.de\/?p=625"},"modified":"2021-09-08T17:59:26","modified_gmt":"2021-09-08T17:59:26","slug":"model-validation-and-overfitting","status":"publish","type":"post","link":"https:\/\/rocketloop.de\/de\/blog\/modellvalidierung-und-overfitting\/","title":{"rendered":"Modellvalidierung und Overfitting"},"content":{"rendered":"<p>Das Verfahren der Modellvalidierung beschreibt die Methode, ein statistisches oder datenanalytisches Modell auf Performance zu \u00fcberpr\u00fcfen.<\/p>\n\n\n\n<p class=\" translation-block\">Ein verbreitetes Verfahren zur Validierung von neuronalen Netzen ist die  <a target=\"_self\">k-fold Cross Validation<\/a>. Dabei teilt man Trainingsdatensatz in k Teilmengen auf. Dabei stellt eine der Teilmengen die Testmenge dar. Die restlichen Teilmengen dienen dann als Trainingsmenge. Die Trainingsmenge dient dabei zum Training des Modells. Durch das Verh\u00e4ltnis der richtigen Ergebnisse auf der Testmenge ist es m\u00f6glich den Grad der Generalisierung des Modells zu bestimmen. Anschlie\u00dfend vertauscht man die Testmenge mit einer Trainingsmenge und bestimmt die Performance erneut, bis schlie\u00dflich jede Menge als Testmenge fungiert hat. Am Ende des Vorgangs berechnet man nun den durchschnittlichen Grad der Generalisierung zur Absch\u00e4tzung der Performance des Modells. Der Vorteil dieses Verfahrens ist, dass man eine relativ varianzfreie Performanceeinsch\u00e4tzung erh\u00e4lt. Grund daf\u00fcr ist, dass verhindert m\u00f6glichst verhindern wird, wichtige Strukturen in den Trainingsdaten auszuschlie\u00dfen.<\/p>\n\n\n\n<p>Dieses Verfahren ist im Grunde eine Erweiterung der Holdout Methode. Die Holdout Methode teilt den Datensatz allerdings schlicht in eine Trainings- und in eine Testmenge auf. Gefahr bei dieser Methode ist im Gegensatz zur k-fold Cross Validation, dass wichtige Daten nicht zum Training zur Verf\u00fcgung stehen k\u00f6nnten. Dies kann dazu f\u00fchren, dass das Modell nicht ausreichend in der Lage zu generalisieren ist.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"410\" src=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/k-fold_Cross_Validation.png\" alt=\"Exemplary representation k-fold Cross Validation\" class=\"wp-image-1097\" srcset=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/k-fold_Cross_Validation.png 768w, https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/k-fold_Cross_Validation-300x160.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Beispielhafte Darstellung k-fold Cross Validation<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"overfitting\">Overfitting<\/h2>\n\n\n\n<p>Von Overfitting (deutsch: \u201e\u00dcberanpassung\u201c) spricht man, wenn ein Modell zu speziell an einen Trainingssatz angepasst ist. Bei neuronalen Netzen zum Beispiel, w\u00fcrde das bedeuten, dass ein Netz f\u00fcr Inputs aus dem Trainingsdatensatz sehr genau ist, f\u00fcr einen Testsatz allerdings nicht. Daraus folgt zwar, dass das Modell die trainierten Daten sehr genau abbilden kann, es aber nicht in der Lage ist, generalisierte Ergebnisse zu erzielen.&nbsp;<\/p>\n\n\n\n<p>In der Regel tritt Overfitting dann auf, wenn der Trainingsdatensatz relativ klein und das Modell relativ komplex ist. Denn ein komplexes Modell kann die Trainingsdaten genauer abbilden, umgekehrt bildet ein simples Modell die Trainingsdaten nicht so genau ab (Underfitting). Also ist es allgemein sinnvoll, je nach dem vorhandenen Datensatz, das Modell so simpel wie m\u00f6glich und gleichzeitig nicht zu simpel zu halten. Ein perfektes Modell, das hei\u00dft ein Modell, bei dem es weder zu Over, noch zu Underfitting kommt ist nahe zu unm\u00f6glich zu erstellen.<\/p>\n\n\n\n<p class=\" translation-block\">Um das Problem des Overfitting zu reduzieren und gleichzeitig das Underfitting gering zu halten, wurden mehrere Verfahren eingf\u00fchrt. So unter anderem das <a href=\"https:\/\/www.eff.org\/deeplinks\/2017\/09\/stupid-patent-month-will-patents-slow-artificial-intelligence\" target=\"_self\">von Google patentierte Dropout<\/a>. Das Prinzip des Dropout ist recht simpel. Es deaktiviert lediglich eine gewisse Anzahl, in der Regel zwischen 20% und 50%, je nach festgelegtem Faktor, der Neuronen zuf\u00e4llig. Diese Methode erreicht trotz ihrer Einfachheit eine signifikante Reduzierung von Overfitting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"371\" src=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/overfitting_example.png\" alt=\"Beispielhafte Darstellung f\u00fcr Overfitting\" class=\"wp-image-1098\" srcset=\"https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/overfitting_example.png 1024w, https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/overfitting_example-300x109.png 300w, https:\/\/rocketloop.de\/wp-content\/uploads\/2019\/04\/overfitting_example-768x278.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Beispielhafte Darstellung f\u00fcr Overfitting<\/figcaption><\/figure>","protected":false},"excerpt":{"rendered":"<p>The model validation procedure describes the method of checking the performance of a statistical or data-analytical model. A common method for validating neural networks is k-fold cross-validation. In doing so one divides the training data set into k subsets. One of the subsets represents the test set. The remaining subsets then serve as the training [&hellip;]<\/p>","protected":false},"author":3,"featured_media":1099,"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-625","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\/625","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/comments?post=625"}],"version-history":[{"count":11,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/posts\/625\/revisions"}],"predecessor-version":[{"id":7701,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/posts\/625\/revisions\/7701"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/media\/1099"}],"wp:attachment":[{"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/media?parent=625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/categories?post=625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rocketloop.de\/de\/wp-json\/wp\/v2\/tags?post=625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}