Last Updated on August 17, 2020
Machine Learning Predictive Modeling Performance ist nur so gut wie Ihre Daten, und Ihre Daten sind nur so gut wie die Art und Weise, wie Sie sie für die Modellierung vorbereiten.
Der gängigste Ansatz für die Datenvorbereitung besteht darin, einen Datensatz zu untersuchen und die Erwartungen eines Algorithmus für maschinelles Lernen zu prüfen. Dann werden sorgfältig die am besten geeigneten Datenvorbereitungstechniken ausgewählt, um die Rohdaten so umzuwandeln, dass sie die Erwartungen des Algorithmus am besten erfüllen. Dies ist langsam, teuer und erfordert ein hohes Maß an Fachwissen.
Ein alternativer Ansatz für die Datenaufbereitung ist die Rastersuche nach einer Reihe allgemeiner und allgemein nützlicher Datenaufbereitungstechniken für die Rohdaten. Dabei handelt es sich um eine alternative Philosophie der Datenaufbereitung, bei der Datentransformationen als ein weiterer Hyperparameter der Modellierungspipeline behandelt werden, der gesucht und abgestimmt werden muss.
Dieser Ansatz erfordert weniger Fachwissen als der traditionelle manuelle Ansatz der Datenaufbereitung, ist jedoch rechenintensiv. Der Vorteil ist, dass er bei der Entdeckung von nicht-intuitiven Datenvorbereitungslösungen helfen kann, die eine gute oder beste Leistung für ein bestimmtes prädiktives Modellierungsproblem erzielen.
In diesem Tutorial erfahren Sie, wie Sie den Ansatz der Rastersuche für die Datenvorbereitung mit tabellarischen Daten verwenden können.
Nach Abschluss dieses Tutorials wissen Sie:
- Die Rastersuche bietet einen alternativen Ansatz für die Datenvorbereitung für tabellarische Daten, bei dem Transformationen als Hyperparameter der Modellierungspipeline ausprobiert werden.
- Verwendung der Rastersuchmethode für die Datenaufbereitung zur Verbesserung der Modellleistung gegenüber einer Basislinie für einen Standardklassifizierungsdatensatz.
- Verwendung von Rastersuchsequenzen von Datenaufbereitungsmethoden zur weiteren Verbesserung der Modellleistung.
Starten Sie Ihr Projekt mit meinem neuen Buch Data Preparation for Machine Learning, das schrittweise Anleitungen und die Python-Quellcodedateien für alle Beispiele enthält.
Lassen Sie uns anfangen.
How to Grid Search Data Preparation Techniques
Foto von Wall Boat, einige Rechte vorbehalten.
- Übersicht über das Tutorial
- Grid-Suchtechnik für die Datenvorbereitung
- Sollen wir mit der Datenvorbereitung beginnen?
- Datensatz und Leistungsbasis
- Weinklassifizierungsdatensatz
- Baseline-Modellleistung
- Grid-Search-Ansatz zur Datenaufbereitung
- Weitere Lektüre
- Bücher
- APIs
- Zusammenfassung
- Get a Handle on Modern Data Preparation!
- Prepare your Machine Learning Data in Minutes
- Bringen Sie moderne Datenaufbereitungstechniken in Ihre Machine Learning Projekte
Übersicht über das Tutorial
Dieses Tutorial ist in drei Teile unterteilt; sie sind:
- Grid-Suchtechnik für die Datenvorbereitung
- Datensatz und Leistungsbasis
- Weinklassifizierungsdatensatz
- Basismodellleistung
- Grid-Suchansatz für die Datenvorbereitung
Grid-Suchtechnik für die Datenvorbereitung
Datenvorbereitung kann eine Herausforderung sein.
Der am häufigsten vorgeschriebene und befolgte Ansatz besteht darin, den Datensatz zu analysieren, die Anforderungen der Algorithmen zu überprüfen und die Rohdaten so umzuwandeln, dass sie den Erwartungen der Algorithmen am besten entsprechen.
Dies kann effektiv sein, ist aber auch langsam und erfordert unter Umständen umfassende Kenntnisse der Datenanalyse und der Algorithmen des maschinellen Lernens.
Eine alternative Vorgehensweise besteht darin, die Aufbereitung der Eingangsvariablen als Hyperparameter der Modellierungspipeline zu behandeln und sie zusammen mit der Wahl des Algorithmus und der Algorithmenkonfigurationen abzustimmen.
Das kann eine Datentransformation sein, die „nicht funktionieren sollte“ oder „für den Algorithmus nicht geeignet sein sollte“, aber dennoch zu einer guten oder großartigen Leistung führt. Alternativ kann es sich um das Fehlen einer Datentransformation für eine Eingangsvariable handeln, die als „unbedingt erforderlich“ angesehen wird und dennoch zu einer guten oder großartigen Leistung führt.
Dies kann durch die Entwicklung einer Rastersuche von Datenaufbereitungstechniken und/oder Sequenzen von Datenaufbereitungstechniken in Pipelines erreicht werden. Dabei kann jede Technik an einem einzelnen ausgewählten Algorithmus für maschinelles Lernen oder an einer Reihe von Algorithmen für maschinelles Lernen evaluiert werden.
Der Vorteil dieses Ansatzes besteht darin, dass er immer zu Vorschlägen für Modellierungspipelines führt, die relativ gute Ergebnisse liefern. Am wichtigsten ist jedoch, dass die nicht offensichtlichen und nicht intuitiven Lösungen für Praktiker aufgedeckt werden können, ohne dass tiefes Fachwissen erforderlich ist.
Wir können diesen Ansatz zur Datenvorbereitung anhand eines praktischen Beispiels erkunden.
Bevor wir uns mit einem praktischen Beispiel befassen, wählen wir zunächst einen Standarddatensatz aus und entwickeln eine Grundlinie für die Leistung.
Sollen wir mit der Datenvorbereitung beginnen?
Machen Sie jetzt meinen kostenlosen 7-Tage-E-Mail-Crashkurs (mit Beispielcode).
Klicken Sie auf die Anmeldung und erhalten Sie außerdem eine kostenlose PDF-Ebook-Version des Kurses.
Laden Sie sich Ihren KOSTENLOSEN Mini-Kurs herunter
Datensatz und Leistungsbasis
In diesem Abschnitt werden wir zunächst einen Standarddatensatz für maschinelles Lernen auswählen und eine Leistungsbasis für diesen Datensatz festlegen. Dies bildet den Kontext für die Untersuchung der Rastersuchmethode zur Datenaufbereitung im nächsten Abschnitt.
Weinklassifizierungsdatensatz
Wir verwenden den Weinklassifizierungsdatensatz.
Dieser Datensatz hat 13 Eingabevariablen, die die chemische Zusammensetzung von Weinproben beschreiben, und erfordert, dass der Wein als einer von drei Typen klassifiziert wird.
Mehr über den Datensatz erfahren Sie hier:
- Wein-Datensatz (wine.csv)
- Wein-Datensatzbeschreibung (wine.names)
Der Datensatz muss nicht heruntergeladen werden, da wir ihn automatisch als Teil unserer Arbeitsbeispiele herunterladen.
Öffnen Sie den Datensatz und sehen Sie sich die Rohdaten an. Die ersten Datenzeilen sind unten aufgelistet.
Wir sehen, dass es sich um ein prädiktives Mehrklassen-Klassifizierungsproblem mit numerischen Eingabevariablen handelt, die jeweils unterschiedliche Skalen haben.
Das folgende Beispiel lädt den Datensatz und teilt ihn in die Eingabe- und Ausgabespalten auf und fasst dann die Datenfelder zusammen.
Wenn wir das Beispiel ausführen, sehen wir, dass der Datensatz korrekt geladen wurde und dass es 179 Datenzeilen mit 13 Eingabevariablen und einer einzigen Zielvariablen gibt.
1
|
(178, 13) (178,)
|
Als Nächstes wollen wir ein Modell auf diesem Datensatz evaluieren und eine Grundlinie für die Leistung festlegen.
Baseline-Modellleistung
Wir können eine Baseline für die Leistung bei der Weinklassifizierung erstellen, indem wir ein Modell mit den rohen Eingabedaten bewerten.
In diesem Fall werden wir ein logistisches Regressionsmodell evaluieren.
Zunächst können wir eine Funktion zum Laden des Datensatzes definieren und eine minimale Datenvorbereitung durchführen, um sicherzustellen, dass die Eingaben numerisch sind und das Ziel mit Etiketten codiert ist.
Wir werden das Modell mit dem Goldstandard der wiederholten geschichteten k-fachen Kreuzvalidierung mit 10 Faltungen und drei Wiederholungen bewerten.
Wir können dann die Funktion aufrufen, um den Datensatz zu laden, unser Modell zu definieren und es dann zu bewerten, wobei wir die mittlere Genauigkeit und die Standardabweichung angeben.
Das vollständige Beispiel für die Bewertung eines logistischen Regressionsmodells auf dem Rohdatensatz für die Weinklassifizierung ist unten aufgeführt.
Die Ausführung des Beispiels bewertet die Modellleistung und meldet die mittlere Klassifizierungsgenauigkeit und die Standardabweichung.
Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Bewertungsverfahrens oder aufgrund von Unterschieden in der numerischen Präzision variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.
In diesem Fall können wir sehen, dass das logistische Regressionsmodell, das an die rohen Eingabedaten angepasst wurde, eine durchschnittliche Klassifizierungsgenauigkeit von ca. 95,3 % erreicht hat, was eine Grundlage für die Leistung darstellt.
1
|
Genauigkeit: 0.953 (0.048)
|
Als Nächstes wollen wir untersuchen, ob wir die Leistung mit dem Grid-Search-basierten Ansatz zur Datenaufbereitung verbessern können.
Grid-Search-Ansatz zur Datenaufbereitung
In diesem Abschnitt können wir untersuchen, ob wir die Leistung mit dem Grid-Search-Ansatz zur Datenaufbereitung verbessern können.
Der erste Schritt besteht darin, eine Reihe von Modellierungspipelines zu definieren, die evaluiert werden sollen, wobei jede Pipeline eine (oder mehrere) Datenaufbereitungstechniken definiert und mit einem Modell endet, das die transformierten Daten als Eingabe verwendet.
Wir werden eine Funktion definieren, um diese Pipelines als eine Liste von Tupeln zu erstellen, wobei jedes Tupel den Kurznamen für die Pipeline und die Pipeline selbst definiert. Wir werden eine Reihe verschiedener Datenskalierungsmethoden (z.B. MinMaxScaler und StandardScaler), Verteilungstransformationen (QuantileTransformer und KBinsDiscretizer) sowie Dimensionalitätsreduktionstransformationen (PCA und SVD) evaluieren.
Wir können dann diese Funktion aufrufen, um die Liste der Transformationen zu erhalten, dann jede einzelne aufzählen, sie evaluieren und die Leistung auf dem Weg berichten.
Am Ende des Laufs können wir ein Box- und Whisker-Diagramm für jeden Satz von Werten erstellen und die Verteilungen der Ergebnisse visuell vergleichen.
1
2
3
4
|
…
# Plotten des Ergebnisses
pyplot.boxplot(results, labels=names, showmeans=True)
pyplot.show()
|
Nachfolgend ist das vollständige Beispiel für die Aufbereitung von Rasterdaten für den Weinklassifizierungsdatensatz aufgeführt.
Die Ausführung des Beispiels bewertet die Leistung der einzelnen Pipelines und gibt die mittlere Klassifizierungsgenauigkeit und die Standardabweichung an.
Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Bewertungsverfahrens oder aufgrund von Unterschieden in der numerischen Präzision abweichen. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.
In diesem Fall können wir sehen, dass die Standardisierung der Eingabevariablen und die Verwendung einer Quantilstransformation beide das beste Ergebnis mit einer Klassifizierungsgenauigkeit von etwa 98.7 Prozent, eine Verbesserung gegenüber der Basislinie ohne Datenaufbereitung, die eine Klassifizierungsgenauigkeit von 95,3 Prozent erzielte.
Sie können Ihre eigenen Modellierungspipelines zur get_pipelines()-Funktion hinzufügen und ihre Ergebnisse vergleichen.
Können Sie bessere Ergebnisse erzielen?
Lassen Sie es mich in den Kommentaren unten wissen.
1
2
3
4
5
6
|
>Norm: 0.976 (0.031)
>std: 0.987 (0.023)
>quan: 0.987 (0.023)
>kbins: 0.968 (0.045)
>pca: 0.963 (0.039)
>svd: 0.953 (0.048)
|
Eine Abbildung zeigt Box- und Whisker-Diagramme, die die Verteilung der Klassifizierungsgenauigkeitswerte für jede Datenaufbereitungstechnik zusammenfassen. Es ist zu erkennen, dass die Verteilung der Werte für die Standardisierung und die Quantil-Transformation kompakt und sehr ähnlich ist und einen Ausreißer aufweist. Die Ergebnisse deuten darauf hin, dass die Standardisierung des Datensatzes wahrscheinlich ein wichtiger Schritt bei der Datenaufbereitung ist und dass verwandte Transformationen wie die Quantil-Transformation und vielleicht sogar die Power-Transformation Vorteile bieten können, wenn sie mit der Standardisierung kombiniert werden, indem eine oder mehrere Eingabevariablen gaußförmiger gemacht werden.
Box- und Whisker-Plot der Klassifizierungsgenauigkeit für verschiedene Datentransformationen auf dem Weinklassifizierungsdatensatz
Wir können auch Sequenzen von Transformationen untersuchen, um zu sehen, ob sie eine Leistungssteigerung bieten können.
Zum Beispiel könnten wir die RFE-Merkmalsauswahl nach der Standardisierungstransformation anwenden, um zu sehen, ob dieselben oder bessere Ergebnisse mit weniger Eingabevariablen (z.
Wir könnten auch sehen wollen, ob eine Potenztransformation, der eine Datenskalierungstransformation vorausgeht, eine gute Leistung auf dem Datensatz erzielen kann, da wir glauben, dass dies angesichts des Erfolgs der Quantiltransformation möglich ist.
Die aktualisierte get_pipelines()-Funktion mit Sequenzen von Transformationen wird unten bereitgestellt.
Das vollständige Beispiel ist unten aufgeführt.
Das Ausführen des Beispiels bewertet die Leistung jeder Pipeline und meldet den Mittelwert und die Standardabweichung der Klassifizierungsgenauigkeit.
Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Bewertungsverfahrens oder aufgrund von Unterschieden in der numerischen Präzision variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.
In diesem Fall können wir sehen, dass die Standardisierung mit Merkmalsauswahl eine zusätzliche Verbesserung der Genauigkeit von 98,7 % auf 98,9 % bietet, obwohl die Datenskalierung und die Power-Transformation keinen zusätzlichen Vorteil gegenüber der Quantil-Transformation bieten.
1
2
|
>std: 0.989 (0.022)
>power: 0.987 (0.023)
|
Eine Abbildung wird erstellt, die Box- und Whisker-Diagramme zeigt, die die Verteilung der Klassifizierungsgenauigkeitswerte für jede Datenaufbereitungstechnik zusammenfassen.
Wir können sehen, dass die Verteilung der Ergebnisse für beide Pipelines von Transformationen kompakt ist mit sehr wenig Streuung, außer Ausreißern.
Box- und Whisker-Plot der Klassifizierungsgenauigkeit für verschiedene Sequenzen von Datentransformationen auf dem Weinklassifizierungsdatensatz
Weitere Lektüre
In diesem Abschnitt finden Sie weitere Ressourcen zu diesem Thema, wenn Sie das Thema vertiefen möchten.
Bücher
- Feature Engineering and Selection, 2019.
- Feature Engineering for Machine Learning, 2018.
APIs
- sklearn.pipeline.Pipeline API.
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie man einen Grid-Search-Ansatz für die Datenvorbereitung mit tabellarischen Daten verwendet.
Sie haben insbesondere gelernt:
- Die Grid-Search bietet einen alternativen Ansatz für die Datenvorbereitung für tabellarische Daten, bei dem Transformationen als Hyperparameter der Modellierungspipeline ausprobiert werden.
- Wie man die Rastersuchmethode für die Datenaufbereitung verwendet, um die Modellleistung gegenüber einer Basislinie für einen Standardklassifizierungsdatensatz zu verbessern.
- Wie man Rastersuchsequenzen von Datenaufbereitungsmethoden verwendet, um die Modellleistung weiter zu verbessern.
Haben Sie Fragen?
Setzen Sie sich mit Ihren Fragen in den Kommentaren unten auseinander und ich werde mein Bestes tun, um sie zu beantworten.
Get a Handle on Modern Data Preparation!
Prepare your Machine Learning Data in Minutes
…mit nur ein paar Zeilen Python-Code
Entdecken Sie in meinem neuen Ebook:
Datenaufbereitung für maschinelles Lernen
Es bietet Tutorials zum Selbststudium mit vollständigem Arbeitscode zu:
Feature Selection, RFE, Data Cleaning, Data Transforms, Scaling, Dimensionality Reduction, und vielem mehr….
Bringen Sie moderne Datenaufbereitungstechniken in
Ihre Machine Learning Projekte
Sehen Sie, was drin ist