Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow. Aurélien Géron

Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron


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

      Verwenden wir den Iris-Datensatz, um die logistische Regression zu veranschaulichen. Es handelt sich hierbei um einen bekannten Datensatz, der die Länge und Breite der Kelchblätter (engl. sepal) und Kronblätter (petal) von 150 Iris-Blüten aus drei Unterarten enthält: Iris setosa, Iris versicolor und Iris virginica (siehe Abbildung 4-22).

       Abbildung 4-22: Blüten dreier Arten von Iris-Pflanzen14

      Versuchen wir, einen Klassifikator zu erstellen, mit dem sich anhand der Breite der Kronblätter die Spezies Iris virginica erkennen lässt. Laden wir zunächst die Daten:

      >>> from sklearn import datasets

      >>> iris = datasets.load_iris()

      >>> list(iris.keys())

      ['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename']

      >>> X = iris["data"][:, 3:] # Breite der Kronblätter

      >>> y = (iris["target"] == 2).astype(np.int) # 1 bei Iris virginica, sonst 0

      Nun trainieren wir ein logistisches Regressionsmodell:

      from sklearn.linear_model import LogisticRegression

      log_reg = LogisticRegression()

      log_reg.fit(X, y)

      Betrachten wir die geschätzten Wahrscheinlichkeiten bei Blüten mit Breiten der Kronblätter von 0 bis 3 cm (siehe Abbildung 4-23):15

      X_new = np.linspace(0, 3, 1000).reshape(-1, 1)

      y_proba = log_reg.predict_proba(X_new)

      plt.plot(X_new, y_proba[:, 1], "g-", label="Iris virginica")

      plt.plot(X_new, y_proba[:, 0], "b--", label="Nicht Iris virginica")

      # + weiterer Matplotlib-Code, um das Bild ansprechender zu gestalten

       Abbildung 4-23: Geschätzte Wahrscheinlichkeiten und Entscheidungsgrenze

      Die Breite der Kronblätter der Iris-virginica-Blüten (als Dreiecke dargestellt) liegt zwischen 1,4 und 2,5 cm, während die anderen Iris-Blüten (die Quadrate) schmalere Kronblätter zwischen 0,1 und 1,8 cm haben. Diese Bereiche überlappen einander ein wenig. Oberhalb von 2 cm ist sich der Klassifikator sicher, dass die Blüte eine Iris virginica ist (für diese Kategorie wird eine hohe Wahrscheinlichkeit ausgegeben), unterhalb von 1 cm ist er sich sicher, dass es keine Iris virginica ist (hohe Wahrscheinlichkeit für die Kategorie »Nicht Iris virginica«). Im Übergangsbereich zwischen diesen Extremen ist sich der Klassifikator nicht sicher. Wenn Sie aber die Kategorie vorhersagen (mit der Methode predict() anstatt mit predict_proba()), wird die jeweils wahrscheinlichere Kategorie ausgegeben. Es gibt also eine Entscheidungsgrenze bei etwa 1,6 cm, bei der beide Wahrscheinlichkeiten mit 50% gleich groß sind: Wenn die Kronblätter breiter als 1,6 cm sind, sagt der Klassifikator eine Iris virginica vorher, andernfalls, dass es keine ist (selbst wenn er sich nicht besonders sicher ist):

      >>> log_reg.predict([[1.7], [1.5]])

      array([1, 0])

      Abbildung 4-24 zeigt den gleichen Datensatz, aber diesmal mit zwei Merkmalen: der Länge und Breite der Kronblätter. Ein Klassifikator mit logistischer Regression kann nach dem Trainieren anhand dieser zwei Merkmale die Wahrscheinlichkeit abschätzen, dass eine neue Blüte eine Iris virginica ist. Die gestrichelte Linie markiert die Punkte, an denen das Modell eine Wahrscheinlichkeit von 50% schätzt: Dies ist die Entscheidungsgrenze des Modells. Beachten Sie, dass diese Grenze eine Gerade ist.16 Jede der parallelen Linien steht für die Punkte, an denen das Modell eine bestimmte Wahrscheinlichkeit liefert, von 15% (unten links) bis 90% (oben rechts). Sämtliche Blüten jenseits der Linie oben rechts sind laut dem Modell mit mehr als 90%iger Wahrscheinlichkeit Iris virginica.

       Abbildung 4-24: Lineare Entscheidungsgrenze

      Wie andere lineare Modelle lässt sich auch die logistische Regression mit 1- oder 2-Straftermen regularisieren. Scitkit-Learn fügt standardmäßig einen 2-Strafterm hinzu.

image Der Hyperparameter zum Steuern der Regularisierung eines Logistic Regression-Modells in Scikit-Learn ist nicht alpha (wie bei anderen linearen Modellen), sondern dessen Kehrwert C. Je höher der Wert von C, desto weniger stark ist das Modell regularisiert.

       Softmax-Regression

      Das logistische Regressionsmodell lässt sich direkt auf mehrere Kategorien verallgemeinern, ohne dass man mehrere binäre Klassifikatoren trainieren und miteinander kombinieren muss (wie in Kapitel 3 besprochen). Dies nennt man Softmax-Regression oder multinomiale logistische Regression.

      Die Grundidee dabei ist recht einfach: Die Softmax-Regression berechnet für einen Datenpunkt x zunächst den Score sk(x) für jede Kategorie k und schätzt anschließend durch Berechnen der Softmax-Funktion (auch normalisierte Exponentialfunktion genannt) die Wahrscheinlichkeit jeder Kategorie ab. Die Formel zum Berechnen von sk(x) aus den Scores sollte Ihnen bekannt vorkommen, da sie der Formel für die Vorhersage einer linearen Regression ähnelt (siehe Formel 4-19).

       Formel 4-19: Softmax-Score für Kategorie k

      sk(X) = XTθ(k)

      Dabei hat jede Kategorie ihren eigenen Parametervektor θ(k). Diese Vektoren werden üblicherweise als Zeilen einer Parametermatrix Θ abgelegt.

      Haben Sie erst einmal den Score jeder Kategorie für den Datenpunkt x berechnet, können Sie die Wahrscheinlichkeit imagek für die Zugehörigkeit des Datenpunkts zur Kategorie k abschätzen, indem Sie die Softmax-Funktion (Formel 4-20) auf die Scores anwenden: Sie berechnet die Exponentialfunktion aus jedem Score und normalisiert diese (durch Teilen durch die Summe aller Potenzen). Die Scores werden im Allgemeinen als Logits oder Log-Odds bezeichnet (auch wenn es sich eigentlich um nicht normalisierte Log-Odds handelt).

       Formel 4-20: Softmax-Funktion

image

       K ist dabei die Anzahl der


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