Machine Learning – kurz & gut. Oliver Zeigermann

Чтение книги онлайн.

Читать онлайн книгу Machine Learning – kurz & gut - Oliver Zeigermann страница 7

Machine Learning – kurz & gut - Oliver Zeigermann kurz & gut

Скачать книгу

Lernstrategie hat den Vorteil, wirklich einfach zu sein, sodass du schnell verstehen kannst, wie sie funktioniert. Am einfachsten geht das mit einer Grafik, in der wir auftragen, wie welcher Datensatz zu welcher Vorhersage führt. Wir sehen dabei gleich ein grundsätzliches Problem von Visualisierungen: Wir haben vier Features und ein Label, wir Menschen können aber nur wenige Dimensionen gleichzeitig erfassen, auf einem 2-D-Medium wie einem Blatt Papier oder einem Bildschirm eigentlich nur 2. Mit etwas Trickserei und Einschränkungen können es auch ein paar mehr werden, aber nicht viel mehr.

      Wir entscheiden uns, nur zwei Features, Sepal width und Sepal length, darzustellen und die vorhergesagten Labels als Farbe in die Darstellung hineinzucodieren. Es ist wichtig, zu verstehen, dass wir es uns hier künstlich schwerer machen als nötig, denn mit allen vier Features haben wir es ja zu sehr guten Ergebnissen gebracht. Es geht uns eher darum, den Nearest-Neighbors-Algorithmus besser darzustellen und die Phänomene des Over- und Underfittings zu illustrieren.

      Unsere Grafik mit den beiden Features siehst du in Abbildung 2-1.

       Abbildung 2-1: Verteilung der Trainingsdaten für Sepal-Features

      Unsere beiden Features spannen ein zweidimensionales Koordinatensystem auf. Die Punkte darin sind die einzelnen Trainingsbeispiele. Sie sind an den Stellen des Koordinatensystems angebracht, die zu ihren Features passen. Jede Farbe drückt eine Irisart aus. Diese ist quasi unsere dritte Dimension.

      In derselben Grafik zeigen wir in Abbildung 2-2 nun zusätzlich an, welche Vorhersage bei welcher Koordinate gemacht wird. Dabei nutzen wir die gleichen Farben wie für die Trainingsdaten, allerdings etwas heller als Hintergrund.

      Noch einmal zur Wiederholung – die Vorhersage funktioniert sehr einfach: Bei jedem Punkt wird geschaut, welche Farbe der nächstliegende Trainingspunkt hat. Es ergeben sich dabei Grenzen zwischen den einzelnen Farben der Vorhersagen, diese nennt man auch Decision Boundaries.

       Abbildung 2-2: Decision Boundaries für Sepal-Features

       Overfitting

      Gerade im Zentrum der Grafik sind die Grenzen zwischen den Decision Boundaries zerklüftet und unruhig, wenig glatt und genau auf unsere Trainingsdaten angepasst. Während es für unsere Trainingsdaten gut aussieht, passen diese Grenzen nicht wirklich gut für die Testdaten, das heißt, wenn wir nur die beiden Sepal-Features nutzen, haben wir es hier mit Overfitting zu tun. Overfitting bedeutet, dass ein Modell deutlich besser auf Trainingsdaten als auf Testdaten funktioniert, also nicht gut auf unbekannte Daten generalisiert. Dieselben Decision Boundaries kannst du in Abbildung 2-3 für die Testdaten sehen.

      Schau genau hin: Die Darstellung der Decision Boundaries dominiert, und so kann diese Grafik auf den ersten Blick genau so aussehen wie die vorherige. Entscheidend sind aber die Datenpunkte, die nun nicht mehr für das Training, sondern für den Test eingezeichnet sind.

      Die beiden Punkte links von der Mitte passen zum Beispiel überhaupt nicht mehr zur Vorhersage, rechts von der Mitte sieht es ebenso schlecht aus. Oben passt es hingegen ganz gut. Wir werden später in Kapitel 5, Feature-Auswahl, sehen, warum manche Arten ganz gut passen und warum wir bei einer anderen Auswahl der Features plötzlich derartig schlechte Ergebnisse bekommen.

       Abbildung 2-3: Unpassende Decision Boundaries für Testdaten

      Nun aber hier die Ergebnisse für diese Feature-Auswahl:

      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,

Скачать книгу