Kapitel 4. Mit Daten arbeiten

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Häufig sind wir begierig darauf, Modelle des maschinellen Lernens (ML) zu erstellen, zu trainieren und zu nutzen, und finden es spannend, sie einzusetzen, um herauszufinden, was funktioniert und was nicht. Das Ergebnis kommt sofort, und die Belohnung ist befriedigend. Was oft ignoriert oder nicht ausreichend diskutiert wird, ist die Datenvorverarbeitung. In diesem Kapitel werden wir verschiedene Datentypen untersuchen und die Bedeutung der Datenvorverarbeitung und des Feature Engineering sowie die damit verbundenen Techniken und bewährten Methoden näher beleuchten. Wir werden auch das Konzept der Verzerrung von Daten diskutieren. Das Kapitel schließt mit einer Erläuterung der Predictive Analytics Pipeline und einigen bewährten Methoden zur Auswahl und Arbeit mit ML-Modellen.

Daten verstehen

Unternehmen speichern ihre Daten traditionell in Datenbanken und Flatfiles. Deshalb beginnen wir das Kapitel mit den Grundlagen einer traditionellen relationalen Datenbank.

Eine relationale Datenbank speichert Daten in einer oder mehreren Tabellen. Tabellen haben Zeilen, die Datensätze darstellen, und Spalten, die einzelne Merkmale repräsentieren. Bei einer Kundendatenbank könnte zum Beispiel jede Zeile für einen anderen Kunden stehen, und du könntest Spalten für die Kunden-ID, den Namen und die Telefonnummer haben.

Bei der Entscheidung, welche Spalten in eine Tabelle aufgenommen werden sollen, gibt es einige Dinge zu beachten. Wenn zum Beispiel eine Million Kunden in deiner Datenbank in Pakistan wohnen und du die Länderdaten als Teil des Kundendatensatzes speicherst, speicherst du Pakistan eine Million Mal. Ein anderes Beispiel: Wenn du die Social-Media-Daten deiner Kunden speicherst und einige deiner Kunden nicht in den sozialen Medien aktiv sind, werden einige deiner Datensätze leere Felder haben. Tabelle 4-1 zeigt ein Beispiel für beide Szenarien.

Tabelle 4-1. Relationale Datenbanktabelle mit Datenduplikaten und leeren Feldern
ID Name Telefon Stadt Land Instagram Twitter
1 Unbekannter +111222333 Los Angeles USA @Doe1 <Leer>
2 Kareem K +923334445 Karachi Pakistan <Leer> @Kareem
3 A Ali +9211111111 Lahore Pakistan @AAli @Aali
... ... ... ... ... ...
1000000 Meister Yoda +6611122211 Pattaya Thailand @TheYoda <Leer>

Leere Felder und doppelte Daten führen zu Problemen bei der Speicherung und der Leistung. Um diese Situation zu vermeiden, würde eine relationale Datenbank diese Daten in zwei Tabellen aufteilen oder normalisieren: eine für das Land und eine für die sozialen Medien, wie in Abbildung 4-1 dargestellt.

Abbildung 4-1. Beispiel für die Normalisierung einer Datenbank

Abbildung 4-1 zeigt nur eine von vielen Möglichkeiten, wie wir Daten normalisieren können. Normalisierte Tabellen sind durch Beziehungen miteinander verbunden, die es uns ermöglichen, Daten in sie zu schreiben und aus ihnen zu holen. Wenn wir mit relationalen Datenbanken arbeiten, haben wir es oft mit normalisierten Daten zu tun, die Dutzende, Hunderte oder sogar Tausende von Tabellen umfassen. Eine andere Familie von Datenbankmanagementsystemen, bekannt als NoSQL, ist in diesen Fällen optimal, weil sie große Datenmengen verarbeiten und speichern kann und skalierbar ist, um wachsende Datenmengen aufzunehmen.

Es gibt Hunderte von Arten von relationalen Datenbanken, über die du auf der DB-Engines Website mehr erfahren kannst. In diesem Kapitel werden wir ein paar der gängigsten Typen behandeln.

Wir beginnen mit Key-Value-Stores, die Daten in einem einfachen Key-Value-Format speichern. In einem Key-Value-Store können die vorangegangenen Kundendaten wie folgt gespeichert werden:

Customer_ID - 1
Name - John Doe
Phone - +111222333
City - Los Angeles
Country - USA
Instagram - @Doe
Twitter - NA

Redis und Memcached sind nur einige der vielen Beispiele für Key-Value-Datenbanken, die heute verfügbar sind. Cloud-Provider bieten auch ihre eigenen Key-Value-Datenbankdienste an, indem sie Multimodel-Dienste wie AWS DynamoDB nutzen.

Eine weitere interessante Datenbank ist der sogenannte Dokumentenspeicher. Einige gängige Beispiele sind MongoDB, CouchDB, Couchbase und Firestore. Die Struktur eines Dokumentenspeichers ist viel umfangreicher als die eines Key-Value-Speichers, was die Art und Weise angeht, wie er Daten speichert und darstellt. Der folgende Code ist ein Beispiel für einen Dokumentenspeicher für einen Kundendatensatz:

{
Customer_ID: 1
Name:
    {
        First: John,
        Last: Doe
    },
Phone: +111222333,
Address:
{
City:    Los Angeles,
Country: USA
}
Social:
[
Instagram : @Doe
]
}

Es gibt noch viele andere NoSQL-Datenbanken, wie z. B. Breitspalten-, Suchmaschinen- und Zeitreihen-Datenbanken. Die Daten in den Datenbanken haben alle möglichen Formen und Größen, und wir müssen diese Daten in ein Format bringen, mit dem wir unsere Modelle füttern und trainieren können.

Daten können auch in flachen Dateien gespeichert werden, zum Beispiel IoT-Sensordaten in einem Objektspeicher. Diese Daten können in vielen Formaten vorliegen, darunter CSV, Parquet, JSON oder XML. Es kann sich aber auch um unstrukturierte Daten handeln, z. B. PDF-Dateien, Audio- und Videoaufzeichnungen und andere Binärdaten. In den meisten Fällen sind wir weniger an den Dateien selbst als an den darin enthaltenen Metadaten interessiert, z. B. dem Inhalt einer PDF-Datei, dem Thema und den Ansichten einer Videodatei und so weiter. Diese Daten befinden sich oft in einer Datenbank, von der aus sie in ein ML-Modell eingespeist werden können. Maschinelles Lernen kann aber auch dazu verwendet werden, unstrukturierte Daten zu interpretieren und zu klassifizieren, d.h. du kannst ein Modell verwenden, um unstrukturierte Daten vorzuverarbeiten und ein anderes Modell, um Schlussfolgerungen aus den Daten zu ziehen.

Kurz gesagt: Daten aus der realen Welt haben alle möglichen Formen und Größen und sind oft mit Fehlern behaftet. Es kann vorkommen, dass Daten fehlen, doppelt vorhanden sind oder in Formaten vorliegen, die von unseren ML-Bibliotheken nicht unterstützt werden. Mit der Datenvorverarbeitung und dem Feature-Engineering können wir sicherstellen, dass unsere Predictive-Analytics-Modelle mit qualitativ hochwertigen Daten gespeist werden, und sie helfen uns, Datenpunkte zu identifizieren und in einigen Fällen zu erstellen, die uns helfen, die Beziehung zwischen den Daten und den Werten, die wir vorhersagen wollen, zu verstehen.

Datenvorverarbeitung und Feature Engineering

Die Datenvorverarbeitung ermöglicht es uns, die Daten in eine Form zu bringen, die von unseren Predictive-Analytics-Modellen unterstützt wird und die effizient verarbeitet werden kann. BeimFeature-Engineering geht es um die Erstellung, Umwandlung und Auswahl von Merkmalen, um die Leistung von ML-Modellen zu verbessern. Wir wollen uns mit einigen Datenproblemen beschäftigen und sehen, wie wir sie lösen können.

Umgang mit fehlenden Daten

Fehlende Daten können auf verschiedene Weise ausgeglichen werden:

Streiche die Datensätze, in denen Werte fehlen.

Das ist der einfachste Weg, um mit fehlenden Daten umzugehen. Wir müssen uns jedoch darüber im Klaren sein, ob das Weglassen von Datensätzen zu einer Verzerrung unserer Daten führt. Auch wenn die Werte für ein Merkmal fehlen, kann ein anderes Merkmal einen wichtigen Beitrag zum Modellzug leisten.

Ersetze leere Werte durch Null(en).

In den meisten Fällen wird dadurch der programmatische Fehler, der durch fehlende Werte beim Training verursacht wird, beseitigt. Betrachte die Daten eines IoT-Sensors, der eine 0 sendet, wenn er kein Licht erkennt, und eine 1, wenn er Licht erkennt. In diesem Fall bedeutet die 0 ein Ereignis, und das Einfügen einer Dummy-0 in den Datensatz kann die Interpretation der Daten verändern.

Ersetze die Daten durch den Mittelwert aus der Menge.

Nehmen wir an, wir haben es mit einem Merkmal zu tun, das die Noten von Schülern in einem bestimmten Fach in einem bestimmten Land darstellt. In einem solchen Fall wäre es eine gute Schätzung, die leeren Noten durch Mittelwerte zu ersetzen. Andere statistische Maße wie Median und Modus können in bestimmten Fällen ebenfalls verwendet werden.

Sage die fehlenden Werte voraus.

Wir können ein anderes Modell verwenden, um die fehlenden Werte vorherzusagen, indem wir das Attribut mit den fehlenden Werten zum Label machen, vorausgesetzt, es gibt andere Attribute, die für eine solche Vorhersage verwendet werden können.

Kodierung kategorischer Daten

Bestimmte ML-Modelle funktionieren mit bestimmten Datentypen. Betrachte die folgenden Daten in einem Trainingsdatensatz:

Property_type: ( apartment, townhouse, villa )

In diesem Fall ist ein numerisches Modell nicht in der Lage, die Zeichenfolgen "apartment", "townhouse" und "villa" zu interpretieren. Wenn wir jedoch ein Modell zur Vorhersage von Mietpreisen für eine Immobiliendatenbank erstellen, wäre Property_type ein wichtiges Merkmal, das beim Training des Modells berücksichtigt werden muss. Daher können wir diese kategorischen String-Werte durch numerische Zahlen ersetzen.

Es gibt verschiedene Möglichkeiten, Merkmale zu kodieren. DieOne-Hot-Kodierung ist eine der gängigsten Methoden zur Kodierung von Merkmalen beim maschinellen Lernen. Bei der One-Hot-Kodierung wird für jede Kategorie des Merkmals eine eigene Spalte erstellt. Sie markiert die Spalte mit einer 1, wenn die Kategorie in einem Datensatz vorhanden ist, und mit einer 0, wenn sie nicht vorhanden ist. Tabelle 4-2 ist ein Beispiel für die One-Hot-Codierung in der Eigenschaftsdatenbank.

Tabelle 4-2. One-Hot-Codierung
Wohnung Stadthaus Villa
1 0 0
0 0 1
0 1 0

Eine weitere einfache Möglichkeit, ein kategoriales Merkmal zu kodieren, ist die Label-Kodierung, bei der jedes Label durch eine Zahl ersetzt wird. Um beim Beispiel der Immobiliendatenbank zu bleiben: Wenn wir die Zahlen 1, 2 und 3 für Wohnungen, Stadthäuser bzw. Villen verwenden, könnte das Modell daraus schließen, dass es eine gewisse Ordnung (in der Größenordnung oder anders) in diesen Kategorien gibt. Es ist also besser, die Kodierung von Bezeichnungen zu verwenden, wenn wir wissen, dass die Kategorien ungeordnet sind, oder wenn es sich um eine binäre Kategorie mit den Werten "ja" und "nein" handelt.

Zusätzlich zu diesen beiden Arten der Kodierung können wir auch andere mathematische Techniken anwenden, z. B. jede Kategorie in ihre binäre Darstellung umwandeln und dann eine separate Spalte für jede Ziffer der binären Darstellung einrichten oder eine zufällige Hash-Funktion verwenden, um die Kategoriestrings in Zahlen umzuwandeln.

Datenumwandlung

Wenn wir mit mehreren Merkmalen arbeiten, wollen wir sicherstellen, dass ein Merkmal die anderen nicht überschattet. Nehmen wir an, unser Grundstücksdatensatz enthält Merkmale für die Quadratmeterzahl und den Preis der verschiedenen Grundstücke. Während die Quadratmeterzahl in die Hunderte oder Tausende gehen kann, kann der Preis in die Millionen gehen. Beim Trainieren eines Modells würde in diesem Fall der Preis die Quadratmeterzahl überschatten, weil er auf einer größeren Zahlenskala dargestellt ist.

Um dieses Problem zu lösen, können wir Skalierer verwenden, die helfen, die Merkmale auf einen ähnlichen Maßstab zu bringen. Zu den häufig verwendeten Skalierern gehören die folgenden:

Z-Score-Normalisierung

Dieser Skalierer zieht den Mittelwert des Merkmals vom Wert ab und teilt das Ergebnis dann durch die Standardabweichung. Dies hilft, das Merkmal auf eine Normalverteilung mit einem Mittelwert von 0 und einer Standardabweichung von 1 zu skalieren.

Min-Max-Skalierer

Ein Min-Max-Skalierer bringt die Skalen mehrerer Merkmale in einen gemeinsamen Bereich. Wir können zum Beispiel einen Bereich von 0 bis 1 auswählen und dann einen Min-Max-Skalierer verwenden, um alle entsprechenden Merkmale auf diesen Bereich zu skalieren.

Max-abs scaler

Ein max-abs Skalierer skaliert ein Merkmal auf seinen maximalen absoluten Wert. Folglich liegt der Transformationsbereich für das transformierte Merkmal zwischen -1 und 1. Wenn es keine negativen Werte gibt, liegt der Bereich zwischen 0 und 1; auf diese Weise würde sich der max-abs-Skalierer ähnlich verhalten wie ein min-max-Skalierer mit einem Bereich von 0 bis 1.

Ausreißer-Management

Ausreißer sind Datenpunkte, die nicht mit dem allgemeinen Muster der Werteverteilung des Merkmals übereinstimmen. Ausreißer können sich negativ auf das Training und damit auf die Vorhersagekraft des Modells auswirken, da das Modell mit einem abweichenden Vorhersagebereich arbeitet. Um die Erkennung von Ausreißern zu verstehen, müssen wir ein paar verwandte Begriffe erklären:

Interquartilsbereich (IQR)

Hier leben die mittleren 50 % eines Datensatzes oder die Differenz zwischen dem 75. und dem 25.

Ausreißer

Dies sind Datenpunkte, die außerhalb des folgenden Bereichs liegen:

Minimum = Q1 - IQR*1,5 ← → Maximum = Q3 + IQR*1,5

Abbildung 4-2 zeigt ein Beispiel für den Interquartilsbereich und Ausreißer. In der Abbildung stellt Q1 das 25. Perzentil und Q3 das 75. Perzentil dar.

Abbildung 4-2. Interquartilsbereich und Ausreißer

Beim Umgang mit den Auswirkungen von Ausreißern solltest du Folgendes beachten:

  • Ausreißer können mithilfe des maximalen und minimalen Bereichs herausgefiltert werden. Beim Herausfiltern von Ausreißern ist es wichtig, sich über den Informationsverlust im Klaren zu sein, der durch das Herausfiltern entsteht. Das Ziel sollte sein, nur Ausreißer herauszufiltern, die auf fehlerhafte Daten zurückzuführen sind.

  • Du kannst Ausreißer durch Maximal- oder Minimalwerte ersetzen, um ihre Auswirkungen auf das Modelltraining zu verringern.

  • Andere Transformationen, wie Logging und Binning, können verwendet werden, um die Auswirkungen von Ausreißern zu minimieren.

  • Ausreißer können auch als eigene Datenkategorie behandelt und dann als Teil eines mehrschichtigen Modellierungsansatzes verwendet werden, um sicherzustellen, dass das Modell die in den Ausreißern enthaltenen Informationen nicht verliert.

Umgang mit unausgewogenen Daten

Unausgewogene Daten können entstehen, wenn die Anzahl der Proben einer Kategorie die Anzahl der Proben einer anderen Kategorie bei weitem übersteigt. Die Verwendung eines solchen Datensatzes zum Training würde zu stark verzerrten Vorhersagemodellen führen. Ein Beispiel für unausgewogene Daten sind betrügerische Kreditkartentransaktionen, bei denen die Zahl der legitimen Transaktionen weitaus höher ist als die der betrügerischen. Mit einem solchen Ungleichgewicht kannst du auf folgende Weise umgehen:

  • Wenden Sie ein größeres Gewicht auf die Stichprobe der Minderheitenklasse an. Dies würde den Einfluss der einzelnen Stichprobe innerhalb der Minderheitenklasse erhöhen, um das Ungleichgewicht in der Anzahl der Stichproben auszugleichen.

  • Überstimme die Minderheitenklasse, indem du zusätzliche Minderheitenklassen-Stichproben synthetisch erzeugst, bis das gewünschte Klassenverhältnis erreicht ist.

  • Unterstimme die Mehrheitsklasse, indem du eine Teilmenge der Mehrheitsklasse zufällig aus dem Datensatz auswählst, um das gewünschte Verhältnis von Stichproben mit der Minderheitsklasse zu erreichen.

Daten kombinieren

Die Daten in einem Predictive-Analytics-Modell können aus einer oder mehreren Datenquellen stammen. Die Daten aus einer relationalen Datenbank können sich zum Beispiel über mehrere Tabellen erstrecken, was bedeutet, dass wir die Daten kombinieren müssen, bevor wir sie für das Modelltraining verwenden können. Relationale Datenbanken bieten mit Joins eine Möglichkeit, Daten aus mehreren Tabellen zu kombinieren. Je nach Datenbanktechnologie und Größe der Tabellen kann ein Join ein teurer Vorgang sein. Einige Technologien ermöglichen es auch, Joins über Tabellen in mehreren Datenbanken durchzuführen.

Um noch einen Schritt weiter zu gehen, müssen wir vielleicht Daten aus verschiedenen Datenquellen kombinieren, z. B. IoT-Datenbanken, relationale Datenbanken, Objektspeicher und andere NoSQL-Datenbanken. Eine solche Datenpipeline würde aus den Quellsystemen, der ML-Zielplattform und einem Vermittler bestehen, der die Daten für die ML-Plattform so aufbereitet, wie sie sie braucht. Dieser Prozess der Datenübertragung wird oft als ETL (kurz für Extract, Transform, and Load) oder ELT (kurz für Extract, Load, and Transform) bezeichnet. Abbildung 4-3 zeigt ein Beispiel für eine solche Pipeline.

Abbildung 4-3. Die Datenpipeline

In einer typischen Datenpipeline werden die Daten aus den Datenquellen extrahiert und von der Quelle in ein Format umgewandelt, das am Zielort verwendet werden kann. Anschließend werden die Daten in ein zentrales Repository geladen, das in der Lage ist, diese Daten für verschiedene vorgelagerte Systeme, einschließlich ML-Plattformen, freizugeben, um prädiktive Analysen zu unterstützen. Es gibt mehrere kommerzielle ETL-Tools, die zahlreiche Datenquellen unterstützen, darunter sowohl kommerzielle als auch Open-Source-Optionen. Einige von ihnen sind auch als Cloud-Services verfügbar. Die meisten Cloud-Provider bieten auch ihre eigenen Varianten von ETL-Diensten an. Mit diesen Tools kannst du kleine Datenänderungen in den Quellsystemen erfassen und die Änderungen dann in der Zieldatendrehscheibe widerspiegeln.

Eine weitere Kategorie von Datenverschiebungstools sind Systeme, die Daten ständig mit Hilfe von Datenströmen von der Quelle zum Ziel verschieben. Die Daten können zwar direkt an ML-Plattformen weitergegeben werden, aber die meisten ausgereiften Unternehmen bauen eine Art Datendrehscheibe auf, um die Daten für verschiedene Anwendungsfälle zu nutzen, z. B. für andere vorgelagerte Systeme und Berichtsszenarien. Sie dienen auch als Grundlage für ML-Pipelines.

Auswahl der Merkmale

Wenn wir uns unseren Datensatz ansehen, müssen wir sicherstellen, dass wir die richtigen Merkmale für das Modelltraining auswählen. Wenn wir beispielsweise zu viele Merkmale verwenden, kann das Training und die Verarbeitung ineffizient werden und sich negativ auf die Genauigkeit auswirken. Außerdem können bestimmte Merkmale überflüssig sein und ihr Weglassen würde sich nicht auf die Vorhersagekraft des Modells auswirken, während andere irrelevant sein können, d. h., es gibt keinen wirklichen Zusammenhang zwischen dem Merkmal und dem zu prognostizierenden Label. Es gibt einige Techniken, die uns bei der Auswahl der Merkmale helfen können.

Eine gängige Technik ist die Korrelationsanalyse. Bei diesem Verfahren wird die Korrelation zwischen den einzelnen Merkmalen und dem Label untersucht, um festzustellen, welche Merkmale ausgewählt werden sollten. Beachte, dass die Korrelationsanalyse gut für lineare Beziehungen funktioniert, aber die Bedeutung nichtlinearer Beziehungen unterschätzt werden kann. Nichtlineare Beziehungen können verschiedene Formen annehmen, wie z. B. quadratische, exponentielle, logarithmische oder sinusförmige Muster. In diesen Fällen ändert sich die Beziehung zwischen den Variablen mit unterschiedlichen Raten, was zu komplexeren Mustern führt, wenn sie in einem Diagramm dargestellt werden. Da die Korrelationsanalyse jedes Merkmal für sich betrachtet, kann sie auch nicht den Einfluss einer dritten Variable messen, die sich sowohl auf das Merkmal als auch auf das Label auswirken könnte. Die Korrelationsanalyse ist zwar ein wertvolles Instrument, um Beziehungen zwischen Variablen zu untersuchen, aber es ist wichtig, sich ihrer Grenzen bewusst zu sein, vor allem, wenn nichtlineare Beziehungen vorherrschen. Bei nichtlinearen Beziehungen ist die gegenseitige Information, die durch den mi_score dargestellt wird, ein besseres Maß, um zu verstehen, wie viel Variation einer Variable durch die andere vorhersagbar ist.

Eine zweite erwähnenswerte Technik ist die Hauptkomponentenanalyse (PCA). Bei diesem Verfahren werden die ursprünglichen Merkmale in eine Reihe unkorrelierter Variablen umgewandelt, die als Hauptkomponenten bezeichnet werden. Durch die Auswahl einer Teilmenge der Hauptkomponenten, die in Bezug auf die Datenvarianz am besten geeignet sind, können wir die Dimensionalität des Trainingsdatensatzes reduzieren, ohne wichtige Vorhersageinformationen zu verlieren.

Ein drittes Verfahren, bekannt als forward selection, beginnt mit einer minimalen Anzahl von Merkmalen und misst dann die Leistung des Modells in Bezug auf die Vorhersage. Bei jeder Iteration wird ein Merkmal hinzugefügt und die Leistung erneut gemessen. Am Ende wird der Satz von Merkmalen mit den höchsten Vorhersagewerten ausgewählt.

Die Rückwärtsselektion schließlich ist ähnlich wie die Vorwärtsselektion, aber sie beginnt mit allen möglichen Merkmalen und eliminiert bei jeder Iteration ein Merkmal, bis sie zu einer optimalen Vorhersagezahl gelangt.

Aufteilung vorverarbeiteter Daten

Sobald die Daten für das Training bereit sind, ist es eine bewährte Methode, sie in die folgenden Gruppen aufzuteilen:

Trainingsset

Dies ist in der Regel der größte Teil der Daten (70 % oder mehr), der für das Training des Predictive-Analytics-Modells verwendet wird.

Validierungssatz

Dabei handelt es sich um einen kleineren Datensatz, der während des Trainings zur Modellauswahl und zur Feinabstimmung des Modells und seiner Hyperparameter verwendet wird.

Testsatz

Diese Daten werden verwendet, um die Leistung des Modells bei ungesehenen Daten unabhängig zu beurteilen. Die Testdaten müssen unbedingt verwendet werden, sobald das Modell trainiert und feinabgestimmt ist, um es unabhängig zu testen. Es sollte nicht während der Modellauswahl und des Trainingszyklus verwendet werden.

Vorurteile verstehen

Wir haben bereits früher im Kapitel über Verzerrungen gesprochen. Hier werden wir erörtern, was das ist und wie es sich auf unsere Predictive-Analytics-Modelle auswirkt.

Der Bias kann als die Abweichung der Vorhersagen unseres Modells von den tatsächlichen Werten in der realen Welt erklärt werden. Ein Modell, das einen hohen Bias aufweist, schneidet in der Regel sowohl bei den Trainings- als auch bei den Testdaten schlecht ab. Idealerweise wollen wir also die Verzerrung reduzieren. Um das zu erreichen, sollten wir einige der häufigsten Gründe verstehen, die zu Verzerrungen führen. Betrachte die folgenden Szenarien:

Ein unausgewogener Trainingsdatensatz für betrügerische Banktransaktionen, bei dem 1% der Daten betrügerische Transaktionen und 99% der Daten legitime Transaktionen darstellen

Mit diesen Daten hat das Modell nur sehr wenige Informationen über die betrügerischen Transaktionen und kann lernen, die Kostenfunktion zu optimieren, indem es alle Transaktionen als legitim markiert. Die Unausgewogenheit der Daten ist kein Fehler, denn ein normaler Datensatz würde im Idealfall nur sehr wenige betrügerische Transaktionen enthalten.

Ein Datensatz, der nicht repräsentativ für die reale Welt ist

Nehmen wir ein Modell, das auf einem Datensatz einer reinen Mädchenschule trainiert wurde, um die besten Leistungen zu ermitteln. Das Modell könnte lernen, dass alle Top-Performer Mädchen sind, und würde daher nicht gut auf andere, ungesehene Datensätze verallgemeinern.

Ein Datensatz, dessen Daten historisch verzerrt sind

Das Modell würde diese Voreingenommenheit lernen und aufrechterhalten. Stell dir ein Unternehmen vor, das die Vielfalt in seiner Belegschaft verbessern will. Wenn das Modell mit erfolgreichen Bewerbern aus den historischen Daten der Organisation trainiert würde, würden die Vorhersagen des Modells wahrscheinlich genau das Diversitätsproblem übernehmen, das die Organisation zu lösen versucht.

Falsche Annahmen bei der Modellauswahl

Die Wahl eines linearen Modells zur Vorhersage einer nichtlinearen Beziehung würde zu einer größeren Abweichung zwischen den vorhergesagten und den tatsächlichen Werten führen, was ein unzureichend angepasstes Modell zur Folge hätte. Ebenso würden zu komplexe oder zu gut trainierte Modelle bei den Trainingsdaten gut abschneiden, aber bei den Testdaten und anderen, zuvor nicht gesehenen Daten schlecht. Solche Modelle würden unter einer Überanpassung leiden.

Der besondere Zeitrahmen der Trainingsdaten und ob die gleichen zugrunde liegenden Annahmen auch für den Zeitraum gelten, für den wir unsere Vorhersageanalyse durchführen wollen

Dies kann beim Umgang mit Zeitreihendaten wie IoT-Informationen oder Aktienkursen vorkommen.

Auch wenn es nicht möglich ist, deine Modelle vollständig von Verzerrungen zu befreien, gibt es bestimmte Schritte, die du unternehmen kannst, um Verzerrungen zu reduzieren und eine robuste Modellleistung und Vorhersagen zu erhalten:

  • Technische Faktoren:

    • Wenn du mit unausgewogenen Daten zu tun hast, kannst du die Daten vorverarbeiten, um synthetische Stichproben der unterrepräsentierten Klasse zu generieren und so einen ausgewogeneren Trainingsdatensatz zu erhalten.

    • Du kannst der unterrepräsentierten Klasse im Modell während des Trainingsprozesses größere Gewichte zuweisen.

    • Die Modellauswahl kann ein technischer Prozess sein, bei dem wir die Modelle auswählen, die für eine bestimmte Problemstellung geeignet sind. Die Datenanalyse ist von größter Bedeutung, um die Beziehung zwischen den Merkmalen und den Bezeichnungen zu verstehen und das geeignete Modell auszuwählen. Ein normales Regressionsmodell eignet sich gut für eine lineare Beziehung, während es besser ist, ein polynomiales Regressionsmodell oder ein neuronales Netzwerk für eine nichtlineare Beziehung zu verwenden.

    • Wenn ein Modell übermäßig gut passt, kann die Kreuzvalidierung helfen, das Modell über mehrere Splits von Trainings- und Testdaten hinweg zu bewerten, um eine bessere Generalisierung zu gewährleisten .

  • Nicht-technische Faktoren:

    • Verstehe den Prozess der Datenerhebung, um sicherzustellen, dass etwaige Verzerrungen bei der Datenerhebung frühzeitig erkannt und, wenn möglich, reduziert werden.

    • Beziehe Fachexperten ein, um die Daten zu untersuchen, bevor sie zum Trainieren der Modelle verwendet werden. Wir wollen alle inhärenten Verzerrungen, die historisch in den Daten vorhanden sind, identifizieren. Es sollte eine Diskussion zwischen den technischen Teams und den Fachexperten stattfinden, um nicht nur die Verzerrungen zu identifizieren, sondern auch zu verstehen, ob es logisch ist, die Daten so zu verwenden, wie sie sind, und, falls nicht, verschiedene Strategien zu diskutieren, um die Verzerrungen zu reduzieren, ohne die Korrektheit des Modells zu beeinträchtigen.

Die Predictive Analytics Pipeline

Eine ML- (oder Predictive Analytics-) Pipeline stellt den End-to-End-Prozess dar, mit dem wir trainierte Modelle erstellen und anderen Diensten zur Verfügung stellen können. Bislang haben wir in diesem Buch über mehrere Stufen dieser Pipeline gesprochen und sie in vielen Fällen auch umgesetzt (siehe Abbildung 4-4).

Abbildung 4-4. Die Predictive-Analytics-Pipeline

Die Kombination der Daten und des Modells trägt dazu bei, umsetzbare Prognosen für unser Unternehmen zu erstellen. Wenn wir die einzelnen Phasen der Pipeline erweitern, werden wir eine detailliertere Reihe von Phasen sehen, die sich gegenseitig beeinflussen.

Die Datenphase

Abbildung 4-5 zeigt eine Datenphase, die an der Datenquelle beginnt und endet, wenn sich die Daten in einem Zustand befinden, in dem sie für das Training des ML-Modells verwendet werden können.

Abbildung 4-5. Die Datenphase der Predictive-Analytics-Pipeline

Die Datenphase beginnt mit dem Einlesen der Daten aus den relevanten Quellen mithilfe von ETL, Change Data Capture (CDC) oder anderen Streaming-Techniken, die wir bereits in diesem Kapitel besprochen haben. Beim Einlesen der Daten werden irrelevante Daten aussortiert und vorläufige Transformationen wie Deduplizierung oder Denormalisierung auf die Daten angewendet.

Als Nächstes werden die Daten analysiert, um ihre Integrität zu überprüfen, d.h. um sicherzustellen, dass die Daten korrekt, vollständig und konsistent sind. Nehmen wir an, du übernimmst Verkaufsdaten aus einem Customer Relationship Management System. Du würdest sicherstellen wollen, dass die Daten nach der Übernahme nicht beschädigt sind. Wenn du Daten aus verschiedenen Quellen beziehst, musst du sicherstellen, dass diese Quellen in Bezug auf den Zeitrahmen und die Entitäten, für die die Daten importiert werden, konsistent sind. Die Daten können in dieser Phase auch untersucht werden, um mögliche Verzerrungen in den Daten zu erkennen und zu entscheiden, wie sie in späteren Phasen der Pipeline berücksichtigt werden können.

In der Aufbereitungsphase werden dann alle weiteren Transformationen durchgeführt, die für die Daten erforderlich sind, z. B. die Kodierung kategorischer Daten, das Management von Ausreißern oder das Entfernen von Verzerrungen bei unausgewogenen Daten. (Über einige dieser Prozesse haben wir in "Datenvorverarbeitung und Feature Engineering" gesprochen) . Wenn die Daten fertig sind, kannst du eine Merkmalsauswahl für das Modell vornehmen und die Daten in Trainings-, Validierungs- und Testmengen aufteilen.

Die Modellphase

Jetzt, wo wir die Daten vorbereitet haben, können wir die Merkmale und Labels verwenden, um das Modell zu trainieren. Das Trainieren des Modells bedeutet einfach, die beste Anpassung des Modells an die bereitgestellten Daten zu finden. Beim Trainingsprozess werden verschiedene Gewichte und Verzerrungen (je nach Typ des ML-Modells) ermittelt. Außerdem gibt es bestimmte Hyperparameter des Modells, die vom Nutzer gesteuert werden können. Einige davon haben wir bereits früher in diesem Buch besprochen, darunter die Lernrate, die Anzahl der Bäume in einem Random Forest, n_estimators in einem Random Forest und die Anzahl der versteckten Schichten in einem neuronalen Netz. Diese Hyperparameter können in der Phase der Modellvalidierung angepasst werden, um eine bessere Leistung zu erzielen. Die Leistung des Modells kann mit dem Validierungsset oder mit Techniken wie der bereits erwähnten k-folds Kreuzvalidierung bewertet werden.

Wenn wir mit dem Modell und seinen Bewertungsmetriken für die Trainings- und Validierungsdaten zufrieden sind, können wir die Modellevaluation mit Testdaten durchführen, die während der Datenvorbereitung beiseite gelegt wurden. Diese Daten geben Aufschluss darüber, wie gut unser Modell auf bisher unbekannte Daten verallgemeinert werden kann und wie gut das Modell in einer Produktionsumgebung funktionieren könnte.

Abbildung 4-6 zeigt den Stand unseres Modells an diesem Punkt. Wenn wir mit der Modellbewertung zufrieden sind, können wir das Modell in die Produktion überführen. Andernfalls können wir zum Anfang der Modellphase zurückkehren, um es weiter zu prüfen und zu optimieren.

Abbildung 4-6. Die Modellphase der Predictive-Analytics-Pipeline

Die Servierbühne

Das Endergebnis der Modellierungsphase ist ein trainiertes Modell, mit dem Vorhersagen für Produktionsdaten gemacht werden können. Diese so genannte Serving-Phase besteht aus zwei Komponenten, wie in Abbildung 4-7 dargestellt.

Abbildung 4-7. Die Serving-Phase der Predictive-Analytics-Pipeline

Eine Anwendung oder ein Dienst kann ein Modell sofort nutzen. Das heißt, sie können das Modell direkt mit einer Reihe von Merkmalen abfragen, um eine Vorhersage zu erhalten. Diese Methode liefert zwar die meisten Vorhersagen in Echtzeit, kann sich aber auf die Leistung auswirken, vor allem wenn die Vorhersagedienste skaliert werden müssen, um hohe Arbeitslasten zu bewältigen.

Eine Alternative, die bei der Bereitstellung von Vorhersagen oft genutzt wird, ist die Durchführung von Vorhersagen mit einer Reihe von Merkmalskombinationen und die anschließende Speicherung der Vorhersageergebnisse in einer Datenbank. Dienste von Drittanbietern, die auf diese Vorhersagen zugreifen müssen, können die Datenbank nach Vorhersagen abfragen, anstatt das Modell zu befragen. Moderne Datenbanken unterstützen eine verteilte horizontale Skalierung, so dass sie auch große Datenmengen schnell verarbeiten können. Beachte, dass der Anwendungsfall so beschaffen sein sollte, dass er mit einer begrenzten Anzahl von Merkmalskombinationen für Vorhersagen bearbeitet werden kann. Im Fall von kontinuierlichen Daten können bei Bedarf auch Bereiche verwendet werden. Außerdem muss es einen Mechanismus geben, um die Vorhersagen des Predictive Analytics-Modells regelmäßig in der Datenbank zu aktualisieren.

Ein Predictive-Analytics-Modell sollte nicht statisch sein. Um ein Modell zu entwickeln, das sich im Laufe der Zeit weiterentwickelt, müssen wir als Teil der Serving-Phase eine Modellüberwachung durchführen. Bei der Überwachung gibt es mehrere Aspekte zu beachten. Der wichtigste davon ist die Leistung der Vorhersagen im Vergleich zu den tatsächlichen Daten. Es muss eine Möglichkeit geben, zu verstehen, wie genau die Modellvorhersagen im Laufe der Zeit sind. Das würde uns ein Gefühl für die Genauigkeit des Modells geben und helfen, Probleme früher im Konjunkturzyklus zu erkennen.

Es ist auch wichtig, die Lieferleistung der Serving-Plattform zu überwachen. Wenn die Vorhersagen direkt ausgeliefert werden, müssen wir sicherstellen, dass die Infrastruktur (CPU, Speicher, Festplatte, IOPS usw.) der zugrunde liegenden Systeme ausreichend ist und die Antwortzeiten der Abfragen akzeptabel sind. Das Gleiche gilt, wenn die Vorhersagen über einen Vermittler, wie z. B. eine Datenbank, bereitgestellt werden. In diesem Fall würden wir jedoch eine andere Reihe von Matrizen betrachten, um die Leistung der Datenbank sicherzustellen. Wir können die Vorhersageleistung auf einer viel tieferen Ebene überwachen, z. B. die Leistung für jedes Marktsegment oder jede Bevölkerungsgruppe. Dadurch können wir die Leistung besser verstehen und mögliche Verzerrungen in den Trainingsdaten erkennen.

Bei der Modellüberwachung sollte auch festgestellt werden können, wie die Datenverteilung in der Produktion im Vergleich zu der für das Training des Modells verwendeten Verteilung ist. Weicht die Verteilung erheblich ab, ist es wahrscheinlich, dass die Leistung des Modells beeinträchtigt ist. Wenn du die Veränderungen in der Datenverteilung verstehst, kannst du die Modelle neu trainieren, damit sie besser auf die aktuelle Datensituation des Unternehmens abgestimmt sind.

Damit sich die Überwachung auf das Modell auswirkt, muss es eine Rückkopplungsschleife von der Überwachungsphase zurück zur Datenphase geben, damit die Beobachtungen für die Feinabstimmung und das Training der nächsten Version des Modells genutzt werden können (siehe Abbildung 4-8).

Abbildung 4-8. Rückkopplungsschleife der Predictive-Analytics-Pipeline

Andere Komponenten

Ein paar zusätzliche Komponenten, die erwähnenswert sind, sind der Feature Store und die Modellregistrierung.

Feature Store

Predictive-Analytics-Pipelines verwenden häufig einen Feature-Store. Die Funktionen des Feature Stores variieren von Implementierung zu Implementierung, aber der Hauptzweck eines Feature Stores ist es, ein zentrales Repository bereitzustellen, in dem Features gespeichert und verwaltet werden können.

Verschiedene Stufen der Pipeline können für unterschiedliche Zwecke auf einen Feature Store zugreifen. Du kannst den Feature Store zum Beispiel nutzen, um Features aus verschiedenen Quellen zu kombinieren und einem Predictive-Analytics-Modell zum Training zur Verfügung zu stellen. Du kannst einen Feature Store auch nutzen, um historische Merkmale zu speichern und sie Datenwissenschaftlern und Ingenieuren zur Analyse und zum Vergleich zur Verfügung zu stellen. Diese historischen Merkmale können manchmal dazu verwendet werden, bestehende Daten für das Training und die Auswertung von Modellen zu ergänzen.

Ein Feature Store macht es einfach, Features zu katalogisieren und zu versionieren und sie den Modellen zu verschiedenen Zeitpunkten zur Verfügung zu stellen. Sobald die Merkmale standardisiert sind, können sie gemischt und von mehreren Modellen verwendet werden, was den Aufwand für die Entwicklung von Merkmalen für jedes Modell erheblich reduziert. Der Merkmalspeicher ermöglicht es auch Anwendungen, die nicht explizit Merkmale berechnen, Vorhersagen auf der Grundlage von Merkmalen zu treffen, die von anderen Quellen bereitgestellt werden.

Modellregistratur

Ähnlich wie der Feature Store ist auch die Model Registry ein Katalog, allerdings für Predictive Analytics Modelle. Er hilft dabei, mehrere Versionen von Modellen in einem zentralen Repository zu speichern. Von der Registry aus können bestimmte Versionen des Modells für die Produktion ausgecheckt, kopiert, aktualisiert und mit anderen Versionen verglichen werden. Einige Registrys ermöglichen auch die Aufzeichnung verschiedener Modellmetriken in Bezug auf die Leistung und die zugehörigen Metadaten.

Die Modellregistrierung wird zu einem wichtigen Teil einer Predictive Analytics Pipeline, in der Modelle in verschiedenen Phasen wie Entwicklung, Qualitätssicherung (QA), User Acceptance Testing (UAT) und Produktion eingesetzt werden können. Ähnlich wie bei der Softwareversionierung und -freigabe können Aktualisierungen eines Modells verwendet werden, um automatisierte Workflows für die Modellbereitstellung und -bereitstellung auszulösen.

Die Auswahl des richtigen Modells

Im Bereich des maschinellen Lernens mag die Verlockung groß sein, sich für die kompliziertesten oder innovativsten Modelle zu entscheiden. Es ist jedoch wichtig zu wissen, dass dies nicht immer der ratsamste Weg ist. Ein Leitprinzip, das beim maschinellen Lernen häufig verwendet wird, ist Occams Razor, das auf den Philosophen William von Ockham zurückgeht. Es besagt, dass unter konkurrierenden Hypothesen diejenige mit den wenigsten Annahmen ausgewählt werden sollte. Im Zusammenhang mit ML-Modellen bedeutet Occam's Razor, dass einfachere Modelle komplexen Modellen vorzuziehen sind, wenn beide ein ähnliches Leistungsniveau erreichen.

Gehen wir einige Überlegungen zur Modellauswahl durch:

Komplexität versus Leistung

Die Erhöhung der Komplexität eines Modells führt nicht immer zu einer besseren Leistung. Komplexe Modelle können zwar komplizierte Muster in den Daten erfassen, aber sie können auch unter einer Überanpassung leiden, bei der das Modell eher das Rauschen in den Trainingsdaten lernt als die zugrunde liegenden Muster, wodurch es schwierig wird, die Muster auf zuvor ungesehene Daten zu verallgemeinern.

Die Fähigkeit zu interpretieren, wie das Modell funktioniert

Einfachere Modelle sind oft besser interpretierbar, sodass der Nutzer leichter versteht, wie die Modelle zu Vorhersagen kommen. Branchen wie das Finanz- und Gesundheitswesen stellen hohe Anforderungen an die Transparenz und Interpretierbarkeit des Vorhersageprozesses, was bei komplexen Modellen schwer zu erreichen ist.

Verallgemeinerung

Im Vergleich zu komplexen Modellen ist es wahrscheinlicher, dass einfache Modelle gut auf ungesehene Daten verallgemeinert werden können. Sie sind weniger anfällig für eine Überanpassung der Trainingsdaten und können die zugrundeliegenden Muster erfassen, die über verschiedene Datensätze hinweg konsistent sind.

Berechnungseffizienz

Einfachere Modelle sind in der Regel rechnerisch effizienter und benötigen weniger Zeit und weniger Ressourcen für Training und Schlussfolgerungen. Dies kann in Szenarien von Vorteil sein, in denen die Ressourcen begrenzt sind oder der Anwendungsfall eine Entscheidungsfindung in Echtzeit erfordert.

Occam's Razor fordert Praktiker dazu auf, einfachen, interpretierbaren Modellen den Vorzug zu geben, die sich effektiv auf neue Daten verallgemeinern lassen. Dieser Ansatz fördert Transparenz, Effizienz und eine bessere Entscheidungsfindung bei ML-Anwendungen.

Fazit

Bei der Arbeit mit Predictive Analytics ist es unerlässlich, die Bedeutung von Daten zu verstehen. Allzu oft konzentrieren wir uns auf die Erstellung und Ausführung von Modellen und nicht auf die Datenanalyse und -verarbeitung. In diesem Kapitel haben wir verschiedene Aspekte der Arbeit mit Daten für Predictive Analytics behandelt. Obwohl wir die meisten dieser Themen bereits in früheren Kapiteln behandelt haben, wollte ich sie aus theoretischer Sicht zusammenfassen, damit du dich darauf beziehen, die scheinbar unterschiedlichen Schritte in Beziehung setzen und ihre Abfolge und Verwendung in der Predictive-Analytics-Pipeline verstehen kannst. Wir haben auch über die Operationalisierung von Predictive Analytics mithilfe von Pipelines und die Kernkomponenten gesprochen, die diese Bereitstellung ermöglichen. Ich habe das Kapitel technologieunabhängig gehalten, damit du es auf die Frameworks und Tools übertragen kannst, die du in deinem Unternehmen einsetzt.

Get Predictive Analytics für das moderne Unternehmen now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.