3. Allgemeines zur Datenanalyse#

Bevor wir uns in die Algorithmen zur Modellierung mithilfe von Daten stürzen, brauchen wir noch einige Grundlagen. Hierbei handelt es sich um allgemeine Konzepte, die nicht von einer bestimmten Art der Analyse oder Daten abhängen und die wir immer wieder benötigen. Außerdem geben wir in diesem Kapitel auch einen Überblick über die Arten von Algorithmen, die es gibt.

3.1. Das No-free-Lunch-Theorem#

Das erste Konzept ist eine fundamentale Aussage über Optimierungsalgorithmen, das No-free-Lunch-Theorem (NFL). Das Theorem selbst ist sehr theoretisch, wenn Sie sich nur für die (sehr wichtigen!) praktischen Auswirkungen interessieren, springen Sie einfach direkt zur umgangssprachlichen Definition. Die mathematische Formulierung des NFL lautet wie folgt.

No-free-Lunch-Theorem:

Sei \(d_m^y\) eine geordnete Menge der Kardinalität \(m\) mit Kostenwerten \(y \in Y\). Sei \(f: X \to Y\) eine Funktion, die optimiert werden soll. Sei \(P(d_m^y|f, m, a)\) die bedingte Wahrscheinlichkeit, die Kosten \(d_m^y\) durch \(m\) wiederholte Ausführungen des Algorithmus \(a\) für die Funktion \(f\) zu beobachten.

Für jedes Paar von Algorithmen \(a_1\) und \(a_2\) gilt:

\[\sum_f P(d_m^y|f, m, a_1) = \sum_f P(d_m^y|f, m, a_2)\]

Einen Beweis für das Theorem findet man in der Literatur [1]. Die Gleichung des NFL besagt, dass die Summe der Wahrscheinlichkeiten, bestimmte Kosten zu erhalten, gleich ist, wenn man die Gesamtheit aller Funktionen \(f\) betrachtet, unabhängig vom Algorithmus. Einfacher formuliert bedeutet das NFL:

*No-free-Lunch-Theorem (Umgangssprachlich):

Alle Algorithmen sind gleich, wenn man alle möglichen Optimierungsprobleme betrachtet.

Diese Aussage entspricht nicht der Intuition, die man durch das praktische Arbeiten mit Daten erworben hat. Für bestimmte Probleme merkt man sehr wohl, dass einige Algorithmen besser sind als andere. Dies wird durch das NFL aber auch gar nicht ausgeschlossen, im Gegenteil. Ein Algorithmus kann durchaus für einige Funktionen \(f\) besser sein als andere Algorithmen. Aus dem NFL folgt aber, dass dieser Algorithmus dann bei allen anderen Problemen unterdurchschnittlich sein muss. Das ist auch die wichtige praktische Konsequenz des NFL: Es gibt keinen Algorithmus, der für alle Probleme optimal ist! Stattdessen hängt der optimale Algorithmus zur Lösung eines Problems vom Problem selbst ab. Daher auch der Name des Theorems: Es gibt kein “Gratisessen”, also einen Algorithmus für alle Probleme. Stattdessen müssen sich Data Scientists ihr Essen verdienen, indem sie passende Algorithmen kennen und auswählen.

Das heißt natürlich auch, dass es nicht ausreicht, sich auf eine bestimmte Art von Algorithmus zu spezialisieren. Dieser Algorithmus kann mathematisch beweisbar gar nicht in jeder Situation die beste Wahl sein. Die Falle, in die man tappen könnte, ist, dass man nicht mehr den Algorithmus an das Problem anpasst, sondern das Problem an den Algorithmus. Denn wenn man einen Hammer hat, sieht manchmal alles aus wie ein Nagel. Stattdessen sollten wir eine ganze Werkzeugbox an Algorithmen kennen. Nur dann können wir basierend auf der Problemstellung, den zur Verfügung stehenden Daten und unserer Erfahrung den am besten geeigneten Algorithmus auswählen. Dies lernt man nicht über Nacht, sondern nur aus der Erfahrung von vielen Projekten, in denen man mit verschiedenen Datensätzen und Methoden arbeitet.

3.2. Definition von maschinellem Lernen#

Maschinelles Lernen ist derzeit eines der heißesten Themen in der Informatik, da es in den letzten Jahren große Fortschritte bei der Lösung von praxisrelevanten Problemen durch die immer höher werdende Rechenkraft, die größeren Datenmengen, die zur Verfügung stehen, und innovatives Design von Lernalgorithmen gab. Einige Probleme, die noch vor wenigen Jahren als extrem schwierig galten, sind jetzt durch maschinelles Lernen gelöst (siehe Kapitel 1). Wenn man sich näher mit dem maschinellen Lernen beschäftigen möchte, muss man zuerst die Bedeutung des Begriffs verstehen. Es gibt viele Definition in der Literatur. Eine sehr mächtige und gleichzeitig intuitive kommt von Tom Mitchell [2]:

Definition von maschinellem Lernen:

Ein Computerprogramm lernt aus Erfahrung \(E\) in Bezug auf eine Klasse von Aufgaben \(T\) und ein Gütemaß \(P\), wenn die Güte der Lösungen von \(T\) gemessen durch \(P\) sich mit mehr Erfahrung \(E\) verbessert.

Auf den ersten Blick wirkt diese Definition sehr abstrakt und ist schwer zu lesen. Insbesondere die abstrakten Begriffe von Erfahrung, einer Klasse von Aufgaben und der Güte sind intuitiv in diesem Zusammenhang schwer einzuordnen. Das ist aber der Grund, weshalb die Definition so gut ist: Maschinelles Lernen ist ein sehr vielseitiges Gebiet, was anders kaum zu fassen ist. Außerdem ist die Definition nur auf den ersten Blick komplex. Bei einer genaueren Betrachtung, was mit Erfahrung, Aufgaben und Güte gemeint ist, erscheint die Definition sehr naheliegend.

  • Die Erfahrung ist (im Normalfall) unser Datensatz. Je mehr Daten wir haben, desto mehr Erfahrung haben wir. Es gibt außerdem auch selbstlernende Systeme, die keine externen Daten benötigen und stattdessen ihre eigenen Daten generieren, wie AlphaZero [3], das durch das Spielen gegen sich selbst lernt. In diesem Fall steigt die Erfahrung mit jedem Spiel.

  • Die Aufgaben sind nichts anderes als die Probleme, die wir mit maschinellem Lernen lösen möchten. Wir wollen Fußgänger erkennen, damit diese von einem autonomen Fahrzeug nicht überfahren werden. Wir wollen Spiele spielen und gewinnen. Wir wollen, dass die Besucher unserer Website auf die Werbung klicken. Das sind die Aufgaben. Im Allgemeinen ist die Aufgabe eng verwandt mit dem Anwendungsfall und den Projektzielen. Etwas abstrakter kann man Klassen von Aufgaben auf Kategorien von Algorithmen abbilden, wie wir am Ende dieses Kapitels sehen werden.

  • Die Gütemaße messen, wie gut die Aufgabe erfüllt wird. Das könnte zum Beispiel die Anzahl der korrekt erkannten Fußgänger, der gewonnenen Spiele oder die Zahl der Klicks auf Werbung sein.

Mit diesem Wissen erscheint die Definition ganz einfach: Wir betrachten einfach Algorithmen, die besser werden, wenn ihnen mehr Daten zur Verfügung stehen.

3.3. Merkmale#

Im letzten Kapitel haben wir bereits oft von Merkmalen (engl. feature) gesprochen, ohne jedoch genau zu erklären, was wir damit eigentlich meinen. Die Merkmale sind eine Kernkomponente von maschinellem Lernen. Die Bedeutung von Merkmalen kann man sich gut an einem Beispiel verdeutlichen. Wenn wir uns Fig. 3.1 anschauen, erkennen wir sofort, dass es sich um einen Wal handelt. Wie genau wir als Menschen erkennen, dass es sich um einen Wal handelt, ist nicht abschließend geklärt und immer noch Gegenstand der Forschung. Nichtsdestotrotz nehmen wir hier an, dass wir verschiedene Aspekte vom Bild erkennen und aufgrund der Aspekte dann zur Erkenntnis gelangen, dass es sich um einen Wal handelt. Man könnte zum Beispiel erkennen, dass sich ein etwa ovales Objekt im Vordergrund befindet, das oben schwarz und unten weiß ist, das Flossen hat und dass der Hintergrund blau ist. Das alles sind Merkmale des Bilds.

../_images/whale.png

Fig. 3.1 Bild von einem Wal#

Und so funktioniert auch maschinelles Lernen: Schlussfolgerungen über Objekte werden anhand ihrer Merkmale gezogen. Formal haben wir einen Objektraum \(O\) mit Objekten aus der realen Welt und einen Merkmalsraum (engl. feature space) \(\mathcal{F}\) mit Beschreibungen der Objekte durch ihre Merkmale. Eine Feature Map \(\phi: 0 \to \mathcal{F}\) bildet die Objekte auf ihre Repräsentation im Merkmalsraum ab. Für unser Walbild ist der Objektraum \(O\) die Menge der Bilder und der Merkmalsraum hätte fünf Dimensionen: Form, Farbe oben, Farbe unten, Hintergrundfarbe und Flossen. Die Repräsentation des Bilds im Merkmalsraum wäre daher \(\phi(Walbild) = (Oval, Schwarz, Wei\text{ß}, Blau, Ja)\).

Es gibt verschiedene Skalen, über die Merkmale definiert sein können. Die am häufigsten verwendete Skalendefinition geht auf Steven zurück und ist auch als Steven’s Levels of Measurements bzw. NOIR-Skalen bekannt [4]. NOIR ist ein Akronym für die vier Arten von Skalen: Nominal, Ordinal, Intervall, und Rational.

Table 3.1 Skalen für Merkmale #

Skala

Eigenschaft

Erlaubte Operationen

Beispiel

Nominal

Klassifikation oder Zugehörigkeit

\(=, \neq\)

Farben als Schwarz, Weiß und Blau

Ordinal

Vergleichbare Level

\(=, \neq, >, <\)

Größe in Small, Medium und Large

Intervall

Unterschiede und Abstände

\(=, \neq, >, <, + ,-\)

Daten, Temperaturen

Rational

Absolute Größen und Mengen

\(=, \neq, >, <, +, -, *, /\)

Größe in cm, Dauer in Sekunden

Table 3.1 fasst die Eigenschaften der Skalen zusammen. Nominale und ordinale Merkmale nennt man auch kategorische Merkmale, da sie ihre Werte in Kategorien darstellen. Bei nominalen Merkmalen gibt es keine Ordnung der Kategorien, das heißt, dass man zum Beispiel nicht sagen kann, welche Kategorie größer oder kleiner ist. Bei ordinalen Merkmalen gibt es eine wohldefinierte Ordnung, wir können die Kategorien also sortieren. Der Abstand zwischen den Kategorien ist nicht bekannt und auch nicht notwendigerweise gleich zwischen benachbarten Kategorien. Entsprechend kann man nur sagen, dass T-Shirts der Größe Small kleiner sind als Medium und Medium wiederum kleiner als Large. Aber wie groß der Unterschied zwischen Small und Medium ist, und ob der Unterschied zwischen Medium und Large gleich groß ist, ist nicht bekannt. Dieses Wissen hat man erst, wenn man eine Intervallskala verwendet, auf der man die Unterschiede quantifizieren kann. Wir können zum Beispiel die Temperaturdifferenz von 10° C und 5° C berechnen. Was jedoch auf Intervallskalen keinen Sinn ergibt, sind Verhältnisse. Man kann beispielsweise nicht sinnvoll sagen, dass das Datum 2000-01-01 doppelt so hoch ist wie 1000-01-01. Daher kann man Verhältnisse nur bei Merkmalen mit einer rationalen Skala sinnvoll berechnen. Wenn wir zum Beispiel die Zeit messen, die im Gregorianischen Kalender seit dem Jahr 0 vergangen ist, kann man durchaus sagen, dass 2000 Jahre Unterschied doppelt so viel ist wie 1000 Jahre.

Viele Algorithmen gehen davon aus, dass die Merkmale durch Zahlen repräsentiert werden. Während das auf Intervall- und Rationalskalen kein Problem ist, sind Nominal- und Ordinalskalen nicht numerisch. Ein einfacher Ansatz wäre es, die Kategorien einfach durchzunummerieren, zum Beispiel Schwarz als eins, Weiß als zwei und Blau als drei. Diesen Ansatz sollte man jedoch in der Regel vermeiden, da die Gefahr besteht, dass Algorithmen dann mit diesen Zahlen rechnen und zum Beispiel Differenzen bilden. Dann wäre Blau minus Weiß auf einmal Schwarz, was natürlich keinen Sinn ergibt. Eine bessere Lösung ist daher das One-Hot Encoding. Das Konzept hinter dem One-Hot Encoding besteht darin, eine Nominal- bzw. Ordinalskala durch viele Merkmale mit den Werten null und eins zu ersetzen. Für jede Kategorie der ursprünglichen Skala gibt es ein neues Merkmal. Für einen Datenpunkt ist der Wert dieses neuen Merkmals eins, wenn der Datenpunkt zur entsprechenden Kategorie gehört, und ansonsten null.

Als Beispiel betrachten wir die Nominalskala mit den Werten Schwarz, Weiß, und Blau, es gilt also \(x \in \{Schwarz, Wei\text{ß}, Blau\}\). Wir ersetzen dieses Feature durch drei neue Features \(x^{Schwarz}, x^{Wei\text{ß}}, x^{Blau} \in \{0,1\}\). Die Werte der neuen Merkmale sind folgendermaßen definiert:

\[\begin{split}x^{Schwarz} = \begin{cases}1 & \text{wenn}~x=\text{Schwarz} \\ 0 & \text{sonst}\end{cases}\end{split}\]
\[\begin{split}x^{Wei\text{ß}} = \begin{cases}1 & \text{wenn}~x=\text{Weiß} \\ 0 & \text{sonst}\end{cases}\end{split}\]
\[\begin{split}x^{Blau} = \begin{cases}1 & \text{wenn}~x=\text{Blau} \\ 0 & \text{sonst}\end{cases}\end{split}\]

Mit diesem Ansatz transformiert man also \(n\) Kategorien in \(n\) neue Merkmale. Es ist auch möglich, ein One-Hot Encoding mit \(n-1\) neuen Merkmalen zu definieren. Wir könnten im Beispiel einfach \(x^{Blau}\) weglassen und wüssten trotzdem noch eindeutig, welche Farbe es ist: Wenn \(x^{Schwarz} = x^{Wei\text{ß}} = 0\) gilt, muss die Farbe stattdessen Blau sein. Diese Eigenschaft sollte man insbesondere dann ausnutzen, wenn man eine Skala mit zwei Kategorien umwandelt.

Bitte beachten Sie, dass One-Hot Encoding möglicherweise nicht gut funktioniert, wenn Sie sehr viele verschiedene Kategorien haben. Dies führt zu vielen neuen Merkmalen, was bei der anschließenden Modellierung zum Problem werden kann. Hinzu kommt, dass man bei der Umwandlung von Ordinalskalen die Informationen über die Ordnung verliert. In solchen Fällen sollte man nach Möglichkeit auf Analysemethoden zurückgreifen, die direkt mit Nominal- bzw. Ordinalskalen arbeiten können.

3.4. Trainings- und Testdaten#

Daten sind das Herz von jedem Data-Science-Projekt. Die Daten bestehen aus Instanzen von Merkmalen, wobei eine Instanz die Repräsentation eines Objekts der realen Welt durch seine Merkmale ist. Table 3.2 zeigt uns ein Beispiel von Daten.

Table 3.2 Beispiel für Instanzen von Objekten mit ihren Merkmalen#

Form

Farbe oben

Farbe unten

Hintergrundfarbe

Flossen

Oval

Schwarz

Weiß

Blau

Ja

Rechteck

Braun

Braun

Grün

Nein

Jede Zeile in der Tabelle ist eine Instanz, jede Spalte beinhaltet die Werte von einem Merkmal. Häufig gibt es noch eine gewisse Eigenschaft, die man aus den Merkmalen lernen möchte, sozusagen einen Wert von Interesse, der mit jeder Instanz verbunden wird. Table 3.3 zeigt die Erweiterung der Instanzen.

Table 3.3 Beispiel für Instanzen von Objekten mit ihren Merkmalen und Werten von Interesse. Diese werden häufig auch als Label bezeichnet.#

Form

Farbe oben

Farbe unten

Hintergrundfarbe

Flossen

Wert von Interesse

Oval

Schwarz

Weiß

Blau

Ja

Wal

Rechteck

Braun

Braun

Grün

Nein

Bär

Je nachdem ob dieser Wert bekannt ist und für die Erstellung eines Modells verwendet wird oder nicht, spricht man vom überwachten bzw. unüberwachten Lernen (engl. supervised/unsupervised).

Daten sind häufig in Form von Datensätzen organisiert. In diesem Zusammenhang sind die Begriffe Trainingsdaten und Testdaten für die Datenanalyse besonders wichtig. Die Trainingsdaten werden für die Erstellung von Modellen benutzt, das heißt für alles von der Datenexploration über die Bestimmung von geeigneten Modellen bis hin zu Experimenten, um das beste Modell auszuwählen. Man kann die Trainingsdaten so oft man will benutzen und beliebig transformieren.

Die Testdaten werden jedoch idealerweise nur ein einziges Mal verwendet, und zwar am Ende des Projekts, um zu überprüfen, ob die Ergebnisse von den Trainingsdaten auch auf andere Daten verallgemeinert werden können, und um hierdurch abzuschätzen, wie gut ein Modell im operationellen Betrieb funktionieren würde. Hierzu wird das auf den Trainingsdaten ermittelte Modell mit den Testdaten gefüttert, um die Güte auf Basis der in der Discovery definierten Kriterien zu messen.

Die Unterscheidung zwischen Trainings- und Testdaten ist wichtig, um zu gewährleisten, dass man Overfitting verhindert und stattdessen die Generalisierung sicherstellt. Overfitting bedeutet, dass das Modell die Daten auswendig lernt, statt das eigentliche Problem zu lösen. Es ist nämlich relativ einfach, ein perfektes Modell für die Trainingsdaten zu erstellen: Man lernt diese einfach auswendig und gibt diese später wieder aus. Bei beliebigen anderen Daten würde dieses Modell jedoch nicht mehr funktionieren. Die Testdaten verhindern genau das. Wenn das Modell nur auswendig gelernt hat, statt Zusammenhänge zu erkennen, wird es auf den Testdaten nicht gut funktionieren. Andersherum gilt aber auch, dass wenn ein Modell auch auf den Testdaten gute Ergebnisse liefert, es wahrscheinlich auch in der realen Anwendung wie gewünscht funktioniert.

Leider sind Daten häufig eine nur begrenzt verfügbare Ressource, da das Sammeln von Daten oft zeitaufwendig und/oder kostenintensiv ist. Auf der einen Seite wissen wir, dass maschinelles Lernen bessere Ergebnisse liefert, wenn mehr Daten zur Verfügung stehen. Auf der anderen Seite ist die Bewertung der Güte auf den Testdaten genauer, wenn mehr Testdaten zur Verfügung stehen. Wie viele und welche Daten fürs Testen verwendet werden, ist also immer eine Abwägung, die innerhalb von einem Projekt gemacht werden muss. Im Idealfall stehen genug Daten zur Verfügung, dass man mit Holdout-Daten arbeiten kann. Das bedeutet, man hat einen echten Testdatensatz, der auch nur zu diesem Zweck verwendet wird. Wie viele Daten als Holdout-Daten genutzt werden, legt man üblicherweise als Prozentsatz der zur Verfügung stehenden Daten fest, zum Beispiel:

  • 50% Trainingsdaten, 50% Testdaten,

  • 66,6% Trainingsdaten, 33,4% Testdaten oder auch

  • 75% Trainingsdaten, 25% Testdaten.

Es kann auch sinnvoll sein, zusätzlich noch Validierungsdaten zu nutzen. Validierungsdaten sind “wiederverwendbare Testdaten zur Modellauswahl”. Das heißt, dass man die Daten ähnlich wie die Testdaten verwendet, jedoch nicht nur am Ende des Projekts zur abschließenden Bewertung. Stattdessen kann man diese Daten bereits vorher nutzen, zum Beispiel um verschiedene Modelle miteinander zu vergleichen und oder um Modellparameter zu optimieren. Validierungsdaten können ebenfalls als Holdout-Daten erstellt werden, zum Beispiel mit 50% Trainingsdaten, 25% Validierungsdaten und 25% Testdaten.

Für den Fall. dass nicht genug Daten zur Verfügung stehen, um mit Holdout-Daten zu arbeiten, kann man Kreuzvalidierung (engl. cross-validation) nutzen, um die Wahrscheinlichkeit von Overfitting zu reduzieren. Bei der Kreuzvalidierung gibt es keine klare Trennung zwischen Trainings- und Testdaten. Stattdessen werden alle Daten sowohl für das Training als auch für die Bewertung der Güte benutzt. Fig. 3.2 beschreibt die Kreuzvalidierung. Bei \(k\)-facher Kreuzvalidierung (engl. \(k\)-fold cross-validation) werden die Daten hierfür in \(k\) gleich große Partitionen unterteilt. Jede Partition wird einmal für das Testen benutzt und alle anderen Partitionen für das Training.

../_images/cv-german.png

Fig. 3.2 Verwendung von Daten zur Kreuzvalidierung#

Die Güte wird als arithmetisches Mittel der Güte auf der jeweiligen Testpartition berechnet. Bei der Kreuzvalidierung wird somit jede Instanz der Daten genau einmal in den Testdaten und \((k-1)\)-mal zum Training verwendet. Der Nachteil der Kreuzvalidierung ist, dass es keine echten Testdaten gibt. Stattdessen handelt es sich vielmehr um Validierungsdaten. Dennoch verwenden wir hier auch den Begriff Testdaten, da dies in der Literatur üblich ist. Da es keine echten Testdaten gibt, ist das Risiko von Overfitting bei der Kreuzvalidierung höher als bei der Verwendung von Holdout-Daten. Daher sollte man, sofern möglich, Holdout-Daten verwenden und Kreuzvalidierung nur als Notlösung betrachten.

3.5. Kategorien von Algorithmen#

Data Science ist ein vielseitiges Gebiet. Je nach Problemstellung gibt es unterschiedliche Algorithmen, die für ein Projekt geeignet sind:

  • Assoziationsregeln befassen sich mit Zusammenhängen zwischen Gegenständen in Transaktionen. Der klassische Anwendungsfall von Assoziationsregeln ist die Vorhersage von Gegenständen, die zu einem Warenkorb noch hinzugefügt werden, basierend auf dem aktuellen Inhalt des Warenkorbs. Wir betrachten den Apriori-Algorithmus zum Bestimmen von Assoziationsregeln in Kapitel 5.

  • Clustern beschäftigt sich mit der Suche von Gruppen, also Daten die zueinander ähnlich sind und daher zur selben Gruppe gehören. Wir betrachten den \(k\)-Means-Algorithmus, den EM Algorithmus, DBSCAN und Single Linkage Clustern in Kapitel 6.

  • Klassifikation behandelt das Zuweisen von Labeln zu Objekten. Wir behandeln den \(k\)-Nearest-Neighbor-Algorithmus, Entscheidungsbäume, Random Forests, logistische Regression, Naive Bayes, Support Vector Machines und neuronale Netze in Kapitel 7.

  • Regression sucht nach Zusammenhängen zwischen Merkmalen, eventuell mit dem Ziel, einen numerischen Wert vorherzusagen. Wir beschäftigen uns mit der linearen Regression durch Ordinary Least Squares (OLS), Ridge, Lasso und Elastic Net in Kapitel 8.

  • Zeitreihenanalyse berücksichtigt die zeitliche Struktur von Daten, zum Beispiel bei täglichen, wöchentlichen oder monatlichen Daten. Die Zeitreihenanalyse geht über die Regression hinaus, da auch Aspekte wie die Saisonalität berücksichtigt werden. Wir betrachten ARIMA in Kapitel 9.

  • Text Mining befasst sich mit der Analyse von unstrukturierten textuellen Daten. Grundsätzlich können alle Arten von Algorithmen zum Text Mining verwendet werden. Die Schwierigkeit liegt darin, eine geeignete Struktur für den Text zu finden und die Daten zu verarbeiten. Wir betrachten ein einfaches Text-Mining-Verfahren basierend auf einem Bag-of-Words in Kapitel 10.

Bei der Suche nach Assoziationsregeln und beim Clustern werden unüberwachte Lernverfahren, die anhand der Merkmale nach Mustern in den Daten suchen, verwendet. Daher werden solche Verfahren auch manchmal als Mustererkennung (engl. pattern recognition) bezeichnet. Klassifikation, Regression und Zeitreihenanalyse sind Beispiele für überwachtes Lernen. Das heißt, dass man für diese Ansätze den Wert von Interesse kennen muss und die Verfahren den Zusammenhang zu den Merkmalen lernen.

3.6. Übung#

In der ersten Übung machen wir uns mit dem Arbeiten mit Merkmalen in Python durch Dataframes vertraut. Hierbei lernen wir Daten zu laden und zu filtern. Für diese Übung müssen Sie eigenständig die benötigten Funktionen aus der Programmbibliothek pandas heraussuchen [5]. Sollten Sie wenig Erfahrung mit Python (oder Programmierung) haben, können Sie diese Übung auch überspringen und sich stattdessen an den Quelltextbeispielen der folgenden Kapitel orientieren. Sie sollten sich aber in jedem Fall zumindest die Aufgaben durchlesen, da das Konzept der Dataframes dort erklärt wird.

3.6.1. Laden von CSV Daten#

Oft liegen Daten als CSV-Dateien vor. Die erste Zeile beinhaltet die Namen der Merkmale, die folgenden Zeilen jeweils die Werte einer Instanz. Laden Sie sich zuerst die für uns angepassten Daten über Insolvenzen herunter [6]. Das Original finden Sie im UCI Archive [7], einer großen Sammlung von Beispieldatensätzen für maschinelles Lernen. Wir haben diese Daten angepasst, indem wir die Werte einiger Merkmale gelöscht haben.

Laden Sie die CSV-Datei in einen Dataframe mithilfe der Bibliothek pandas. Dataframes sind ähnlich zu Matrizen. Es gibt jedoch einige wesentliche Unterschiede:

  • Dataframes können einfacher verändert werden, indem man Zeilen/Spalten entfernt.

  • Die Zeilen und Spalten von Dataframes können benannt sein, werden also nicht nur mithilfe ihres numerischen Indexes identifiziert.

  • Jede Spalte kann einen anderen Typ haben. Eine Spalte könnte zum Beispiel Zeichenketten beinhalten und eine andere Gleitkommazahlen.

Nachdem die Daten geladen sind, geben Sie einige Informationen über die Daten aus:

  • Wie viele Instanzen gibt es?

  • Wie viele Merkmale gibt es?

  • Was sind die Namen der Merkmale?

3.6.2. Entfernen von Merkmalen#

Entfernen Sie das Merkmal Company.

3.6.3. Entfernen von Instanzen mit fehlenden Werten#

Entfernen Sie alle Instanzen, bei denen ein Wert fehlt. Die fehlenden Werte sind als NA in der CSV Datei markiert. Hierdurch sollten fünf Instanzen entfernt werden.

3.6.4. Rechnen mit Dataframes#

Man kann mit Dataframes einfach rechnen. Ergänzen Sie zwei Spalten mit den Ergebnissen folgender Berechnungen:

  • Die Summe der Spalten WC/TA und RE/TA

  • Das Produkt der Spalten EBIT/TA und S/TA

3.6.5. Zusammenfügen von Dataframes#

Laden Sie die Daten ein zweites Mal aus der CSV-Datei. Vereinigen Sie den Dataframe aus der vorigen Aufgabe mit den neu geladenen Daten, sodass gilt:

  • Das Merkmal Company ist wieder Teil des neuen Dataframes.

  • Die Instanzen mit fehlenden Werten sind weiterhin entfernt.

  • Die berechneten Merkmale (Summe, Produkt) sind Teil des neuen Dataframes.

3.6.6. Auswahl von Teilmengen#

Nutzen Sie den zusammengefügten Dataframe, um Teilmengen der Instanzen und Merkmale zu bestimmen:

  • Die Instanzen 10 bis 20 und alle Merkmale

  • Die Merkmale in den ersten vier Spalten und alle Instanzen

  • Die Merkmale WC/TA und EBIT/TA und alle Instanzen

  • Alle Merkmale und nur die Instanzen, bei denen RE/TA kleiner als -20 ist.

  • Alle Merkmale und nur die Instanzen, bei denen RE/RA kleiner als -20 ist und bankrupt null ist.

  • Nur die Merkmale WC/TA und EBIT/TA und nur die Instanzen, bei denen RE/RA kleiner als -20 ist und bankrupt null ist.