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


Скачать книгу
alt="image"/>

       Abbildung 1-16: Modellbasiertes Lernen

      Nehmen wir an, Sie möchten herausfinden, ob Geld glücklich macht. Sie laden dazu die Daten des Better Life Index von der Webseite des OECD (https://homl.info/4) herunter und Statistiken zum Pro-Kopf-Bruttoinlandsprodukt (BIP) von der Webseite des IMF (https://homl.info/5). Anschließend führen Sie beide Tabellen zusammen und sortieren nach dem BIP pro Kopf. Tabelle 1-1 zeigt einen Ausschnitt des Ergebnisses.

Land BIP pro Kopf (USD) Zufriedenheit
Ungarn 12240 4,9
Korea 27195 5,8
Frankreich 37675 6,5
Australien 50962 7,3
Vereinigte Staaten 55805 7,2

      Stellen wir die Daten für einige dieser Länder dar (siehe Abbildung 1-17).

       Abbildung 1-17: Sehen Sie hier eine Tendenz?

      Es scheint so etwas wie einen Trend zu geben! Auch wenn die Daten verrauscht sind (also teilweise zufällig), sieht es so aus, als stiege die Zufriedenheit mehr oder weniger mit dem Pro-Kopf-BIP des Lands linear an. Sie beschließen also, die Zufriedenheit als lineare Funktion des Pro-Kopf-Bruttoinlandsprodukts zu modellieren. Diesen Schritt bezeichnet man als Modellauswahl: Sie wählen ein lineares Modell der Zufriedenheit mit genau einem Merkmal aus, nämlich dem Pro-Kopf-BIP (siehe Formel 1-1).

       Formel 1-1: Ein einfaches lineares Modell

      Zufriedenheit = θ0 + θ1 x BIP_pro_Kopf

      Diesen Modell enthält zwei Modellparameter, θ0 und θ1.5 Indem Sie diese Parameter verändern, kann das Modell jede lineare Funktion annehmen, wie Sie in Abbildung 1-18 sehen können.

       Abbildung 1-18: Einige mögliche lineare Modelle

      Bevor Sie Ihr Modell verwenden können, müssen Sie die Werte der Parameter θ0 und θ1 festlegen. Woher sollen Sie wissen, welche Werte zur bestmöglichen Leistung führen? Um diese Frage zu beantworten, müssen Sie ein Maß für die Leistung festlegen. Sie können dafür entweder eine Nutzenfunktion (oder Fitnessfunktion) verwenden, die die Güte Ihres Modells bestimmt. Alternativ können Sie eine Kostenfunktion definieren, die misst, wie schlecht das Modell ist. Bei linearen Modellen verwendet man typischerweise eine Kostenfunktion, die die Entfernung zwischen den Vorhersagen des linearen Modells und den Trainingsbeispielen bestimmt; das Ziel ist, diese Entfernung zu minimieren.

      An dieser Stelle kommt der Algorithmus zur linearen Regression ins Spiel: Sie speisen Ihre Trainingsdaten ein, und der Algorithmus ermittelt die für Ihre Daten bestmöglichen Parameter des linearen Modells. Dies bezeichnet man als Trainieren des Modells. In unserem Fall ermittelt der Algorithmus θ0 = 4,85 und θ1 = 4,91 × 10–5 als optimale Werte für die beiden Parameter.

image Verwirrenderweise kann sich das gleiche Wort »Modell« auf eine Art von Modell (zum Beispiel lineare Regression), auf eine vollständig spezifizierte Modellarchitektur (zum Beispiel lineare Regression mit einer Eingabe und einer Ausgabe) oder auf das abschließende trainierte Modell, das für Vorhersagen genutzt werden kann (zum Beispiel lineare Regression mit einer Eingabe und einer Ausgabe und θ0 = 4,85 und θ1 = 4,91 × 10–5), verwendet werden. Die Modellauswahl besteht darin, die Art des Modells auszuwählen und seine Architektur vollständig zu definieren. Beim Trainieren eines Modells geht es darum, einen Algorithmus laufen zu lassen, der die Modellparameter findet, mit denen es am besten zu den Trainingsdaten passt (und hoffentlich gute Vorhersagen für neue Daten trifft).

      Nun passt das Modell (für ein lineares Modell) bestmöglich zu den Trainingsdaten, wie Abbildung 1-19 zeigt.

       Abbildung 1-19: Das an die Trainingsdaten optimal angepasste lineare Modell

      Sie sind nun endlich so weit, das Modell für Vorhersagen einzusetzen. Nehmen wir an, Sie möchten wissen, wie glücklich Zyprioten sind. Die Daten des OECD liefern darauf keine Antwort. Glücklicherweise können Sie unser Modell verwenden, um eine gute Vorhersage zu treffen: Sie schlagen das Pro-Kopf-BIP für Zypern nach, finden 22587 USD und wenden Ihr Modell an. Dabei finden Sie heraus, dass die Zufriedenheit irgendwo um 4,85 + 22,587 × 4,91 × 10-5 = 5,96 liegt.

      Um Ihren Appetit auf die folgenden Kapitel anzuregen, zeigt Beispiel 1-1 den Python-Code, der die Daten lädt, vorbereitet,6 einen Scatterplot zeichnet, ein lineares Modell trainiert und eine Vorhersage trifft.7

       Beispiel 1-1: Trainieren und Ausführen eines linearen Modells mit Scikit-Learn

      import matplotlib.pyplot as plt

      import numpy as np

      import pandas as pd

      import sklearn.linear_model

      # Laden der Daten

      oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')

      gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t',

      encoding='latin1', na_values="n/a")

      # Vorbereiten der Daten

      country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)

      X = np.c_[country_stats["GDP per capita"]]

      y = np.c_[country_stats["Life satisfaction"]]

      # Visualisieren der Daten

      country_stats.plot(kind='scatter', x="Pro-Kopf-BIP", y='Zufriedenheit')

      plt.show()


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