Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow. Aurélien Géron
entsteht häufig, da Modelle mit der Zeit dazu tendieren, zu »verrotten«: Die Welt dreht sich weiter, und wenn das Modell mit den Daten aus dem letzten Jahr trainiert wurde, passt es vielleicht nicht zu denen von heute.
|
Auch ein Modell, das dafür trainiert wurde, Bilder von Katzen und Hunden zu klassifizieren, muss eventuell regelmäßig nachtrainiert werden – nicht weil Katzen und Hunde über Nacht mutieren, sondern weil sich Kameras, Bildformate, Schärfe, Helligkeit oder Seitenverhältnisse ändern. Und vielleicht mögen die Menschen im nächsten Jahr lieber andere Rassen, oder sie entscheiden sich dazu, ihre Haustiere mit kleinen Hütchen zu verkleiden – wer weiß. |
Sie müssen also die Leistung Ihres Modells überwachen. Aber wie tun Sie das? Nun, das kommt darauf an. In manchen Fällen kann sie aus Folgemetriken abgeleitet werden. Ist Ihr Modell beispielsweise Teil eines Empfehlungssystems und schlägt es Produkte vor, an denen die Benutzer interessiert sein könnten, ist es leicht, die Anzahl an empfohlenen Produkten zu überwachen, die jeden Tag verkauft werden. Fällt diese Zahl (verglichen mit den nicht empfohlenen Produkten), ist der Hauptverdächtige das Modell. Es kann daran liegen, dass die Datenpipeline defekt ist, oder vielleicht muss das Modell mit frischen Daten neu trainiert werden (wie wir gleich noch besprechen werden).
Aber es ist nicht immer möglich, die Leistung des Modells ohne menschliche Analyse zu bestimmen. Stellen Sie sich beispielsweise vor, Sie hätten ein Modell zur Bildklassifikation trainiert (siehe Kapitel 3), um defekte Produkte in der Herstellung zu erkennen. Wie können Sie gewarnt werden, wenn die Leistung des Modells abfällt, bevor Tausende von defekten Produkten an Ihre Kunden geliefert werden? Eine Möglichkeit ist, menschlichen Bewertern Beispiele all der Bilder zu schicken, die das Modell klassifiziert (insbesondere der Bilder, bei denen sich das Modell nicht so sicher ist). Abhängig von der Aufgabe müssen die Bewerter eventuell Experten sein, aber manchmal sind Spezialisten gar nicht notwendig, und es bieten sich Arbeiter auf einer Plattform für Crowdsourcing an (zum Beispiel Amazon Mechanical Turk). Bei manchen Anwendungen kann es sich auch um die Anwender selbst handeln, die beispielsweise über Umfragen oder umfunktionierte Captchas24 Rückmeldung geben.
Auf jeden Fall müssen Sie ein Überwachungssystem (mit oder ohne menschliche Beurteiler) zum Evaluieren des Modells aufsetzen und auch alle relevanten Prozesse einrichten, um zu definieren, was bei Fehlern zu tun ist und wie man sich auf sie vorbereitet. Leider kann das ziemlich viel Arbeit bedeuten. Tatsächlich ist es meist sogar mehr Arbeit, als ein Modell zu bauen und zu trainieren.
Entwickeln sich die Daten weiter, werden Sie regelmäßig Ihre Datensätze aktualisieren und Ihr Modell neu trainieren müssen. Sie sollten den Prozess so weit wie möglich zu automatisieren versuchen. Hier ein paar Schritte, die Sie automatisieren können:
Regelmäßig neue Daten einsammeln und labeln (zum Beispiel mithilfe menschlicher Beurteiler).
Ein Skript schreiben, um das Modell zu trainieren und die Hyperparameter automatisch genauer anzupassen. Das Skript kann abhängig von Ihren Anforderungen automatisiert laufen – zum Beispiel jeden Tag oder jede Woche.
Ein weiteres Skript schreiben, das sowohl das neue wie auch das alte Modell gegen den aktualisierten Testdatensatz evaluiert und das Modell in die Produktivumgebung deployt, wenn die Leistung nicht nachgelassen hat (und wenn sie nachlässt, stellen Sie sicher, dass Sie auch ermitteln, woran das liegt).
Sie sollten auch die Qualität der Eingabedaten evaluieren. Manchmal fällt die Leistung wegen eines schlechten Signals leicht ab (z.B. ein Sensor mit Fehlfunktion, der zufällige Werte sendet, oder eine altbackene Ausgabe eines anderen Teams), es kann aber lange dauern, bis Ihre Überwachung deswegen einen Alarm auslöst. Wenn Sie die Eingabedaten des Systems überwachen, können Sie dies früh feststellen. Sie könnten beispielsweise eine Warnung ausgeben lassen, wenn immer mehr Eingangsdaten ein Merkmal fehlt, wenn deren Mittelwert oder Standardabweichung zu weit vom Trainingsdatensatz wegdriftet oder wenn ein kategorisches Merkmal plötzlich neue Kategorien besitzt.
Und stellen Sie auch sicher, dass Sie Backups von jedem erstellten Modell haben und die Prozesse und Tools bereitstehen, um schnell zu einem früheren Modell zurückkehren zu können, falls das neue Modell aus irgendwelchen Gründen fehlerhaft arbeitet. Durch das Vorhandensein von Backups können Sie auch leicht neue Modelle mit bestehenden vergleichen. Und Sie sollten Backups jeder Version Ihrer Datensätze aufheben, sodass Sie zu einem älteren Datensatz zurückkehren können, wenn das neue einmal fehlerhaft ist (weil beispielsweise die neu hinzugefügten Daten nur noch aus Ausreißern bestehen). Mit den Backups Ihrer Datensätze können Sie außerdem jedes Modell gegen jeden früheren Datensatz evaluieren.
|
Sie können diverse Untermengen des Testdatensatzes erzeugen, um zu ermitteln, wie gut Ihr Modell mit bestimmten Teilen der Daten funktioniert. So kann es beispielsweise sinnvoll sein, eine Untermenge nur mit den aktuellsten Daten zu besitzen oder einen Testdatensatz für bestimmte Eingabearten (zum Beispiel Bezirke im Landesinneren im Gegensatz zu denen in Küstennähe). Damit erhalten Sie ein besseres Verständnis der Stärken und Schwächen Ihres Modells. |
Wie Sie sehen, gehört zu Machine Learning ziemlich viel Infrastruktur – seien Sie also nicht überrascht, wenn Ihr erstes ML-Projekt viel Aufwand und Zeit erfordert, um es in den Produktivbetrieb zu bringen. Ist die Infrastruktur einmal eingerichtet, wird es zum Glück deutlich schneller werden, von einer Idee bis in die Produktion zu kommen.
Probieren Sie es aus!
Dieses Kapitel hat Ihnen hoffentlich einen Eindruck davon verschafft, worin ein Machine-Learning-Projekt besteht, und Ihnen die Werkzeuge zum Trainieren eines guten Systems nähergebracht. Wie Sie sehen, besteht ein Großteil der Arbeit aus der Vorbereitung der Daten, dem Bauen von Überwachungswerkzeugen, dem Aufbau einer von Menschen gestützten Pipeline und dem Automatisieren des regelmäßigen Trainings Ihrer Modelle. Die Algorithmen zum Machine Learning sind natürlich ebenfalls wichtig, aber es ist günstiger, den Prozess insgesamt gut zu beherrschen und drei oder vier Algorithmen gut zu kennen, anstatt Ihre gesamte Zeit mit dem Untersuchen ausgefeilter Algorithmen zu verbringen.
Wenn Sie es also ohnehin nicht bereits getan haben, ist es nun ein guter Moment, den Laptop aufzuklappen, einen interessanten Datensatz auszusuchen und den gesamten Prozess von A bis Z durchzuarbeiten. Ein guter Ausgangspunkt ist eine Website für Wettbewerbe wie http://kaggle.com/: Dort finden Sie Datensätze zum Ausprobieren, klare Zielvorgaben, und Sie können Erfahrungen austauschen.
Viel Spaß!
Übungen
Die folgenden Aufgaben basieren alle auf dem Immobilien-Datensatz aus diesem Kapitel:
1 Probieren Sie einen Support Vector Machine Regressor (sklearn.svm.SVR) mit unterschiedlichen Hyperparametern aus, beispielsweise kernel="linear" (mit unterschiedlichen Werten für den Hyperparameter C) oder kernel="rbf" (mit unterschiedlichen Werten für die Hyperparameter C und gamma). Kümmern Sie sich im Moment nicht zu sehr darum, was Hyperparameter überhaupt sind. Wie gut schneidet der beste SVR-Prädiktor ab?
2 Ersetzen Sie GridSearchCV durch RandomizedSearchCV.
3 Fügen Sie der vorbereitenden Pipeline einen Transformer hinzu, um nur die wichtigsten Attribute auszuwählen.
4 Erstellen Sie eine einzige Pipeline, die die vollständige Vorverarbeitung der Daten und die endgültige Vorhersage durchführt.
5 Probieren Sie einige der Optionen bei der