clf_sepal.score(X_train_sepal_only, y_train)
> 0.9555555555555556
clf_sepal.score(X_test_sepal_only, y_test)
> 0.80000000000000004
Das passt zu unserem Eindruck aus den Grafiken: Für die Trainingsdaten sieht es nicht schlecht aus (95% passend), aber die Testdaten liefern mit nur 80% Genauigkeit kein gutes Bild ab.
Das Bild des Overfittings verfestigt sich hier. Unser Modell ist also zu speziell und zu komplex. Es passt sich zu genau den Trainingsdaten an und ist dann nicht mehr allgemein genug für die Testdaten.
Underfitting
Gut, dann also ein einfacheres Modell? Erstaunlicherweise bekommen wir das hin, indem wir nicht nur die Nähe zu einem einzigen Nachbarn bei der Vorhersage in Erwägung ziehen, sondern die Nähe mehrerer. Wir probieren einmal zehn Nachbarn aus:
clf_sepal_10 = neighbors.KNeighborsClassifier(10)
Abbildung 2-4 zeigt die passende Grafik für die Trainingsdaten, an der man schön die viel sanfteren Übergänge der Decision Boundaries sehen kann.
Abbildung 2-4: Glatte Decision Boundaries, aber dieses Mal sogar schwach für die Trainingsdaten
Leider kann man genauso schön sehen, dass nicht einmal die Trainingsdaten gut vorhergesagt werden können. Wir haben es jetzt also mit Underfitting zu tun. Von Underfitting spricht man, wenn ein Modell zu einfach ist und nicht einmal die Trainingsdaten annähernd reproduzieren kann.
Das bestätigen uns auch die Scores, die für Trainings- und Testdaten ähnlich schwach sind:
clf_sepal_10.score(X_train_sepal_only, y_train)
> 0.80000000000000004
clf_sepal_10.score(X_test_sepal_only, y_test)
> 0.76666666666666672
Der Sweet Spot liegt irgendwo zwischen dem zu komplexen und dem zu einfachen Modell. Wir verraten dir jetzt schon einmal: Egal wie wir unser Modell hier anpassen, wir bekommen nie gute Ergebnisse. Das liegt daran, dass dieser Satz an Features einfach nicht ausreicht, um die einzelnen Arten voneinander zu trennen. Nichts zu machen. In der Praxis ist so etwas ernüchternd. Wenn du nicht die richtigen, zu schlechte oder zu wenige Daten hast, kannst du noch so schlau sein, du wirst nie zu guten Ergebnissen kommen. Mehr dazu findest du in Kapitel 3, Datenimport und -vorbereitung, und Kapitel 5, Feature-Auswahl.
Eine bessere Feature-Auswahl
Umso erstaunlicher ist es, dass wir mit den Petal-Features sehr viel weiterkommen und fast Werte erzielen wie für alle vier Features zusammen. Wir bleiben bei zehn Nachbarn und bekommen diese Decision Boundaries, die wir in Abbildung 2-5 zuerst zusammen mit den Trainingsdaten anzeigen.
Abbildung 2-5: Petal-Features-Decision-Boundaries mit Trainingsdaten
Du kannst glatte Übergänge sehen und ebenso nur geringe Fehler bei den beiden Klassen in der Mitte und rechts. Das spiegelt sich auch in den Scores wider:
clf_petal_10.score(X_train_petal_only, y_train)
> 0.96666666666666667
Nicht perfekt, aber sehr gut, und vor allem sehr ähnliche Scores bei den Testdaten:
clf_petal_10.score(X_test_petal_only, y_test)
> 0.94999999999999996
In Abbildung 2-6 kannst du nun noch einmal dieselben Decision Boundaries sehen, dieses Mal aber mit den Testdaten. An der Decision Boundary rechts kann es keine glatte Grenze geben, die sowohl für die Trainingsdaten als auch für die Testdaten gute Ergebnisse liefert.
Abbildung 2-6: Petal-Features: Decision Boundaries mit Testdaten
Das Erstaunliche und Bemerkenswerte hier: Wir haben zwar wieder nur zwei Features verwendet, aber dieses Mal viel bessere Ergebnisse bekommen. Wir lernen daraus, dass es nicht nur auf die Menge der Features ankommt, sondern auch darauf, welche Features man auswählt. Hier hatten wir nur mehr oder weniger Glück mit der Auswahl, wie man das aber systematisch macht und warum das hier so gut geklappt hat, lernst du in Kapitel 5, Feature-Auswahl, und Kapitel 6, Modellvalidierung.
Die hier erklärte Nearest Neighbors Classification ist relativ einfach, aber erstaunlich häufig ausreichend. In Kapitel 4, Supervised Learning, zeigen wir dir weitere Lernstrategien, die grundsätzlich anders funktionieren.
Wir hoffen zudem, auf die theoretisch anspruchsvolleren Kapitel 5 und Kapitel 6 neugierig gemacht zu haben. Wie wir trainieren und wie wir Features auswählen, ist offensichtlich essenziell für unseren Erfolg.
Weiterführende Links
Jupyter Notebooks: https://jupyter.org/
Colab Notebooks: https://colab.research.google.com
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным