Ein vollstĂ€ndiger Durchgang zum maschinellen Lernen in Python: Teil dreiVielen Menschen gefĂ€llt es nicht, dass Modelle fĂŒr maschinelles Lernen
Black Boxes sind : Wir geben Daten ein und erhalten Antworten ohne ErklĂ€rung - oft sehr genaue Antworten. In diesem Artikel werden wir versuchen herauszufinden, wie das von uns erstellte Modell Prognosen erstellt und was es ĂŒber das von uns gelöste Problem aussagen kann. AbschlieĂend diskutieren wir den wichtigsten Teil des maschinellen Lernprojekts: Wir dokumentieren, was wir getan haben, und prĂ€sentieren die Ergebnisse.
Im
ersten Teil untersuchten wir die Datenbereinigung, explorative Analyse, das Design und die Auswahl von Features. Im
zweiten Teil untersuchten wir das FĂŒllen fehlender Daten, die Implementierung und den Vergleich von Modellen fĂŒr maschinelles Lernen, die hyperparametrische Abstimmung mithilfe der Zufallssuche mit Kreuzvalidierung und schlieĂlich die Bewertung des resultierenden Modells.
Der gesamte
Projektcode befindet sich auf GitHub. Und das dritte Jupyter-Notizbuch zu diesem Artikel liegt
hier . Sie können es fĂŒr Ihre Projekte verwenden!
Wir arbeiten also an einer Lösung des Problems durch maschinelles Lernen bzw. durch ĂŒberwachte Regression. Basierend auf
Energiedaten von GebÀuden in New York haben wir ein Modell erstellt, das den Energy Star Score vorhersagt. Wir haben das auf
GradientenverstÀrkung basierende Regressionsmodell erhalten , das auf der Grundlage von Testdaten Vorhersagen im Bereich von 9,1 Punkten (im Bereich von 1 bis 100) treffen kann.
Modellinterpretation
Die GradientenverstÀrkungsregression befindet sich ungefÀhr in der Mitte
der Modellinterpretierbarkeitsskala : Das Modell selbst ist komplex, besteht jedoch aus Hunderten ziemlich einfacher
EntscheidungsbÀume . Es gibt drei Möglichkeiten, um zu verstehen, wie unser Modell funktioniert:
- Bewerten Sie die Wichtigkeit der Symptome .
- Visualisieren Sie einen der EntscheidungsbÀume.
- Wenden Sie die LIME- Methode an - Lokale interpretierbare modellunabhÀngige ErklÀrungen, lokal interpretierte modellunabhÀngige ErklÀrungen.
Die ersten beiden Methoden sind charakteristisch fĂŒr Baumensembles, und die dritte Methode kann, wie Sie anhand ihres Namens verstehen, auf jedes maschinelle Lernmodell angewendet werden. LIME ist ein relativ neuer Ansatz, ein bedeutender Fortschritt bei dem Versuch
, die Funktionsweise des maschinellen Lernens zu
erklÀren .
Die Bedeutung der Symptome
Die Wichtigkeit von Zeichen ermöglicht es Ihnen, die Beziehung jedes Zeichens mit dem Ziel der Vorhersage zu sehen. Die technischen Details dieser Methode sind komplex (die mittlere Abnahme der Verunreinigung oder die
Abnahme des Fehlers aufgrund der Einbeziehung eines Merkmals wird gemessen ), aber wir können relative Werte verwenden, um zu verstehen, welche Merkmale relevanter sind. In Scikit-Learn können Sie
die Wichtigkeit von Attributen aus jedem baumbasierten âSchĂŒlerâ -Ensemble
extrahieren .
Im folgenden Code ist
model
unser trainiertes Modell. Mithilfe von
model.feature_importances_
Sie die Wichtigkeit von Attributen bestimmen. Dann senden wir sie an den Pandas-Datenrahmen und zeigen die 10 wichtigsten Attribute an:
import pandas as pd


Die wichtigsten Merkmale sind
Site EUI
(
EnergieverbrauchsintensitÀt ) und
Weather Normalized Site Electricity Intensity
, die mehr als 66% der Gesamtbedeutung ausmachen. Bereits beim dritten Attribut ist die Wichtigkeit stark reduziert, was
darauf hindeutet, dass wir nicht alle 64 Attribute verwenden mĂŒssen, um eine hohe Prognosegenauigkeit zu erzielen (im
Jupyter-Notizbuch wird diese Theorie nur mit den 10 wichtigsten Attributen getestet, und das Modell war nicht sehr genau).
Basierend auf diesen Ergebnissen kann eine der ersten Fragen endlich beantwortet werden: Die wichtigsten Indikatoren fĂŒr den Energy Star Score sind Site EUI und Weather Normalized Site Electricity Intensity. Wir werden nicht
zu tief in den Dschungel der Bedeutung von Attributen eintauchen , wir werden nur sagen, dass Sie mit ihnen beginnen können, den Prognosemechanismus anhand des Modells zu verstehen.
Visualisierung eines einzelnen Entscheidungsbaums
Es ist schwierig, das gesamte Regressionsmodell auf der Grundlage der GradientenverstĂ€rkung zu verstehen, was nicht ĂŒber einzelne EntscheidungsbĂ€ume gesagt werden kann. Sie können jeden Baum mit der
Scikit-Learn- export_graphviz
. Extrahieren Sie zuerst den Baum aus dem Ensemble und speichern Sie ihn dann als Punktdatei:
from sklearn import tree
Konvertieren Sie mit dem
Graphviz-Visualizer die
Punktdatei in PNG, indem Sie Folgendes eingeben:
dot -Tpng images/tree.dot -o images/tree.png
Erhalten Sie einen vollstÀndigen Entscheidungsbaum:

Ein bisschen umstĂ€ndlich! Obwohl dieser Baum nur 6 Schichten tief ist, ist es schwierig, alle ĂbergĂ€nge zu verfolgen. Lassen Sie uns den Funktionsaufruf
export_graphviz
Àndern und die Tiefe des Baums auf zwei Ebenen beschrÀnken:

Jeder Knoten (Rechteck) des Baums enthÀlt vier Zeilen:
- Gestellte Frage zum Wert eines der Zeichen einer bestimmten Dimension: Es hÀngt davon ab, in welche Richtung wir diesen Knoten verlassen.
Mse
ist ein MaĂ fĂŒr den Fehler in einem Knoten.Samples
- Die Anzahl der Datenproben (Messungen) im Knoten.Value
- Zielbewertung fĂŒr alle Datenproben im Knoten.
Separater Knoten.(BlĂ€tter enthalten nur 2. â4., Da sie die endgĂŒltige Punktzahl darstellen und keine untergeordneten Knoten haben).
Die Prognose fĂŒr eine bestimmte Messung im Entscheidungsbaum beginnt am obersten Knoten - der Wurzel - und steigt dann im Baum ab. In jedem Knoten mĂŒssen Sie die gestellte Frage mit âJaâ oder âNeinâ beantworten. In der vorherigen Abbildung wird beispielsweise gefragt: "Ist das Site-EUI-GebĂ€ude kleiner oder gleich 68,95?" Wenn ja, geht der Algorithmus zum rechten untergeordneten Knoten, wenn nicht, dann zum linken.
Dieser Vorgang wird auf jeder Schicht des Baums wiederholt, bis der Algorithmus den Blattknoten auf der letzten Schicht erreicht (diese Knoten sind in der Abbildung mit dem reduzierten Baum nicht dargestellt). Die Prognose fĂŒr jede Dimension im Arbeitsblatt ist
value
. Wenn mehrere Messungen auf dem Blatt eingehen, erhĂ€lt jede von ihnen dieselbe Prognose. Mit zunehmender Tiefe des Baums nimmt der Fehler in den Trainingsdaten ab, da mehr BlĂ€tter vorhanden sind und die Proben sorgfĂ€ltiger aufgeteilt werden. Ein zu tiefer Baum fĂŒhrt jedoch zu einer
Umschulung der Trainingsdaten und kann keine Testdaten verallgemeinern.
Im
zweiten Artikel legen wir die Anzahl der Modellhyperparameter fest, die jeden Baum steuern, z. B. die maximale Tiefe des Baums und die minimale Anzahl von Proben, die fĂŒr jedes Blatt benötigt werden. Diese beiden Parameter wirken sich stark auf das Gleichgewicht zwischen Ăber- und Unterlernen aus. Durch die Visualisierung des Entscheidungsbaums können wir verstehen, wie diese Einstellungen funktionieren.
Obwohl wir nicht alle BĂ€ume im Modell untersuchen können, hilft eine Analyse eines von ihnen zu verstehen, wie jeder âSchĂŒlerâ vorhersagt. Diese auf Flussdiagrammen basierende Methode ist sehr Ă€hnlich der Art und Weise, wie eine Person eine Entscheidung trifft.
Ensembles von EntscheidungsbÀumen kombinieren Vorhersagen zahlreicher einzelner BÀume, sodass Sie genauere Modelle mit weniger VariabilitÀt erstellen können. Solche Ensembles sind
sehr genau und leicht zu erklÀren.
Lokale interpretierbare modellabhÀngige ErklÀrungen (LIME)
Das letzte Werkzeug, mit dem Sie herausfinden können, wie unser Modell âdenktâ. Mit LIME können Sie erklĂ€ren,
wie eine einzelne Prognose fĂŒr jedes maschinelle Lernmodell generiert wird . Zu diesem Zweck wird lokal neben einigen Messungen ein vereinfachtes Modell auf der Grundlage eines einfachen Modells wie der linearen Regression erstellt (Details werden in dieser Arbeit beschrieben:
https://arxiv.org/pdf/1602.04938.pdf ).
Wir werden die LIME-Methode verwenden, um die völlig fehlerhafte Vorhersage unseres Modells zu untersuchen und zu verstehen, warum es falsch ist.
Zuerst finden wir diese falsche Prognose. Dazu trainieren wir das Modell, generieren eine Prognose und wĂ€hlen den Wert mit dem gröĂten Fehler aus:
from sklearn.ensemble import GradientBoostingRegressor
Vorhersage: 12.8615
Istwert: 100.0000Dann erstellen wir einen ErklĂ€rer und geben ihm die Trainingsdaten, Modusinformationen, Beschriftungen fĂŒr die Trainingsdaten und die Namen der Attribute. Jetzt können Sie die Beobachtungsdaten und die Prognosefunktion an den ErklĂ€renden weitergeben und ihn dann bitten, den Grund fĂŒr den Prognosefehler zu erlĂ€utern.
import lime
PrognoseerklÀrungstabelle:

So interpretieren Sie das Diagramm: Jeder Datensatz entlang der Y-Achse gibt einen Wert der Variablen an, und die roten und grĂŒnen Balken geben den Einfluss dieses Werts auf die Prognose wieder. Zum Beispiel
Site EUI
der Einfluss des
Site EUI
laut oberem Datensatz mehr als 95,90, sodass etwa 40 Punkte von der Prognose abgezogen werden. GemÀà dem zweiten Datensatz
Weather Normalized Site Electricity Intensity
der Einfluss der
Weather Normalized Site Electricity Intensity
weniger als 3,80, und daher werden der Vorhersage etwa 10 Punkte hinzugefĂŒgt. Die endgĂŒltige Prognose ist die Summe des Abschnitts und der Auswirkungen jedes der aufgelisteten Werte.
Schauen wir es uns anders an und rufen die Methode
.show_in_notebook()
:

Der Entscheidungsprozess des Modells wird links angezeigt: Die Auswirkung jeder Variablen auf die Prognose wird visuell angezeigt. Die Tabelle rechts zeigt die tatsĂ€chlichen Werte der Variablen fĂŒr eine bestimmte Messung.
In diesem Fall hat das Modell ungefĂ€hr 12 Punkte vorhergesagt, aber tatsĂ€chlich waren es 100. ZunĂ€chst fragen Sie sich vielleicht, warum dies passiert ist. Wenn Sie jedoch die ErklĂ€rung analysieren, stellt sich heraus, dass dies keine Ă€uĂerst kĂŒhne Annahme ist, sondern das Berechnungsergebnis auf bestimmten Werten basiert.
Site EUI
war relativ hoch und man konnte einen niedrigen Energy Star Score erwarten (da er stark vom EUI beeinflusst wird), was unser Modell tat. In diesem Fall stellte sich diese Logik jedoch als falsch heraus, da das GebÀude tatsÀchlich den höchsten Energy Star Score erhielt - 100.
Modellfehler können Sie verĂ€rgern, aber solche ErklĂ€rungen helfen Ihnen zu verstehen, warum das Modell falsch war. DarĂŒber hinaus können Sie dank der ErklĂ€rungen herausfinden, warum das GebĂ€ude trotz des hohen EUI-Werts die höchste Punktzahl erzielt hat. Vielleicht lernen wir etwas Neues ĂŒber unsere Aufgabe, das sich unserer Aufmerksamkeit entziehen wĂŒrde, wenn wir nicht anfangen wĂŒrden, Modellfehler zu analysieren. Solche Tools sind nicht ideal, können jedoch das VerstĂ€ndnis des Modells erheblich erleichtern und
bessere Entscheidungen treffen .
Dokumentation der Arbeit und PrÀsentation der Ergebnisse
Viele Projekte widmen Dokumentation und Berichten wenig Aufmerksamkeit. Sie können die beste Analyse der Welt durchfĂŒhren, aber wenn Sie
die Ergebnisse nicht richtig prÀsentieren , spielen sie keine Rolle!
Durch die Dokumentation eines Datenanalyseprojekts packen wir alle Versionen der Daten und des Codes, damit andere Personen das Projekt reproduzieren oder sammeln können. Denken Sie daran, dass Code hĂ€ufiger gelesen als geschrieben wird. Daher sollte unsere Arbeit anderen Menschen und uns klar sein, wenn wir in einigen Monaten darauf zurĂŒckkommen. FĂŒgen Sie daher nĂŒtzliche Kommentare in den Code ein und erlĂ€utern Sie Ihre Entscheidungen.
Jupyter-NotizbĂŒcher sind ein groĂartiges Dokumentationswerkzeug, mit dem Sie zuerst Lösungen erklĂ€ren und dann Code anzeigen können.
Jupyter Notebook ist auch eine gute Plattform fĂŒr die Interaktion mit anderen Spezialisten. Mit den
Erweiterungen fĂŒr NotizbĂŒcher können Sie
den Code aus dem Abschlussbericht ausblenden , denn egal wie schwer es zu glauben ist, nicht jeder möchte eine Menge Code im Dokument sehen!
Möglicherweise möchten Sie nicht drĂŒcken, sondern alle Details anzeigen. Es ist jedoch wichtig
, dass Sie Ihr Publikum verstehen, wenn Sie Ihr Projekt prÀsentieren, und
einen entsprechenden Bericht erstellen . Hier ist ein Beispiel fĂŒr eine Zusammenfassung des Wesens unseres Projekts:
- Mithilfe von Daten zum Energieverbrauch von GebÀuden in New York können Sie ein Modell erstellen, das die Anzahl der Energy Star Points mit einem Fehler von 9,1 Punkten vorhersagt.
- Standort-EUI und wetternormalisierte StromintensitÀt sind die Hauptfaktoren, die die Prognose beeinflussen.
Wir haben eine detaillierte Beschreibung und Schlussfolgerungen in das Jupyter-Notizbuch geschrieben, aber anstelle von PDF haben wir die .tex-Datei in
Latex konvertiert, die wir dann in
texStudio bearbeitet
haben , und die
resultierende Version wurde in PDF konvertiert. Tatsache ist, dass das Standard-Exportergebnis von Jupyter nach PDF recht anstĂ€ndig aussieht, aber in nur wenigen Minuten der Bearbeitung erheblich verbessert werden kann. DarĂŒber hinaus ist Latex ein leistungsstarkes Dokumentvorbereitungssystem, dessen Besitz nĂŒtzlich ist.
Letztendlich wird der Wert unserer Arbeit durch die Entscheidungen bestimmt, die sie treffen, und es ist sehr wichtig, âdie Waren persönlich liefern zu könnenâ. Durch die korrekte Dokumentation helfen wir anderen Menschen, unsere Ergebnisse zu reproduzieren, und geben uns Feedback, damit wir erfahrener werden und uns auf die zukĂŒnftigen Ergebnisse verlassen können.
Schlussfolgerungen
In unserer Publikationsreihe haben wir ein Tutorial zum maschinellen Lernen von Anfang bis Ende behandelt. Wir haben zuerst die Daten gelöscht, dann ein Modell erstellt und am Ende gelernt, wie man sie interpretiert. Erinnern Sie sich an die allgemeine Struktur des maschinellen Lernprojekts:
- Daten bereinigen und formatieren.
- Explorative Datenanalyse.
- Design und Auswahl der Funktionen.
- Vergleich der Metriken mehrerer Modelle fĂŒr maschinelles Lernen.
- Hyperparametrische Abstimmung des besten Modells.
- Bewertung des besten Modells anhand eines Testdatensatzes.
- Interpretation der Ergebnisse des Modells.
- Schlussfolgerungen und gut dokumentierter Bericht.
Die Anzahl der Schritte kann je nach Projekt variieren, und maschinelles Lernen ist hĂ€ufig eher iterativ als linear. Daher hilft Ihnen dieser Leitfaden in Zukunft. Wir hoffen, dass Sie Ihre Projekte jetzt sicher umsetzen können, aber denken Sie daran: Niemand handelt alleine! Wenn Sie Hilfe benötigen, gibt es viele sehr nĂŒtzliche Communities, in denen Sie beraten werden.
Diese Quellen können Ihnen helfen: