Maschinelles Lernen und neuronale Netze - Seite 69

 

5.6 Scikit-Learn-Pipelines (L05: Maschinelles Lernen mit Scikit-Learn)



5.6 Scikit-Learn-Pipelines (L05: Maschinelles Lernen mit Scikit-Learn)

Okay, alle zusammen, wir haben endlich den letzten Teil von Vorlesung 5 erreicht, der meiner Meinung nach der interessanteste ist: heilige Lernpipelines. Diese Pipelines sind unglaublich nützliche Objekte oder Klassen, die es uns ermöglichen, Datenverarbeitungs- und Vorhersageschritte nahtlos zu kombinieren. Um Ihnen einen Überblick zu geben, präsentiere ich ein Flussdiagramm der Funktionsweise von Pipelines, obwohl ich noch nicht auf alle Details eingehen werde.

Stellen Sie sich eine Pipeline als einen Schätzer mit einer Transformator-API vor. Ähnlich wie ein Schätzer verfügt eine Pipeline über eine Anpassungsmethode, die wir für den Trainingssatz verwenden können. Intern durchläuft die Pipeline mehrere Anpassungs- und Transformationsschritte und gelangt schließlich zum letzten Anpassungsschritt. Abhängig davon, was wir in unserer Pipeline definieren, kann es verschiedene Aufgaben ausführen, wie z. B. Datenskalierung (z. B. Standardisierung oder Min-Max-Skalierung), Dimensionsreduzierung, Training eines Lernalgorithmus und Rückgabe eines Vorhersagemodells, das wir für den Testsatz verwenden können .

Wenn wir die Vorhersagemethode für den Testsatz aufrufen, ähnlich wie bei der Schätzer-API, verwendet die Pipeline intern den Transformationsschritt, um dieselbe Skalierung anzuwenden, die für den Trainingssatz durchgeführt wurde. Dadurch wird die Konsistenz der Datenverarbeitung gewährleistet. Schließlich verwendet die Pipeline das angepasste Modell, um Vorhersagen zu treffen, z. B. die Rückgabe von Klassenbezeichnungen im Fall eines Klassifikators.

Lassen Sie mich dies anhand eines einfachen Codebeispiels einer Pipeline veranschaulichen. Hier erstelle ich eine Pipeline mit der Funktion make_pipeline aus dem Submodul sklearn.pipeline von Holy Learn. Dies ist eine bequeme Möglichkeit, Pipelines zu erstellen. In diesem Beispiel baue ich eine einfache Pipeline, die aus einem Standard-Skalierer und einem K-Nearest-Neighbor-Klassifikator besteht. Wie wir im vorherigen Video besprochen haben, standardisiert der Standardskalierer die Daten, indem er dafür sorgt, dass sie einen Mittelwert von Null und eine Einheitsvarianz aufweisen. Wir initialisieren den Standard-Skalierer und den K-Nearest-Neighbor-Klassifikator als Komponenten der Pipeline.

Sobald die Pipeline erstellt ist, können wir die Fit-Methode verwenden, um die Pipeline anhand der Trainingsdaten zu trainieren. Dann können wir die Vorhersagemethode verwenden, um Vorhersagen für den Testsatz zu treffen. Wenn wir „Fit“ aufrufen, wendet die Pipeline zunächst den Standardskalierer an, um den Mittelwert und die Standardabweichung aus den Trainingsdaten zu lernen. Anschließend werden diese Informationen zum Skalieren der Daten verwendet, die an den nächsten Schritt, den K-Nearest-Neighbor-Klassifikator, übergeben werden. Der Klassifikator erhält den standardisierten Trainingssatz und führt seinen Lernalgorithmus aus.

Bei der Vorhersage läuft derselbe Prozess ab, mit der Ausnahme, dass kein Anpassungsschritt erforderlich ist. Die Pipeline verwendet die während des Trainings erlernten Statistiken erneut, um die Testdaten zu skalieren, und wendet den erlernten Klassifikator an, um Vorhersagen zu treffen.

Zusammenfassend lässt sich sagen, dass eine Pipeline es uns ermöglicht, mehrere Objekte wie Transformatoren und Schätzer miteinander zu verketten, um einen zusammenhängenden Arbeitsablauf zu schaffen. Es bietet eine bequeme und effiziente Möglichkeit, Datenverarbeitungs- und Vorhersageschritte bei maschinellen Lernaufgaben durchzuführen.

Schauen wir uns nun eine Pipeline in Aktion an, indem wir die einfache Holdout-Methode zur Modellauswahl anwenden. Bei der Modellauswahl werden Hyperparameter angepasst, um das beste Modell auszuwählen. Bei der Holdout-Methode teilen wir die Daten in einen Trainingssatz und einen Testsatz auf. Innerhalb des Trainingssatzes teilen wir ihn weiter in eine Teilmenge zum Lernen und eine weitere Teilmenge zur Validierung auf, wo wir verschiedene Modelle mit verschiedenen Hyperparametereinstellungen bewerten.

In Scikit-Learn können wir die Holdout-Methode und die Hyperparameter-Optimierung mithilfe einer Methode namens Grid Search durchführen. Bei der Rastersuche wird ein Parameterraster erstellt, das die Hyperparameterkombinationen definiert, die wir auswerten möchten. Im Fall von k-nächsten Nachbarn können wir beispielsweise unterschiedliche Werte für die Anzahl der Nachbarn (k) und die Entfernungsmetrik (p) berücksichtigen. Die Rastersuche durchläuft alle möglichen Kombinationen, passt die Modelle an den Trainingssatz an und bewertet sie anhand des Validierungssatzes.

Obwohl die Rastersuche normalerweise mit der K-fachen Kreuzvalidierung verwendet wird, konzentrieren wir uns in diesem Beispiel auf die Holdout-Methode. Um die Holdout-Methode und die Rastersuche mithilfe einer Pipeline anzuwenden, können wir die GridSearchCV-Klasse von scikit-learn verwenden. Mit dieser Klasse können wir das Parameterraster und die Pipeline definieren und den Prozess der Anpassung und Bewertung der Modelle übernehmen.

Hier ist ein Beispielcodeausschnitt, der zeigt, wie GridSearchCV mit einer Pipeline verwendet wird:

 from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline

# Load the iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# Create a pipeline
pipeline = make_pipeline(StandardScaler(), KNeighborsClassifier())

# Define the parameter grid for grid search
param_grid = { 'kneighborsclassifier__n_neighbors' : [ 3 , 5 , 7 ],
               'kneighborsclassifier__weights' : [ 'uniform' , 'distance' ]}

# Create a GridSearchCV object
grid_search = GridSearchCV(pipeline, param_grid, cv= 5 )

# Fit the models and perform grid search
grid_search.fit(X_train, y_train)

# Print the best parameters and best score
print( "Best Parameters: " , grid_search.best_params_)
print( "Best Score: " , grid_search.best_score_)

# Evaluate the best model on the test set
best_model = grid_search.best_estimator_
accuracy = best_model.score(X_test, y_test)
print( "Test Accuracy: " , accuracy)
In diesem Beispiel laden wir zunächst den Iris-Datensatz und teilen ihn mithilfe der Funktion train_test_split in Trainings- und Testsätze auf. Anschließend erstellen wir mit make_pipeline eine Pipeline, die aus einem StandardScaler für die Datenskalierung und einem KNeighborsClassifier als Schätzer besteht.

Als nächstes definieren wir das Parametergitter param_grid, das die verschiedenen Hyperparameterkombinationen angibt, die wir auswerten möchten. In diesem Fall variieren wir die Anzahl der Nachbarn (n_neighbors) und die Gewichtsfunktion (Gewichte) für den K-Nearest-Neighbor-Klassifikator. Beachten Sie, dass den Parameternamen im Raster der Name der Pipeline-Komponente vorangestellt ist, gefolgt von einem doppelten Unterstrich (__).

Wir erstellen ein GridSearchCV-Objekt und übergeben die Pipeline, das Parameterraster und die gewünschte Anzahl von Kreuzvalidierungsfalten (cv). Die GridSearchCV-Klasse führt die Rastersuche automatisch durch, indem sie die Pipeline an die Trainingsdaten anpasst und die Modelle anhand des Validierungssatzes auswertet.

Nachdem die Rastersuche abgeschlossen ist, können wir mithilfe der Attribute best_params_ und best_score_ des GridSearchCV-Objekts auf die besten Parameter und die beste Punktzahl zugreifen. Wir drucken diese Werte aus, um zu sehen, welche Hyperparameterkombination die beste Leistung erbracht hat.

Schließlich bewerten wir das beste Modell im Testsatz, indem wir über das best_estimator_-Attribut des GridSearchCV-Objekts darauf zugreifen und die Genauigkeit mithilfe der Score-Methode berechnen.

Dieses Beispiel zeigt, wie wir Pipelines und Rastersuche nutzen können, um verschiedene Hyperparametereinstellungen effizient zu untersuchen und mithilfe der Holdout-Methode das beste Modell auszuwählen. Durch die Kombination von Datenverarbeitungsschritten und Modelltraining innerhalb einer Pipeline können wir den Arbeitsablauf für maschinelles Lernen rationalisieren und problemlos mit verschiedenen Komponenten und Hyperparametern experimentieren.

5.6 Scikit-learn Pipelines (L05: Machine Learning with Scikit-Learn)
5.6 Scikit-learn Pipelines (L05: Machine Learning with Scikit-Learn)
  • 2020.09.30
  • www.youtube.com
I aleady mentioned that scikit-learn is a well-designed Python library, right?! In this video, I will show you another reason why that's true. Scikit-learn i...
 

6.1 Einführung in Entscheidungsbäume (L06: Entscheidungsbäume)



6.1 Einführung in Entscheidungsbäume (L06: Entscheidungsbäume)

Abschließend befassen wir uns mit einem neuen Thema – Entscheidungsbäumen. Entscheidungsbaumalgorithmen können als iterative Top-Down-Konstruktionsmethoden für Klassifikatoren und Regressionsmodelle betrachtet werden. Damit die Videos überschaubar und nicht zu lang werden, habe ich den Vortrag in sieben Teile aufgeteilt.

Im ersten Teil geben wir einen kurzen Überblick über Entscheidungsbäume, ihre konzeptionelle Darstellung und stellen die Kernterminologie vor. Als nächstes werden wir rekursive Algorithmen im Kontext von Entscheidungsbäumen diskutieren und kurz erklären, was rekursive Algorithmen sind. Dieses Verständnis wird uns helfen, die Laufzeitkomplexität (Big O) von Entscheidungsbäumen zu analysieren.

Im Folgenden werden wir verschiedene Arten von Entscheidungsbäumen untersuchen. Derzeit implementiert der zweite Lernende den von Leo Breiman entwickelten CART-Entscheidungsbaumalgorithmus (Classification and Regression Trees). Es gibt jedoch auch andere Algorithmen wie ID3 und C4.5, die jeweils ihre eigenen Vor- und Nachteile haben. Wir werden auf diese verschiedenen Methoden eingehen und möglicherweise eine Hausaufgabe zuweisen, möglicherweise die Implementierung des ID3-Entscheidungsbaums.

Im Rahmen der Vorlesung werden wir auch verschiedene Aufteilungskriterien untersuchen, die für Entscheidungsbäume verwendet werden. Derzeit verwendet der zweite Lernende CART, das typischerweise auf der Gini-Verunreinigung basiert. Es ermöglicht jedoch das Mischen und Anpassen verschiedener Aufteilungskriterien. Diese Aufteilungskriterien beziehen sich auf die Funktionen oder Kennzahlen, die zur Bestimmung eines geeigneten Merkmals für die Aufteilung eines Entscheidungsbaums verwendet werden. Wir werden die Gini-Kriterien für Verunreinigung und Entropie behandeln und diskutieren, warum sie bei der Bewertung des Baumwachstums und der Spaltungsqualität dem Fehlklassifizierungsfehler vorgezogen werden.

Sobald wir diese Details behandelt haben, werden wir uns mit den Verbesserungen befassen, die Entscheidungsbäume im Hinblick auf Rechenlaufzeit und Klassifizierungsgenauigkeit effizienter machen können. Wir werden uns auch mit der Herausforderung der Überanpassung befassen und Techniken zu deren Abschwächung erforschen.

Abschließend stellen wir ein Codebeispiel bereit, das die Arbeit mit Entscheidungsbäumen in scikit-learn, einer beliebten Bibliothek für maschinelles Lernen, demonstriert. Dieses praktische Beispiel wird Ihnen helfen, Ihr Verständnis von Entscheidungsbäumen und deren Umsetzung zu festigen.

Lassen Sie uns nun in das Grundkonzept eines Entscheidungsbaums eintauchen. Obwohl es sich nicht unbedingt um ein Problem des maschinellen Lernens handelt, beziehen sich Entscheidungsbäume auf Alltagsszenarien, bei denen es um die Entscheidungsfindung geht. Wir können zum Beispiel darüber nachdenken, was zu einem bestimmten Zeitpunkt zu tun ist. Wenn wir Arbeit zu erledigen haben, können wir uns dafür entscheiden, drinnen zu bleiben und die Arbeit zu Ende zu bringen. Umgekehrt können wir, wenn keine Arbeiten anstehen, in Erwägung ziehen, nach draußen zu gehen, abhängig von den Wetteraussichten.

Nehmen wir an, wenn es sonnig und nicht zu kalt ist, entscheiden wir uns vielleicht dafür, an den Strand zu gehen. Wenn es jedoch bewölkt ist, können wir uns stattdessen für einen Lauf entscheiden. Bei Regen oder Schnee könnten wir unsere Freunde nach der Verfügbarkeit fragen. Wenn unsere Freunde beschäftigt sind, entscheiden wir uns vielleicht dazu, drinnen zu bleiben und Aktivitäten wie dem Lesen eines Buches nachzugehen. Wenn unsere Freunde hingegen Zeit haben, können wir Möglichkeiten erkunden, wie ins Kino zu gehen, online Videospiele zu spielen oder einen Online-Chat zu führen.

Diese Grundstruktur stellt einen Entscheidungsbaum dar, bei dem jeder Knoten einer Frage oder Entscheidung entspricht und die Zweige zu verschiedenen Optionen führen. Der Wurzelknoten stellt die erste Frage oder Entscheidung im Baum dar, während die Blattknoten die endgültigen Ausgaben darstellen. Die internen Knoten sind die Zwischenentscheidungen, die den Fluss des Baums steuern.

Darüber hinaus können die Knoten in einem Entscheidungsbaum in binäre Knoten oder Knoten mit mehreren Kategorien kategorisiert werden. Binäre Knoten bieten nur zwei Optionen, während Knoten mit mehreren Kategorien mehr als zwei Optionen unterstützen. Allerdings können Mehrkategorienaufteilungen, wie bereits erläutert, in binäre Aufteilungen umgewandelt werden.

Entscheidungsbäume können auch als Regelwerke interpretiert werden, ähnlich wie if-else-Anweisungen in der Programmierung. Tatsächlich können Entscheidungsbäume in Regelsätze umgewandelt werden, obwohl die umgekehrte Umwandlung nicht immer möglich ist. Diese Eigenschaft von Entscheidungsbäumen macht sie in hohem Maße interpretierbar und erklärbar, was in Bereichen, in denen Interpretierbarkeit und Erklärbarkeit wichtig sind, wie beispielsweise im juristischen und medizinischen Bereich, von entscheidender Bedeutung ist.

Um einen Entscheidungsbaum zu erstellen, benötigen wir einen Datensatz, der Beispiele für Eingaben und entsprechende Ausgaben enthält. Jedes Beispiel besteht aus einer Reihe von Merkmalen (auch als Attribute oder Prädiktoren bezeichnet) und einer Zielvariablen (der Ausgabe, die wir vorhersagen möchten). Der Entscheidungsbaumalgorithmus analysiert die Merkmale und ihre Beziehungen, um die beste Möglichkeit zur Aufteilung der Daten und zur Erstellung von Vorhersagen zu ermitteln.

Der Prozess der Erstellung eines Entscheidungsbaums umfasst die Auswahl der besten Funktion zur Aufteilung der Daten an jedem Knoten. Das Ziel besteht darin, die Funktion zu finden, die den größten Informationsgewinn oder die beste Aufteilung im Hinblick auf die Klassifizierungsgenauigkeit bietet. Dieser Prozess wird normalerweise rekursiv ausgeführt, beginnend beim Wurzelknoten und bis hinunter zu den Blattknoten.

Bei jedem Schritt bewertet der Algorithmus verschiedene Aufteilungskriterien, wie z. B. Gini-Verunreinigung oder Entropie. Die Gini-Verunreinigung misst die Wahrscheinlichkeit einer Fehlklassifizierung eines zufällig ausgewählten Elements aus der Menge, während die Entropie die durchschnittliche Informationsmenge misst, die erforderlich ist, um die Klassenbezeichnung eines zufällig ausgewählten Elements aus der Menge zu identifizieren. Diese Kriterien helfen dabei, die Reinheit der resultierenden Teilmengen nach einer Aufteilung zu bestimmen.

Sobald ein Feature zur Aufteilung ausgewählt wurde, werden die Daten basierend auf den möglichen Feature-Werten in Teilmengen unterteilt. Dieser Vorgang wird für jede Teilmenge rekursiv wiederholt, bis ein Stoppkriterium erfüllt ist. Das Stoppkriterium könnte das Erreichen einer maximalen Baumtiefe, das Erreichen einer minimalen Anzahl von Proben in einem Blattknoten oder das Erreichen eines bestimmten Reinheitsgrads in den Blattknoten sein.

Um die Zielvariable für eine neue Instanz mithilfe eines trainierten Entscheidungsbaums vorherzusagen, beginnen wir am Wurzelknoten und durchlaufen den Baum nach unten, indem wir den entsprechenden Zweigen basierend auf den Merkmalswerten der Instanz folgen. Schließlich erreichen wir einen Blattknoten, der die vorhergesagte Ausgabe liefert.

Entscheidungsbäume haben mehrere Vorteile. Sie sind leicht zu verstehen und zu interpretieren und daher eine beliebte Wahl zur Visualisierung und Erläuterung des Entscheidungsprozesses. Sie können sowohl numerische als auch kategoriale Merkmale verarbeiten und können sowohl für Klassifizierungs- als auch für Regressionsaufgaben verwendet werden. Entscheidungsbäume sind auch robust gegenüber fehlenden Werten und Ausreißern, da sie diese während des Aufteilungsprozesses effektiv verarbeiten können.

Allerdings weisen Entscheidungsbäume auch einige Einschränkungen auf. Es kann leicht zu einer Überanpassung der Trainingsdaten kommen, was zu einer schlechten Verallgemeinerung auf bisher unbekannte Beispiele führt. Dies kann durch Beschneidungstechniken oder den Einsatz von Ensemble-Methoden wie Random Forests oder Gradient Boosting gemildert werden. Entscheidungsbäume reagieren auch empfindlich auf kleine Änderungen in den Trainingsdaten, und für ähnliche Datensätze können unterschiedliche Aufteilungen generiert werden. Darüber hinaus kann es bei Entscheidungsbäumen schwierig sein, komplexe Beziehungen zwischen Features zu erfassen.

Zusammenfassend lässt sich sagen, dass Entscheidungsbäume leistungsstarke und interpretierbare Modelle sind, die für Klassifizierungs- und Regressionsaufgaben verwendet werden können. Sie bieten einen klaren Entscheidungsrahmen, indem sie die Daten als Baumstruktur mit Knoten und Zweigen darstellen. Die Wahl der Aufteilungskriterien und Stoppkriterien sowie Techniken zum Umgang mit Überanpassungen spielen eine wichtige Rolle beim Aufbau genauer und robuster Entscheidungsbäume.

6.1 Intro to Decision Trees (L06: Decision Trees)
6.1 Intro to Decision Trees (L06: Decision Trees)
  • 2020.10.04
  • www.youtube.com
Decision trees are one of the fundamental methods for machine learning on tabular data. Decision trees are the main algorithm behind popular methods such as ...
 

6.2 Rekursive Algorithmen & Big-O (L06: Entscheidungsbäume)



6.2 Rekursive Algorithmen & Big-O (L06: Entscheidungsbäume)

In diesem Video dreht sich unsere Diskussion um rekursive Algorithmen, die eng mit dem Konzept des Teilens und Herrschens verbunden sind. Beim Teilen und Erobern geht es darum, ein Problem in kleinere Teilprobleme zu zerlegen, diese einzeln zu lösen und die Lösungen dann zu kombinieren. Mit diesem Konzept sind Entscheidungsbaumtraining und -vorhersage sowie verschiedene Divide-and-Conquer-Algorithmen verknüpft. Rekursion ist eine gängige Technik zur Implementierung von Divide-and-Conquer-Algorithmen, obwohl es nicht der einzige Ansatz ist.

Um die Idee der Rekursion zu verstehen, betrachten wir ein Beispiel eines in Python implementierten rekursiven Algorithmus. Aus Gründen der Diskussion habe ich den tatsächlichen Namen der Funktion absichtlich ausgeblendet, um Sie zu ermutigen, ihren Zweck zu analysieren, bevor wir uns mit ihren Details befassen. Ich empfehle Ihnen, sich einen Moment Zeit zu nehmen und darüber nachzudenken, was diese Funktion bewirken könnte. Sie können das Video anhalten oder sogar in einem Jupyter-Notizbuch damit experimentieren, um sein Verhalten zu verstehen.

Vorausgesetzt, Sie haben sich die Zeit genommen, es zu analysieren, lassen Sie uns die Funktion gemeinsam erkunden. Diese spezielle Funktion arbeitet mit Python-Listen. Betrachten Sie beispielsweise eine Liste wie [1, 2, 3]. Der Zweck dieser Funktion besteht darin, die Länge eines Arrays oder einer Liste zu bestimmen. Schauen wir uns an, wie es funktioniert. Die Funktion nimmt eine Eingabe entgegen, die hier mit „X“ bezeichnet wird, und prüft zwei Bedingungen. Zunächst wird geprüft, ob die Liste leer ist. Wenn dies der Fall ist, gibt die Funktion 0 zurück, da eine leere Liste die Länge Null hat, was als Stoppbedingung fungiert. Andernfalls, wenn die Liste nicht leer ist, gibt die Funktion 1 zurück und ruft sich selbst mit einer kleineren Eingabe auf.

Wenn dies abstrakt erscheint, lassen Sie es uns Schritt für Schritt aufschlüsseln. Angenommen, wir beginnen mit einer vollständigen Liste, z. B. [1, 2, 3]. Zunächst prüft die Funktion, ob die Liste leer ist, was nicht der Fall ist. Folglich geht es zur „else“-Anweisung über, wo es 1 zurückgibt und sich selbst rekursiv mit einer kleineren Eingabe aufruft. In diesem Fall wird die Eingabe zu [2, 3], da wir das erste Element aus der ursprünglichen Liste entfernen. Wir wiederholen den Vorgang: Die Funktion gibt erneut 1 zurück, ruft sich selbst mit der neuen Eingabe [3] auf und ruft sich schließlich selbst mit einer leeren Liste auf.

Beim Erreichen der leeren Liste prüft die Funktion erneut die „Wenn“-Bedingung, die nun wahr ist. Als Ergebnis wird 0 zurückgegeben. Wenn wir den gesamten Ausdruck auswerten, erhalten wir den Wert 3. Daher berechnet diese Funktion die Länge eines Arrays mithilfe der Rekursion, wobei sich die Funktion innerhalb ihrer eigenen Definition selbst aufruft. Es ist erwähnenswert, dass die Rekursion zwar eine konzeptionell elegante Lösung in der Informatiktheorie ist, aber möglicherweise nicht immer der praktischste Ansatz für die Implementierung ist. In Python gibt es bei der Rekursion Beschränkungen hinsichtlich der Anzahl der Selbstaufrufe, und zu große Listen können einen Stapelüberlauffehler verursachen.

Sehen wir uns nun ein weiteres Beispiel an, das Rekursion verwendet. Hier gehen wir ein Divide-and-Conquer-Problem an – das Sortieren einer Liste oder eines Arrays – mithilfe des Quicksort-Algorithmus. Ähnlich wie die vorherige Funktion verwendet Quicksort Rekursion als Implementierungsmittel. Der Algorithmus verwendet eine Stoppbedingung, bei der die Funktion das Array so zurückgibt, wie es ist, wenn es weniger als zwei Elemente enthält. Andernfalls führt der Algorithmus den Hauptabschnitt des Codes aus.

Wie funktioniert Quicksort? Zuerst wählen wir einen Pivot aus, normalerweise das erste Element des Arrays. Dann erstellen wir zwei neue Listen: eine für die Elemente, die kleiner als der Pivot sind, und eine andere für die Elemente, die größer als der Pivot sind. Wir durchlaufen das Array, ohne den Pivot, und verteilen jedes Element basierend auf seinem Vergleich mit dem Pivot entweder auf die kleinere oder die größere Liste. Als nächstes rufen wir rekursiv Quicksort sowohl für die kleineren als auch für die größeren Listen auf und verwenden dabei den Pivot als zentrales Element. Schließlich ist die

Rekursive Aufrufe erreichen die Stoppbedingung, wenn die Listen weniger als zwei Elemente enthalten. An diesem Punkt gibt die Funktion einfach die sortierten Listen zurück.

Lassen Sie uns ein Beispiel durchgehen, um den Prozess zu verstehen. Angenommen, wir haben eine unsortierte Liste [7, 2, 5, 1, 9, 3]. Der Quicksort-Algorithmus läuft wie folgt ab:

  1. Der Pivot wird als erstes Element ausgewählt, nämlich 7.
  2. Es werden zwei leere Listen, eine kleinere und eine größere, erstellt.
  3. Durchlaufen Sie die Liste, ohne den Pivot:
    • 2 ist kleiner als 7 und wird daher in die kleinere Liste aufgenommen.
    • 5 ist kleiner als 7 und wird daher in die kleinere Liste aufgenommen.
    • 1 ist kleiner als 7 und wird daher in die kleinere Liste aufgenommen.
    • 9 ist größer als 7 und wird daher in die größere Liste aufgenommen.
    • 3 ist kleiner als 7 und wird daher in die kleinere Liste aufgenommen.
  4. Rufen Sie Quicksort rekursiv sowohl für die kleineren als auch für die größeren Listen auf.
    • Für die kleinere Liste: [2, 5, 1, 3]
      • Wählen Sie 2 als Pivot und erstellen Sie leere Listen.
      • Durchlaufen Sie die Liste:
        • 5 ist größer als 2 und wird daher in die größere Liste aufgenommen.
        • 1 ist kleiner als 2 und wird daher in die kleinere Liste aufgenommen.
        • 3 ist größer als 2 und wird daher in die größere Liste aufgenommen.
      • Rufen Sie Quicksort rekursiv sowohl für die kleineren als auch für die größeren Listen auf.
        • Für die kleinere Liste: [1]
          • Die Liste enthält weniger als zwei Elemente und wird daher unverändert zurückgegeben.
        • Für die größere Liste: [5, 3]
          • Wählen Sie 5 als Pivot und erstellen Sie leere Listen.
          • Durchlaufen Sie die Liste:
            • 3 ist kleiner als 5 und wird daher in die kleinere Liste aufgenommen.
          • Rufen Sie Quicksort rekursiv sowohl für die kleineren als auch für die größeren Listen auf.
            • Für die kleinere Liste: [3]
              • Die Liste enthält weniger als zwei Elemente und wird daher unverändert zurückgegeben.
            • Für die größere Liste: [5]
              • Die Liste enthält weniger als zwei Elemente und wird daher unverändert zurückgegeben.
      • Die endgültige sortierte kleinere Liste ist [1].
      • Die endgültige sortierte größere Liste ist [3, 5].
    • Für die größere Liste: [9]
      • Die Liste enthält weniger als zwei Elemente und wird daher unverändert zurückgegeben.
  5. Die endgültige sortierte kleinere Liste ist [1].
  6. Die endgültige sortierte größere Liste ist [3, 5, 9].
  7. Verketten Sie die sortierte kleinere Liste, Pivot (7) und die sortierte größere Liste.
    • Die sortierte Liste wird zu [1, 3, 5, 7, 9].

Durch die rekursive Aufteilung der Liste in kleinere Unterlisten und deren Sortierung sortiert der Quicksort-Algorithmus die gesamte Liste effizient.

Zusammenfassend lässt sich sagen, dass rekursive Algorithmen eine entscheidende Rolle bei Divide-and-Conquer-Ansätzen spielen. Sie zerlegen Probleme in kleinere Teilprobleme, lösen diese einzeln und kombinieren schließlich die Lösungen, um das ursprüngliche Problem zu lösen. Rekursive Funktionen rufen sich selbst innerhalb ihrer eigenen Definition auf und bearbeiten wiederholt kleinere Eingaben, bis sie eine Stoppbedingung erreichen. Es ist jedoch wichtig, die Beendigungsbedingung zu berücksichtigen, um eine unendliche Rekursion zu vermeiden und sicherzustellen, dass der Algorithmus zu einer Lösung konvergiert.

6.2 Recursive algorithms & Big-O (L06: Decision Trees)
6.2 Recursive algorithms & Big-O (L06: Decision Trees)
  • 2020.10.04
  • www.youtube.com
To help understand how we can implement decision trees neatly, it's worthwhile taking this little detour and learn about recursive algorithms.-------This vid...
 

6.3 Arten von Entscheidungsbäumen (L06: Entscheidungsbäume)



6.3 Arten von Entscheidungsbäumen (L06: Entscheidungsbäume)

In den vorherigen Videos haben wir uns auf die Einführung von Entscheidungsbäumen und rekursiven Algorithmen konzentriert. Schauen wir uns nun die verschiedenen Arten von Entscheidungsbäumen an. Wir werden untersuchen, wie die Änderung bestimmter Entwurfsentscheidungen zu unterschiedlichen Implementierungen von Entscheidungsbaumalgorithmen führen kann.

Lassen Sie uns zunächst den generischen Entscheidungsbaumalgorithmus in Pseudocode zusammenfassen, den wir im vorherigen Video besprochen haben. Wir haben uns mit einem binären Klassifizierungsproblem beschäftigt, bei dem die Klassenbezeichnungen nur 1 und 0 waren. Unser Baum folgte einer binären Struktur, die eine binäre Aufteilung beinhaltete. Dies bedeutet, dass jeder Knoten in genau zwei untergeordnete Knoten unterteilt wurde. Darüber hinaus haben wir nur binäre Merkmale berücksichtigt, bei denen die Merkmalswerte entweder 0 oder 1 sein könnten.

Wie wir jedoch zuvor anhand der Entscheidungsbaumvisualisierung in scikit-learn gezeigt haben, können wir auch kontinuierliche Features nutzen und sie in binäre Aufteilungen umwandeln. Zum Beispiel können wir ein Feature auswählen, es xj nennen und es mithilfe eines Schwellenwerts, der als „t“ bezeichnet wird, in zwei Teile aufteilen. Dieses Aufteilungskriterium kann als xj kleiner als t oder xj größer oder gleich t definiert werden, was als wahr oder falsch dargestellt werden kann. Dadurch können wir auch mit kontinuierlichen Merkmalen eine binäre Aufteilung durchführen, da wir die Entscheidungsschwelle während des Aufteilungsprozesses anpassen können. Sie haben die Möglichkeit, eine solche Aufteilung in den Hausaufgaben zu bearbeiten.

Konzentrieren wir uns nun auf die Implementierung des Entscheidungsbaumalgorithmus. An jedem Knoten im Entscheidungsbaum betrachten wir ein einzelnes Merkmal, das als xj bezeichnet wird, wobei „j“ von 1 bis m reicht und bis zu m Merkmale darstellt. Wenn wir einen übergeordneten Knoten in zwei untergeordnete Knoten aufteilen, beispielsweise den untergeordneten Knoten Null und den untergeordneten Knoten Eins, müssen wir bestimmen, welche Funktion wir für die Aufteilung auswählen möchten. Für kontinuierliche Features müssen wir auch den Entscheidungsschwellenwert berücksichtigen, bei dem wir vergleichen, ob xj größer oder gleich einem bestimmten Wert „t“ ist. Die Auswahl des geeigneten Merkmals und Schwellenwerts ist von entscheidender Bedeutung, und wir benötigen ein Maß für die Güte, um die Qualität einer Aufteilung bewerten zu können.

Um den generischen Baumwachstumsalgorithmus zusammenzufassen, wählen wir die Funktion aus, die beim Teilen des übergeordneten Knotens zum größten Informationsgewinn führt. Der Informationsgewinn ist ein Maß für die Güte einer Spaltung. Je höher der Informationsgewinn, desto besser ist die Aufteilung und das ausgewählte Feature, einschließlich seines Aufteilungsschwellenwerts für kontinuierliche Features. Im nächsten Video werden wir zwei häufig verwendete Maße zur Beurteilung der Güte einer Aufteilung besprechen: Entropie und Gini-Verunreinigung.

Der Algorithmus folgt bestimmten Stoppbedingungen. Es stoppt, wenn die untergeordneten Knoten rein sind, was bedeutet, dass alle Datenpunkte innerhalb eines Knotens dieselbe Klassenbezeichnung haben. Alternativ wird es angehalten, wenn der Informationsgewinn kleiner oder gleich Null ist, was darauf hinweist, dass keine Verbesserung vorliegt. Sobald wir einen reinen Knoten erreichen oder keinen Fortschritt machen, hören wir auf, den Baum weiter wachsen zu lassen.

Nachdem wir den Entscheidungsbaum erweitert haben, können wir ihn verwenden, um Vorhersagen zu treffen. Angenommen, wir haben einen Baum mit mehreren Ebenen, bestehend aus übergeordneten und Blattknoten. Um die Klassenbezeichnung eines neuen Datenpunkts vorherzusagen, durchlaufen wir den Baum basierend auf den Merkmalswerten des Datenpunkts. An jedem Knoten folgen wir dem entsprechenden Zweig basierend auf den Feature-Bedingungen, bis wir einen Blattknoten erreichen. Für Blattknoten verwenden wir den Mehrheitsentscheidungsansatz, um die Klassenbezeichnung zu bestimmen. Das bedeutet, dass wir die Klassenbezeichnung vorhersagen, die in diesem Blattknoten am häufigsten vorkommt.

Es ist wichtig zu beachten, dass Entscheidungsbäume sowohl binäre als auch Mehrklassen-Klassifizierungsprobleme bewältigen können. Der Pseudocode, den wir in den vorherigen Folien besprochen haben, konzentrierte sich auf die binäre Klassifizierung, Entscheidungsbäume können jedoch eine beliebige Anzahl von Klassenbezeichnungen verarbeiten. Der Mehrheitsentscheidungsansatz ist unabhängig von der Anzahl der Klassen anwendbar.

Bei der Entwicklung von Entscheidungsbaumalgorithmen stoßen wir auf verschiedene Designoptionen. Eine entscheidende Frage ist, wie die Knoten aufgeteilt werden. Wir müssen das Kriterium für die Aufteilung definieren und festlegen, wie verschiedene Aufteilungen verglichen und bewertet werden. Die beiden am häufigsten verwendeten Maße zur Beurteilung der Qualität einer Aufspaltung sind Entropie und Gini-Verunreinigung.

Entropie ist ein Maß für die Unreinheit oder Unordnung innerhalb eines Knotens. Es quantifiziert die Unsicherheit, die mit den Klassenbezeichnungen der Datenpunkte in diesem Knoten verbunden ist. Die Entropie eines Knotens wird mit der folgenden Formel berechnet:

Entropy(node) = - sum(p(i) * log2(p(i))), für alle Klassen i

Dabei stellt p(i) den Anteil der Datenpunkte im Knoten dar, die zur Klasse i gehören. Der Entropiewert reicht von 0 bis 1, wobei 0 einen reinen Knoten angibt (alle Datenpunkte gehören zur gleichen Klasse) und 1 maximale Verunreinigung angibt (gleiche Verteilung der Datenpunkte über alle Klassen).

Um die Qualität einer Aufteilung zu bewerten, berechnen wir den gewichteten Durchschnitt der Entropiewerte für die resultierenden untergeordneten Knoten. Dies wird als Informationsgewinn bezeichnet. Der Informationsgewinn errechnet sich wie folgt:

Informationsgewinn = Entropie(übergeordnet) – Summe((|Sv| / |S|) * Entropie(Sv)), für alle untergeordneten Knoten v

Dabei ist Entropy(parent) die Entropie des übergeordneten Knotens, |Sv| stellt die Anzahl der Datenpunkte im untergeordneten Knoten v und |S| dar ist die Gesamtzahl der Datenpunkte im übergeordneten Knoten. Der Informationsgewinn misst die Verringerung der Entropie, die durch die Aufteilung des Knotens basierend auf einem bestimmten Merkmal erreicht wird.

Die Gini-Verunreinigung ist ein weiteres Maß zur Beurteilung der Qualität einer Spaltung. Es quantifiziert die Wahrscheinlichkeit einer Fehlklassifizierung eines zufällig ausgewählten Datenpunkts in einem Knoten, wenn wir eine Klassenbezeichnung basierend auf der Verteilung der Klassenbezeichnungen in diesem Knoten zuweisen. Die Gini-Verunreinigung eines Knotens wird mit der folgenden Formel berechnet:

Gini(node) = 1 - sum(p(i)^2), für alle Klassen i

Dabei stellt p(i) den Anteil der Datenpunkte im Knoten dar, die zur Klasse i gehören. Ähnlich wie bei der Entropie reicht der Gini-Verunreinigungswert von 0 bis 1, wobei 0 einen reinen Knoten und 1 die maximale Verunreinigung angibt.

Um die Qualität einer Aufteilung zu bewerten, berechnen wir den gewichteten Durchschnitt der Gini-Verunreinigungswerte für die resultierenden untergeordneten Knoten. Dies ist als Gini-Unreinheitsindex bekannt. Der Gini-Verunreinigungsindex wird wie folgt berechnet:

Gini-Index = sum((|Sv| / |S|) * Gini(Sv)), für alle untergeordneten Knoten v

wobei |Sv| stellt die Anzahl der Datenpunkte im untergeordneten Knoten v und |S| dar ist die Gesamtzahl der Datenpunkte im übergeordneten Knoten. Der Gini-Index misst die Reduzierung der Gini-Verunreinigung, die durch die Aufteilung des Knotens basierend auf einem bestimmten Merkmal erreicht wird.

Sowohl Entropie als auch Gini-Verunreinigung werden häufig in Entscheidungsbaumalgorithmen verwendet, und die Wahl zwischen ihnen hängt vom spezifischen Problem und den Dateneigenschaften ab. In scikit-learn können Sie den Kriteriumsparameter auswählen, um beim Erstellen von Entscheidungsbaummodellen entweder „Entropie“ oder „Gini“ anzugeben.

Im nächsten Video werden wir uns eingehender mit diesen Maßnahmen befassen und diskutieren, wie wir sie verwenden können, um die besten Aufteilungen in einem Entscheidungsbaumalgorithmus zu ermitteln.

6.3 Types of decision trees (L06: Decision Trees)
6.3 Types of decision trees (L06: Decision Trees)
  • 2020.10.06
  • www.youtube.com
Most often, we use CART decision trees in practice. However, there are more than just one type of decision tree out there as we will see in this video.------...
 

6.4 Aufteilungskriterien (L06: Entscheidungsbäume)



6.4 Aufteilungskriterien (L06: Entscheidungsbäume)

Im Video geht der Redner auf die Feinheiten von Entscheidungsbäumen ein und stellt das Konzept der Aufteilung von Kriterien in diesem Rahmen vor. Aufteilungskriterien sind im Wesentlichen die Kriterien oder Maßnahmen, die verwendet werden, um das am besten geeignete Merkmal zum Aufteilen eines übergeordneten Knotens in seine untergeordneten Knoten zu bestimmen. Im Allgemeinen umfasst ein Datensatz mehrere Features, die als x1, x2, x3, ..., xm bezeichnet werden, wobei j einen Wert im Bereich von 1 bis m darstellt.

Der Redner betont, dass an jedem Knoten im Entscheidungsbaum eine kritische Entscheidung darüber getroffen werden muss, welche Funktion für den Aufteilungsprozess verwendet werden soll. Um das optimale Merkmal zu identifizieren, werden bestimmte Kriterien oder Maßnahmen definiert, um die verfügbaren Merkmale zu vergleichen und zu bewerten. Das Ziel besteht darin, ein Merkmal auszuwählen, das eine bessere Aufteilung ergibt und dadurch die Vorhersagegenauigkeit des Entscheidungsbaums verbessert.

Um die Funktionsweise von Entscheidungsbäumen zu veranschaulichen, stellt der Sprecher einen Spielzeugdatensatz vor, der aus drei Merkmalen besteht: x1, x2, x3 und einer Spalte, die die Klassenbezeichnung y angibt. Die Klassenbezeichnungen in diesem Datensatz sind binär und nehmen entweder die Werte Einsen oder Nullen an. Der Sprecher weist darauf hin, dass es durch den Einsatz von nur zwei Funktionen möglich ist, für diesen bestimmten Datensatz eine Trainingsgenauigkeit von 100 % zu erreichen.

Der Redner fordert das Publikum heraus und fordert es auf, auf der Grundlage der drei Merkmale zwei Regeln zu finden, die zu einer Trainingsgenauigkeit von 100 % führen können. Sie schlagen vor, das Video anzuhalten, um über die Lösung nachzudenken. Anschließend verrät der Sprecher die Lösung und erklärt, dass nur x1 und x2 die relevanten und nützlichen Merkmale seien, während x3 scheinbar zufällig sei und nicht zur Genauigkeit beitrage.

Im weiteren Verlauf stellt der Sprecher den Datensatz visuell dar, indem er die Werte von x1 und x2 in einem Diagramm darstellt. Die roten Punkte im Diagramm stellen Datenpunkte dar, die zur Klassenbezeichnung eins gehören, während die blauen Quadrate Datenpunkte darstellen, die als Null gekennzeichnet sind. Basierend auf dem in den Datenpunkten beobachteten Muster erstellt der Sprecher eine Aufteilung, was zur Bildung eines Entscheidungsbaums führt.

Die anfängliche Aufteilung basiert darauf, dass x1 größer als 5,5 ist. Durch diese Unterteilung werden die Daten in zwei Bereiche unterteilt, von denen einer blau und der andere rot gekennzeichnet ist. Der Redner stellt fest, dass diese Aufteilung zwar einige Datenpunkte korrekt klassifiziert, andere jedoch auch falsch klassifiziert. Die anschließende Aufteilung basiert darauf, dass x2 größer als 10,5 ist. Dies verfeinert den Klassifizierungsprozess weiter und führt letztendlich zu einem Entscheidungsbaum, der eine Trainingsgenauigkeit von 100 % erreicht.

Um die Klarheit zu verbessern, bietet der Sprecher eine klarere visuelle Darstellung des Entscheidungsbaums und erläutert die mit jedem Knoten verbundenen Informationen. Jeder Knoten symbolisiert einen übergeordneten Knoten, der geteilt wird, was zur Erstellung untergeordneter Knoten führt. Für jeden Knoten werden der Aufteilungswert (dargestellt durch den Merkmalswert und den Schwellenwert), die Entropie (ein Maß für den Informationsgehalt), die Anzahl der Trainingsbeispiele (Proben), die Klassenbezeichnungsverteilung (Veranstaltungsort) und die Mehrheitsklasse angezeigt.

Der Entscheidungsbaum wird in einer hierarchischen Struktur dargestellt, wobei aus übergeordneten Knoten untergeordnete Knoten entstehen. Der Redner unterstreicht die Bedeutung jedes Knotens und betont, dass Entscheidungsbäume diese Knoten verwenden, um Vorhersagen auf der Grundlage der Eingabemerkmale zu treffen.

Abschließend erwähnt der Redner einen alternativen Ansatz, um eine 100-prozentige Trainingsgenauigkeit zu erreichen, indem ausschließlich Funktion zwei genutzt wird. Sie demonstrieren einen Entscheidungsbaum, der auf diesem alternativen Ansatz basiert, und zeigen, wie Merkmal zwei bei den Werten 7,5 und 10 aufgeteilt werden kann, um die Datenpunkte genau in die gewünschten Klassen zu unterteilen.

In einem idealen Szenario, in dem wir über kontinuierliche Funktionen und korrekt festgelegte Schwellenwerte verfügen, würden die oben genannten Konzepte gelten. Anstelle der Variablen „V“ würden wir eine Variable xj verwenden, die ein kontinuierliches Merkmal darstellt, das kleiner oder gleich einem Schwellenwert ist. Der zweite untergeordnete Knoten würde Werte symbolisieren, die über dem Schwellenwert liegen. Wenn wir in diesem Fall kontinuierliche Merkmale besitzen, kann eine ähnliche Formel wie zuvor verwendet werden, aber jetzt müssen wir einen Schwellenwert in die Funktion integrieren. Wir können die Werte vergleichen, um zu prüfen, ob sie größer oder gleich dem Schwellenwert sind.

Wenn wir also ein kontinuierliches Merkmal und einen binären Baum ähnlich dem CART (Klassifizierungs- und Regressionsbaum) haben, müssen wir nur über zwei untergeordnete Knoten statt über mehrere summieren. Ein untergeordneter Knoten entspricht Werten, die größer als der Schwellenwert sind, während der andere Werte darstellt, die kleiner oder gleich dem Schwellenwert sind. Diese Vereinfachung ist logisch, da wir uns auf die beiden möglichen Ergebnisse basierend auf dem Schwellenwert konzentrieren. Dennoch ist es wichtig anzuerkennen, dass diese Erklärung möglicherweise komplex erscheint und ein wichtiger Aspekt, der noch fehlt, das Konzept der Entropie ist, das in den folgenden Folien untersucht wird.

In diesem Zusammenhang bezieht sich Entropie auf die Shannon-Entropie, die von Claude Shannon im Bereich der Informationstheorie eingeführt wurde. Sie weicht von der in der Biophysik oder Thermodynamik verwendeten Entropie ab. Die Shannon-Entropie dient als Maß zur Quantifizierung der Unreinheit oder Unordnung von untergeordneten Knoten in Entscheidungsbäumen. Es quantifiziert die Menge an Informationen, die von einer diskreten Zufallsvariablen übermittelt werden, die zwei Ergebnisse besitzt, ähnlich einer Bernoulli-Verteilung. In der Bernoulli-Verteilung stellt ein mit p bezeichneter Wahrscheinlichkeitsparameter die Wahrscheinlichkeit des Eintretens eines Ereignisses dar.

Shannon definierte Information als die Anzahl der Bits, die erforderlich sind, um den Wert 1/p zu kodieren. Einfacher ausgedrückt misst es den Grad der Sicherheit oder Unsicherheit, der mit einem Ereignis verbunden ist. Die Anzahl der benötigten Bits kann als Logarithmus zur Basis 2 von 1/p berechnet werden. Mit zunehmender Wahrscheinlichkeit p nimmt die Anzahl der erforderlichen Bits ab, was auf einen höheren Grad an Sicherheit hinweist. Wenn umgekehrt die Wahrscheinlichkeit gegen Null geht, steigt die Anzahl der erforderlichen Bits, was ein höheres Maß an Unsicherheit impliziert.

Um dieses Konzept zu veranschaulichen, betrachten wir einige Beispiele. Wenn wir eine Wahrscheinlichkeit von 0,5 haben, würde die Anzahl der erforderlichen Bits 1 betragen. Wenn die Wahrscheinlichkeit 0 ist, wäre die Anzahl der erforderlichen Bits unendlich, was absolute Sicherheit bedeutet. Wenn umgekehrt die Wahrscheinlichkeit 1 ist, wäre die Anzahl der erforderlichen Bits 0, was auf vollständige Unsicherheit hinweist. Daher reicht der Wertebereich für den Term -log2(p) von minus unendlich bis 0.

Die Shannon-Entropie wird als durchschnittliche Information über alle möglichen Ereignisse berechnet. Es stellt den gewichteten Durchschnitt der mit jedem Ereignis verbundenen Informationen dar, wobei die Gewichte die jeweiligen Wahrscheinlichkeiten der Ereignisse darstellen. Bei Entscheidungsbäumen kann das Konzept der Entropie angewendet werden, um die Unreinheit eines untergeordneten Knotens zu messen. Wenn ein Knoten eine ausgewogene Verteilung der Klassenbezeichnungen aufweist, weist er eine höhere Entropie auf, was auf eine größere Verunreinigung hinweist. Wenn umgekehrt ein Knoten eine schiefe Verteilung aufweist, bei der eine Klasse dominiert, weist er eine geringere Entropie auf, was auf eine geringere Verunreinigung hinweist. Diese Vorstellung stimmt intuitiv überein, da ein Knoten mit höherer Verunreinigung weniger Informationen für Klassifizierungszwecke liefert.

Entropie bietet eine Möglichkeit, die Unreinheit oder Unordnung in untergeordneten Knoten von Entscheidungsbäumen zu messen. Es ermöglicht die Bewertung der Reinheit eines Knotens basierend auf der Verteilung von Klassenbezeichnungen. Ein Knoten mit höherer Entropie deutet auf eine vielfältigere Verteilung hin, während ein Knoten mit niedrigerer Entropie auf eine homogenere Verteilung hinweist. Durch die Berücksichtigung der Entropie untergeordneter Knoten können beim Aufbau von Entscheidungsbäumen fundiertere Entscheidungen getroffen werden.

6.4 Splitting criteria (L06: Decision Trees)
6.4 Splitting criteria (L06: Decision Trees)
  • 2020.10.07
  • www.youtube.com
machine learning, scikit-learn
 

6.5 Gini & Entropie versus Fehlklassifizierungsfehler (L06: Entscheidungsbäume)


6.5 Gini & Entropie versus Fehlklassifizierungsfehler (L06: Entscheidungsbäume)

Im vorherigen Video haben wir die verschiedenen Aufteilungskriterien besprochen, die zum Aufbau eines Entscheidungsbaums verwendet werden können. Lassen Sie uns nun untersuchen, warum zwei der Aufteilungskriterien, nämlich Gini-Verunreinigung und Entropie, dem dritten Kriterium, dem Fehlklassifizierungsfehler, vorgezogen werden.

Um es noch einmal zusammenzufassen: Wir haben drei Verunreinigungsmaße: Entropie, skalierte Entropie (skaliert um 0,5 zum Vergleich mit der Gini-Verunreinigung) und Fehlklassifizierungsfehler. Die Form dieser Verunreinigungsmaße ist unterschiedlich. Die Entropie erscheint als konkave Funktion, während der Fehlklassifizierungsfehler einen scharfen Peak bei 0,5 mit linearen Steigungen aufweist.

Es stellt sich die Frage: Warum verwenden wir Entropie und Gini-Verunreinigung anstelle von Fehlklassifizierungsfehlern für die Entwicklung von Entscheidungsbäumen? Diese Frage gilt nicht nur für die Entropie, sondern auch für die Gini-Verunreinigung. In diesem Video konzentrieren wir uns auf die Entropie, aber das Konzept gilt auch für die Gini-Verunreinigung.

Betrachten wir die Gleichung des Informationsgewinns. Wir haben eine Verunreinigungsfunktion für den übergeordneten Knoten, die den Datensatz D am übergeordneten Knoten darstellt. Wenn wir diesen Datensatz basierend auf Merkmalswerten aufteilen, generieren wir verschiedene untergeordnete Knoten. Dieses Konzept gilt sowohl für kategoriale als auch für kontinuierliche Features. Für kontinuierliche Features können wir eine Aufteilung vornehmen, indem wir Abschnitte basierend auf einem Schwellenwert erstellen.

Das Verunreinigungsmaß wird sowohl für den übergeordneten als auch für den untergeordneten Knoten verwendet und wir summieren sie unter Berücksichtigung der Größe des ursprünglichen Datensatzes am übergeordneten Knoten und am aktuellen untergeordneten Knoten. Wenn wir ein Verunreinigungsmaß für den übergeordneten Knoten auswählen, halten wir es im Allgemeinen auch für die untergeordneten Knoten konsistent.

In der Praxis neigen wir dazu, die Verwendung von Fehlklassifizierungsfehlern zu vermeiden, da diese einen Nachteil haben, den wir in diesem Video besprechen werden. Schauen wir uns noch einmal kurz an, wie Entropie und Fehlklassifizierungsfehler berechnet werden. Die Entropie wird berechnet, indem das Produkt aus dem Anteil der Etiketten für jede Klasse und dem Logarithmus des Anteils summiert wird. Andererseits basiert der Fehlklassifizierungsfehler auf dem 0/1-Verlust, der den Anteil der falsch klassifizierten Etiketten misst.

Wenn wir uns nun auf Entropie und Fehlklassifizierungsfehler konzentrieren, ist ein wesentlicher Unterschied ihre Form. Entropie ist konkav, Fehlklassifizierungsfehler hingegen nicht. Dieser Unterschied beeinflusst, warum bei wachsenden Entscheidungsbäumen die Entropie gegenüber Fehlklassifizierungsfehlern bevorzugt wird.

Um dies zu veranschaulichen, betrachten wir einen einfachen Spielzeugdatensatz. Am übergeordneten Knoten haben wir 40 Beispiele der Klasse eins und 80 Beispiele der Klasse null. Wenn wir den Datensatz basierend auf Merkmalswerten aufteilen, erhalten wir untergeordnete Knoten mit unterschiedlichen Klassenverteilungen. Wir müssen bewerten, ob diese Aufteilung die Reinheit der Knoten im Vergleich zum übergeordneten Knoten verbessert.

Wenn wir die Entropie für den übergeordneten und untergeordneten Knoten berechnen, stellen wir fest, dass die Entropie für untergeordneten Knoten zwei niedriger ist als die des übergeordneten Knotens, was auf eine verbesserte Reinheit hinweist. Allerdings ist der untergeordnete Knoten eins schlechter als der übergeordnete. Im Durchschnitt müssen wir feststellen, ob die Aufteilung vorteilhaft ist.

Um die Qualität der Aufteilung zu messen, verwenden wir den Informationsgewinn, der die Entropiewerte für die übergeordneten und untergeordneten Knoten berücksichtigt. Ist der Informationsgewinn positiv, deutet dies auf eine gute Aufteilung hin. In unserem Beispiel ist der Informationsgewinn positiv, was auf eine günstige Aufteilung basierend auf der Entropie hinweist.

Lassen Sie uns nun dasselbe Szenario anhand eines Fehlklassifizierungsfehlers untersuchen. Der Fehler für den übergeordneten, untergeordneten Knoten eins und untergeordneten Knoten zwei wird basierend auf dem Anteil falsch klassifizierter Beschriftungen berechnet. Wenn wir diese Fehlerwerte in die Formel für den Informationsgewinn einsetzen, stellen wir fest, dass der Informationsgewinn Null ist. Ein Informationsgewinn von Null bedeutet, dass die Aufteilung nicht vorteilhaft ist. Folglich werden diese Knoten nicht existieren und wir müssten andere Funktionen berücksichtigen.

Zusammenfassend lässt sich sagen, dass der Hauptgrund dafür, dass Entropie gegenüber Fehlklassifizierungsfehlern bei wachsenden Entscheidungsbäumen bevorzugt wird, darin besteht, dass Entropie die Unsicherheit und Unordnung in den Daten effektiver erfasst. Die konkave Form der Entropie ermöglicht eine bessere Unterscheidung zwischen verschiedenen Klassenverteilungen und liefert ein differenzierteres Maß für die Verunreinigung. Andererseits ist der Fehlklassifizierungsfehler ein einfacheres Maß, das nur den Anteil falsch klassifizierter Bezeichnungen berücksichtigt und nicht die Unsicherheit und Verteilung der Klassen erfasst.

Die konkave Form der Entropie ermöglicht es, sowohl kleine als auch große Klassenungleichgewichte zu bestrafen. Es reagiert empfindlich auf Änderungen der Klassenverhältnisse und weist gleichmäßiger verteilten Klassen höhere Gewichtungen zu. Diese Eigenschaft macht die Entropie besonders nützlich, wenn es um Datensätze mit unausgeglichenen Klassenverteilungen geht.

Im Gegensatz dazu hat der Fehlklassifizierungsfehler eine lineare Form mit einem scharfen Peak bei 0,5. Es behandelt alle Fehlklassifizierungen gleich und unterscheidet nicht zwischen unterschiedlichen Fehlklassifizierungsgraden. Dies macht Fehlklassifizierungsfehler anfälliger für Klassenungleichgewichte und weniger effektiv in Szenarien mit unausgeglichenen Datensätzen.

Darüber hinaus wirkt sich der Formenunterschied zwischen Entropie und Fehlklassifizierungsfehler auf den Lernprozess des Entscheidungsbaums aus. Entscheidungsbäume zielen darauf ab, Aufteilungen zu finden, die den Informationsgewinn maximieren oder die Unreinheit verringern. Da die Entropie ein feinkörnigeres Maß für die Verunreinigung liefert, können Entscheidungsbäume fundiertere und genauere Aufteilungen vornehmen.

Durch die Verwendung der Entropie als Verunreinigungsmaß können Entscheidungsbäume komplexe Beziehungen zwischen Merkmalen und Klassen erfassen. Sie können sowohl kontinuierliche als auch kategoriale Merkmale verarbeiten und komplexe Muster in den Daten entdecken.

Zusammenfassend lässt sich sagen, dass Entropie gegenüber Fehlklassifizierungsfehlern für wachsende Entscheidungsbäume bevorzugt wird, da sie die Unsicherheit und Unordnung in den Daten effektiver erfasst. Seine konkave Form ermöglicht eine bessere Unterscheidung zwischen verschiedenen Klassenverteilungen und ist robuster gegenüber unausgeglichenen Datensätzen. Durch die Verwendung von Entropie können Entscheidungsbäume fundiertere Aufteilungen vornehmen und komplexe Beziehungen zwischen Features und Klassen erfassen.

6.5 Gini & Entropy versus misclassification error (L06: Decision Trees)
6.5 Gini & Entropy versus misclassification error (L06: Decision Trees)
  • 2020.10.15
  • www.youtube.com
This video explains why we use entropy (or Gini) instead of the misclassification error as impurity metric in the information gain equation of CART decision ...
 

6.6 Verbesserungen und Umgang mit Überanpassung (L06: Entscheidungsbäume)



6.6 Verbesserungen und Umgang mit Überanpassung (L06: Entscheidungsbäume)

Im vorherigen Video haben wir die verschiedenen Aufteilungskriterien besprochen, die zum Aufbau eines Entscheidungsbaums verwendet werden können. Nun werden wir untersuchen, warum zwei der Aufteilungskriterien, nämlich Gini-Verunreinigung und Entropie, dem dritten Kriterium, dem Fehlklassifizierungsfehler, vorgezogen werden.

Um unser Gedächtnis aufzufrischen, erinnern wir uns an die drei Aufteilungskriterien: Entropie, skalierte Entropie (zum Vergleich mit der Gini-Verunreinigung) und Fehlklassifizierungsfehler. Die Form dieser Verunreinigungsmaße kann wie folgt dargestellt werden: Die Entropie ist eine konkave Funktion, dargestellt durch eine hohe schwarze Linie; die skalierte Entropie ist ebenfalls konkav und wird durch Multiplikation der Entropie mit 0,5 erhalten; und der Fehlklassifizierungsfehler weist einen scharfen Peak bei 0,5 und lineare Steigungen auf.

Nun stellt sich die Frage: Warum bevorzugen wir beim Züchten von Entscheidungsbäumen die Verwendung von Entropie und Gini-Verunreinigung anstelle des Fehlklassifizierungsfehlers? Diese Frage gilt sowohl für die Entropie als auch für die Gini-Verunreinigung, aber der Einfachheit halber konzentrieren wir uns in dieser Diskussion auf die Entropie.

Fassen wir noch einmal die Gleichung des Informationsgewinns zusammen. Wir beginnen mit einem übergeordneten Knoten, der als D bezeichnet wird, und teilen diesen Datensatz basierend auf Merkmalswerten auf, wodurch verschiedene untergeordnete Knoten erstellt werden. Die Verunreinigungsfunktion wird sowohl für die übergeordneten als auch für die untergeordneten Knoten verwendet, und wir summieren die Verunreinigungswerte unter Berücksichtigung der Größe der Datensätze. Wenn wir Entropie für den übergeordneten Knoten wählen, verwenden wir auch Entropie für die untergeordneten Knoten. Das gleiche Prinzip gilt für Gini-Unreinheiten.

In der Praxis möchten wir den Fehlklassifizierungsfehler lieber nicht verwenden, da er einen Nachteil hat, den wir in diesem Video untersuchen werden. Um dies besser zu verstehen, werfen wir einen kurzen Blick auf die Formeln für Entropie, Gini-Verunreinigung und Fehlklassifizierungsfehler.

Die Entropie wird berechnet, indem die Proportionen der Klassenbezeichnungen eingesetzt und aufsummiert werden. Es verwendet Logarithmen und wird durch die Formel dargestellt, bei der wir über die Klassen summieren und den Anteil jeder Klasse mit dem Logarithmus dieses Anteils multiplizieren.

Die Gini-Verunreinigung hingegen quadriert den Anteil der Klassenbezeichnung und subtrahiert ihn von eins. Es vermeidet die Verwendung von Logarithmen und wird als 1 minus der Summe der quadrierten Klassenbezeichnungsproportionen angegeben.

Der Fehlklassifizierungsfehler basiert auf dem 0-1-Verlust, der den Anteil falsch klassifizierter Etiketten misst. Wenn wir beispielsweise einen Knoten mit der Bezeichnung 001111 haben, würde die Mehrheitsentscheidung 0 vorhersagen, da es sich um die Mehrheitsklasse handelt. Betrachtet man jedoch die Verteilung, lägen wir nur in vier von sechs Fällen richtig, was einer Genauigkeit von 4/6 oder 66,6 % entspricht. Der Fehler würde 2/6 oder 33,3 % betragen.

Um Entropie und Fehlklassifizierungsfehler zu vergleichen, beobachten wir, dass die Entropie konkav ist, während der Fehlklassifizierungsfehler einen scharfen Peak bei 0,5 und lineare Steigungen aufweist. Dieser Unterschied ist entscheidend für das Verständnis, warum bei der Entwicklung von Entscheidungsbäumen Entropie gegenüber Fehlklassifizierungsfehlern bevorzugt wird.

Um dies zu veranschaulichen, betrachten wir einen einfachen Spielzeugdatensatz mit einem übergeordneten Knoten, der 40 Beispiele aus Klasse eins und 80 Beispiele aus Klasse null enthält. Unter der Annahme, dass das am besten zu teilende Merkmal x1 ist, teilen wir den Datensatz basierend darauf, ob die Merkmalswerte eins oder null sind. Wir erhalten zwei untergeordnete Knoten: untergeordneter Knoten eins und untergeordneter Knoten zwei. Bei der Analyse der Klassenverteilung stellen wir fest, dass der untergeordnete Knoten zwei reiner ist als der übergeordnete, während der untergeordnete Knoten eins schlechter ist.

Die entscheidende Frage ist, ob es sich lohnt, diese Funktion zu teilen oder nicht. Um dies festzustellen, berechnen wir den Informationsgewinn mithilfe der Entropie. Wir berechnen die Entropiewerte für den übergeordneten Knoten, den untergeordneten Knoten eins und den untergeordneten Knoten zwei. Beim Vergleich dieser Werte stellen wir fest, dass der untergeordnete Knoten zwei besser ist, während der untergeordnete Knoten eins schlechter ist als der übergeordnete. Durch Anwendung der Informationsgewinnformel stellen wir fest, dass der Informationsgewinn für diese Aufteilung positiv ist, was darauf hindeutet, dass die Aufteilung die Gesamtreinheit des Datensatzes verbessert.

Betrachten wir nun den Fehlklassifizierungsfehler als Maß für die Verunreinigung anstelle der Entropie. Wir berechnen den Fehlklassifizierungsfehler für den übergeordneten Knoten, den untergeordneten Knoten eins und den untergeordneten Knoten zwei. Beim Vergleich dieser Werte stellen wir fest, dass der untergeordnete Knoten zwei einen geringeren Fehlklassifizierungsfehler aufweist als der übergeordnete, während der untergeordnete Knoten eins einen höheren Fehlklassifizierungsfehler aufweist.

Wenn wir jedoch den Informationsgewinn mithilfe des Fehlklassifizierungsfehlers berechnen, stoßen wir auf ein Problem. Die Informationsgewinnformel beinhaltet das Subtrahieren der gewichteten Fehlklassifizierungsfehler der untergeordneten Knoten vom Fehlklassifizierungsfehler des übergeordneten Knotens. Da der Fehlklassifizierungsfehler eine lineare Funktion ist, kann der Informationsgewinn negativ sein, wenn der Fehlklassifizierungsfehler der untergeordneten Knoten höher ist als der des übergeordneten Knotens.

Obwohl in unserem Beispiel der untergeordnete Knoten zwei einen geringeren Fehlklassifizierungsfehler als der übergeordnete Knoten aufweist, ist der Fehlklassifizierungsfehler des untergeordneten Knotens eins höher, was zu einem negativen Informationsgewinn führt. Dies bedeutet, dass die Verwendung des Fehlklassifizierungsfehlers als Verunreinigungsmaß die Aufteilung verhindern würde, obwohl dadurch die Reinheit eines der untergeordneten Knoten verbessert wird.

Wenn wir andererseits Entropie oder Gini-Verunreinigung als Verunreinigungsmaße verwenden, ist der Informationsgewinn immer nicht negativ. Sowohl die Entropie als auch die Gini-Verunreinigung sind konkave Funktionen, was bedeutet, dass die Verunreinigungswerte der untergeordneten Knoten immer kleiner oder gleich dem Verunreinigungswert des übergeordneten Knotens sind. Dadurch wird sichergestellt, dass der Informationsgewinn immer dann positiv ist, wenn die Aufteilung die Reinheit mindestens eines untergeordneten Knotens verbessert.

Durch die Verwendung von Entropie oder Gini-Verunreinigung als Verunreinigungsmaß können Entscheidungsbäume Aufteilungen basierend auf dem Informationsgewinn vornehmen, was einen prinzipiellen Ansatz für das Wachstum des Baums und die Verbesserung seiner Vorhersagekraft bietet. Der Fehlklassifizierungsfehler kann andererseits zu suboptimalen Aufteilungen und weniger genauen Entscheidungsbäumen führen.

Zusammenfassend lässt sich sagen, dass die Bevorzugung von Entropie und Gini-Verunreinigung gegenüber Fehlklassifizierungsfehlern in Entscheidungsbaumalgorithmen auf ihren mathematischen Eigenschaften beruht. Die konkave Natur der Entropie und der Gini-Verunreinigung stellt sicher, dass der Informationsgewinn für Teilungen, die die Reinheit der untergeordneten Knoten verbessern, positiv ist, während die lineare Natur des Fehlklassifizierungsfehlers zu negativen Informationsgewinnen und suboptimalen Teilungen führen kann.

6.6 Improvements & dealing with overfitting (L06: Decision Trees)
6.6 Improvements & dealing with overfitting (L06: Decision Trees)
  • 2020.10.15
  • www.youtube.com
This video covers some issues with decision trees (like overfitting) and discusses some improvements such as the gain ratio, pre-pruning, and post-pruning.--...
 

6.7 Codebeispiel zur Implementierung von Entscheidungsbäumen in Scikit-Learn (L06: Entscheidungsbäume)



6.7 Codebeispiel zur Implementierung von Entscheidungsbäumen in Scikit-Learn (L06: Entscheidungsbäume)

Zum Abschluss der sechsten Lektion untersuchen wir nun ein Codebeispiel mit scikit-learn, wobei wir uns insbesondere auf den Entscheidungsbaumalgorithmus konzentrieren. Scikit-learn wird aufgrund seiner Geschwindigkeit, Effizienz und Robustheit für reale maschinelle Lernprojekte empfohlen. Während wir für diese Demonstration scikit-learn verwenden, ist es erwähnenswert, dass Sie für die Hausaufgabe einen Entscheidungsbaum von Grund auf implementieren werden, um Ihr Verständnis des Algorithmus zu verbessern.

Zunächst importieren wir die erforderlichen Pakete, einschließlich des Wasserzeichenpakets, das uns hilft, die Versionen der verwendeten Software zu verfolgen. Dies kann hilfreich sein, falls beim Ausführen des Codes aufgrund veralteter Softwareversionen Probleme auftreten. Als nächstes laden wir den Iris-Datensatz, einen beliebten Datensatz, der häufig für Klassifizierungsaufgaben verwendet wird. Durch die Verwendung eines bekannten Datensatzes wie Iris können wir uns mehr auf das Verständnis des Codes und seiner Funktionalität konzentrieren, anstatt die Daten zu erklären.

Wir teilen den Datensatz in Trainings- und Testsätze auf, wobei 30 % der Daten für Tests vorgesehen sind. Bitte beachten Sie, dass wir an diesem Notebook keine Optimierungen vornehmen. Obwohl es möglich ist, die Hyperparameter des Entscheidungsbaums mithilfe von Techniken wie der Rastersuche zu optimieren, werden wir es einfach halten und die Optimierung vorerst überspringen. Daher benötigen wir keinen separaten Validierungssatz, da wir den Entscheidungsbaum ausschließlich anhand des Trainingssatzes trainieren und seine Leistung anhand des Testsatzes bewerten.

Als Nächstes zeichnen wir die Entscheidungsbereiche auf, initialisieren den Entscheidungsbaumklassifikator und legen die Hyperparameter fest. In diesem Fall wählen wir das Entropiekriterium für den Informationsgewinn und legen die maximale Tiefe für Bildungszwecke auf zwei fest. Zusätzlich passen wir den Entscheidungsbaum an die Trainingsdaten an und zeichnen die Entscheidungsbereiche auf. Durch die Visualisierung der Entscheidungsbereiche können wir beobachten, wie der Entscheidungsbaum die Daten basierend auf den ausgewählten Merkmalen trennt.

Wir untersuchen verschiedene Optionen und Hyperparameter, die für den Entscheidungsbaumklassifikator festgelegt werden können. Dazu gehören der Splitter, der bestimmt, wie die Aufteilungen an jedem Knoten vorgenommen werden, und Parameter im Zusammenhang mit den Mindeststichproben, die für die Aufteilung von Knoten und Blattknoten erforderlich sind. Es gibt auch Optionen zur Auswahl des Verunreinigungsmaßes und zur Steuerung der Zufälligkeit von Aufteilungen. Diese Hyperparameter können basierend auf dem spezifischen Problem und Datensatz angepasst und optimiert werden.

Als Nächstes visualisieren wir den Entscheidungsbaum mithilfe der graphviz-Bibliothek. Wir exportieren den Entscheidungsbaum als Dot-Datei, die die Baumstruktur als Diagramm darstellt. Wir können das Erscheinungsbild der Knoten, Kanten und Beschriftungen im Diagramm anpassen. Durch die Verwendung der graphviz-Bibliothek in Verbindung mit der pydotplus-Bibliothek können wir den Entscheidungsbaum direkt zeichnen, ohne die Dot-Datei separat zu speichern. Auf diese Weise können wir den Entscheidungsbaum im Notebook selbst visualisieren.

Um das Entscheidungsbaumdiagramm anzuzeigen, laden wir die generierte PNG-Datei mit dem ipython-Anzeigemodul. Wir importieren die Bildklasse von ipython display und laden damit die PNG-Datei. Dadurch können wir das Entscheidungsbaumdiagramm direkt im Jupyter-Notebook anzeigen. Das Entscheidungsbaumdiagramm zeigt die Aufteilungen und Entscheidungsgrenzen als vertikale bzw. horizontale Linien basierend auf den ausgewählten Features an.

Zusammenfassend zeigt dieses Codebeispiel, wie man mit scikit-learn einen Entscheidungsbaumklassifikator implementiert und visualisiert. Der Entscheidungsbaumalgorithmus stellt ein interpretierbares Modell für Klassifizierungsaufgaben bereit und kann mithilfe verschiedener Hyperparameter optimiert werden, um die Leistung zu verbessern. Die Visualisierung des Entscheidungsbaums hilft beim Verständnis, wie der Algorithmus Entscheidungen auf der Grundlage der Eingabemerkmale trifft.

6.7 Code Example Implementing Decision Trees in Scikit-Learn (L06: Decision Trees)
6.7 Code Example Implementing Decision Trees in Scikit-Learn (L06: Decision Trees)
  • 2020.10.15
  • www.youtube.com
This last video of lecture 6 shows a quick demo of how to train and visualize a decision tree with scikit-learn.-------This video is part of my Introduction ...
 

7.1 Einführung in Ensemble-Methoden (L07: Ensemble-Methoden)


7.1 Einführung in Ensemble-Methoden (L07: Ensemble-Methoden)

In der Vorlesung dieser Woche werden wir uns mit Ensemble-Methoden befassen, die ein entscheidender Bereich des maschinellen Lernens sind. Diese Methoden werden in der angewandten maschinellen Lernforschung häufig eingesetzt, um in realen Anwendungen eine hohe Leistung zu erzielen. Solide Methoden, deren Wirksamkeit in der Praxis bekannt ist, führen oft zu den besten Ergebnissen.

Der Vortrag wird sich auch mit Entscheidungsbäumen befassen und einige auf der Piazza aufgeworfene Fragen zu ihrer Relevanz beantworten. Obwohl es sich um einen relativ alten und bekannten Algorithmus handelt, sind Entscheidungsbäume auch heute noch äußerst relevant. Sie sind nicht nur interpretierbar, sondern werden auch häufig in Ensemblemethoden eingesetzt, wo sie eine außergewöhnliche Leistung erbringen. Die Vorlesung möchte auch diesem Aspekt nachgehen.

Bevor wir uns mit Ensemble-Methoden befassen, ist es wichtig, noch einmal zusammenzufassen, wo wir im Semester stehen. Wir schließen derzeit Teil drei ab, der sich auf baumbasierte Methoden konzentriert. Es ist jedoch erwähnenswert, dass einige dieser Methoden über Entscheidungsbäume hinausgehen und andere Techniken umfassen, einschließlich solider Methoden, die auf tiefe neuronale Netze angewendet werden. Entscheidungsbäume wurden aufgrund ihrer engen Verbindung mit den meisten Ensemble-Methoden in Teil drei kategorisiert.

Nach Abschluss dieses Abschnitts werden wir uns eingehend mit der Modellbewertung befassen, bevor wir uns mit unüberwachtem Lernen und, wenn es die Zeit erlaubt, mit Bayesianischem Lernen befassen. Obwohl ursprünglich geplant war, die Zwischenprüfung früher abzulegen und andere Methoden zu erlernen, dauerte der Kursverlauf länger als erwartet. Nichtsdestotrotz war der zusätzliche Zeitaufwand für die Einrichtung der Python-Umgebung und die Einarbeitung aller, insbesondere derjenigen ohne ausgeprägte Python-Kenntnisse, von Vorteil. Dadurch wird sichergestellt, dass alle Teilnehmer auf dem gleichen Stand sind und auf die bevorstehenden Hausaufgaben vorbereitet sind. Dazu gehört die Implementierung eines CART-Entscheidungsbaums (Classification and Regression Trees), ohne auf vorgefertigte Bibliotheken wie scikit-learn angewiesen zu sein.

Die Vorlesung ist in sieben Teile gegliedert. Der erste Teil bietet eine Einführung und einen Überblick über Ensemblemethoden. Anschließend werden wir verschiedene interne Methoden untersuchen, beginnend mit der Mehrheitsentscheidung, der einfachsten Art der Ensemble-Methode. Anschließend beschäftigen wir uns mit dem Bagging, einer Technik, bei der Bootstrap-Sampling aus dem Trainingssatz durchgeführt wird. Der Nutzen dieser Methode wird erläutert. Auch Boosting, bei dem es darum geht, schwache Lernende (z. B. kurze Entscheidungsbäume) in starke Modelle zu verwandeln, wird behandelt. Insbesondere werden wir Gradient Boosting besprechen, einen der beliebtesten Algorithmen heute, der für seinen Erfolg bei Kaggle-Wettbewerben bekannt ist. Random Forests, eine weitere weithin anerkannte Ensemble-Methode, werden vorgestellt. Diese Modelle sind für ihre Benutzerfreundlichkeit bekannt, da sie oft ohne umfangreiche Hyperparameter-Abstimmung eine hervorragende Leistung erzielen. Sie werden Personen empfohlen, die Vorhersagemodelle in verschiedenen wissenschaftlichen Bereichen suchen, insbesondere wenn ihnen Kenntnisse im maschinellen Lernen fehlen.

Erwähnt werden auch Support Vector Machines (SVM), insbesondere deren Beliebtheit in der Vergangenheit aufgrund ihrer Leistung, insbesondere bei RBF-Kerneln (Radial Basis Function). Random Forests liefern jedoch häufig gleich gute oder bessere Ergebnisse, ohne dass umfangreiche Optimierungen erforderlich sind, sodass sie für praktische Anwendungen vorzuziehen sind. Abschließend wird auf das Stapeln eingegangen, eine weitere beliebte Technik in Anwendungen.

Um die Bedeutung von Ensemble-Methoden zu veranschaulichen, wird eine Abbildung vorgestellt, die ein Beispiel mit zufälligen Wäldern zeigt. Dieses Modell ist nicht auf Klassifizierungsaufgaben beschränkt und kann die Merkmalsbedeutung einfach berechnen. Beispielsweise wurden im genannten Beispiel Schwefelatome als wichtigste Merkmale zur Vorhersage der Aktivität von Molekülen identifiziert. Solche Erkenntnisse können in der Praxis wertvoll sein.

Darüber hinaus gehören Ensemble-Methoden, einschließlich Random Forests und Gradient Boosting, zu den am häufigsten verwendeten Modellen für maschinelles Lernen ohne Deep Learning. Obwohl Deep Learning immer mehr an Bedeutung gewinnt, sind Ensembles aufgrund ihrer herausragenden Leistung und einfachen Implementierung immer noch von hoher Relevanz. Der Artikel erwähnte den Aufstieg des Extreme Gradient Boosting (XGBoost) als „neue Königin“ unter den Algorithmen für maschinelles Lernen. Dies unterstreicht die Bedeutung baumbasierter Modelle, insbesondere der Gradientenverstärkung, in verschiedenen Anwendungen.

Zusammenfassend wird die Vorlesung dieser Woche ein umfassendes Verständnis der Ensemble-Methoden vermitteln. Es werden verschiedene Arten von Ensembletechniken und ihre Anwendungen behandelt.

7.1 Intro to ensemble methods (L07: Ensemble Methods)
7.1 Intro to ensemble methods (L07: Ensemble Methods)
  • 2020.10.19
  • www.youtube.com
In lecture 7, we are discussing ensemble methods, including majority voting, bagging, random forests, stacking, and gradient boosting -- those are some of th...
 

7.2 Mehrheitsentscheidung (L07: Ensemble-Methoden)


7.2 Mehrheitsentscheidung (L07: Ensemble-Methoden)

In diesem Video werden wir einen der grundlegenden Fälle von Modellensembles untersuchen, der als Mehrheitswahl bekannt ist. Anhand eines Spielzeugbeispiels werden wir die Vorteile der Mehrheitsentscheidung im Vergleich zur isolierten Verwendung eines einzelnen Klassifikators untersuchen.

Betrachten wir zunächst ein Szenario, in dem wir ein binäres Klassifizierungsproblem haben. Wir haben einen Datensatz, der aus mehreren Beobachtungen besteht, die jeweils mit einer Reihe von Merkmalen und einer entsprechenden Klassenbezeichnung verknüpft sind. Unser Ziel ist es, einen Klassifikator zu entwickeln, der die Klassenbezeichnungen für neue, unsichtbare Instanzen genau vorhersagen kann.

Um das Konzept der Mehrheitsentscheidung zu demonstrieren, trainieren wir zunächst drei einzelne Klassifikatoren anhand unseres Datensatzes. Jeder Klassifikator verwendet einen anderen Algorithmus oder ein anderes Modell, um Vorhersagen zu treffen. Nehmen wir der Einfachheit halber an, dass es sich bei diesen Klassifikatoren um Entscheidungsbäume handelt.

Sobald wir unsere drei Entscheidungsbaumklassifikatoren trainiert haben, können wir nun Vorhersagen für neue Instanzen treffen. Anstatt uns jedoch auf die Vorhersage eines einzelnen Klassifikators zu verlassen, wenden wir das Mehrheitsentscheidungsprinzip an. Bei der Mehrheitsabstimmung gibt jeder Klassifikator im Ensemble eine Stimme für seine vorhergesagte Klassenbezeichnung ab. Das Klassenlabel, das die meisten Stimmen erhält, gilt als endgültige Vorhersage des Ensembles.

Sehen wir uns nun an, warum Mehrheitsentscheidungen effektiver sein können als die alleinige Verwendung eines einzelnen Klassifikators. Stellen Sie sich ein Szenario vor, in dem jeder einzelne Entscheidungsbaumklassifikator aufgrund des inhärenten Rauschens oder der Variabilität im Datensatz einen gewissen Fehler aufweist. Diese Fehler können zu falschen Vorhersagen führen und die Gesamtgenauigkeit eines einzelnen Klassifikators verringern.

Durch die Kombination der Vorhersagen mehrerer Klassifikatoren durch Mehrheitsentscheidung können wir jedoch möglicherweise die Auswirkungen einzelner Fehler abmildern. Selbst wenn ein oder zwei Entscheidungsbaumklassifizierer falsche Vorhersagen treffen, kann der Mehrheitsentscheidungsprozess diese Fehler kompensieren. Die Klassenbezeichnung, die die meisten Stimmen erhält, ist mit größerer Wahrscheinlichkeit korrekt, was zu einer höheren Genauigkeit im Vergleich zur Verwendung eines einzelnen Klassifikators führt.

Um dies zu veranschaulichen, stellen wir uns eine Situation vor, in der zwei Entscheidungsbaumklassifikatoren die richtige Klassenbezeichnung vorhersagen, während ein Klassifikator eine fehlerhafte Vorhersage trifft. In diesem Fall erhält die richtige Klassenbezeichnung zwei Stimmen, während die fehlerhafte Vorhersage nur eine Stimme erhält. Infolgedessen identifiziert der Mehrheitsabstimmungsprozess des Ensembles die Klassenbezeichnung mit den meisten Stimmen korrekt als endgültige Vorhersage und überschreibt die falsche Vorhersage des einzelnen Klassifikators.

Dieses Beispiel zeigt die Leistungsfähigkeit von Ensemble-Methoden, insbesondere der Mehrheitsentscheidung, bei der Verbesserung der Vorhersagegenauigkeit. Durch die Kombination der Vorhersagen mehrerer Klassifikatoren können wir die Stärken jedes Klassifikators nutzen und die Auswirkungen seiner individuellen Schwächen oder Fehler minimieren.

Abschließend beleuchtet dieses Video die Bedeutung der Mehrheitsentscheidung als Grundform von Modellensembles. Anhand eines Spielzeugbeispiels haben wir gesehen, wie Mehrheitsentscheidungen die alleinige Verwendung eines einzelnen Klassifikators übertreffen können, insbesondere wenn einzelne Klassifikatoren Fehler oder Variabilität aufweisen. Ensemble-Methoden wie Mehrheitsentscheidungen bieten einen leistungsstarken Ansatz zur Verbesserung der Vorhersagegenauigkeit und werden häufig in praktischen Anwendungen des maschinellen Lernens eingesetzt.

7.2 Majority Voting (L07: Ensemble Methods)
7.2 Majority Voting (L07: Ensemble Methods)
  • 2020.10.20
  • www.youtube.com
This video discusses one of the most basic case of model ensembles, majority voting. Using a toy example (making certain assumptions), we see why majority vo...