logo

Entscheidungsbaum-Klassifizierungsalgorithmus

  • Entscheidungsbaum ist ein Beaufsichtigte Lerntechnik Das kann sowohl für Klassifizierungs- als auch für Regressionsprobleme verwendet werden, wird jedoch meist zur Lösung von Klassifizierungsproblemen bevorzugt. Es handelt sich um einen baumstrukturierten Klassifikator Interne Knoten stellen die Merkmale eines Datensatzes dar, Zweige stellen die Entscheidungsregeln dar Und Jeder Blattknoten repräsentiert das Ergebnis.
  • In einem Entscheidungsbaum gibt es zwei Knoten: Entscheidungsknoten Und Blattknoten. Entscheidungsknoten werden zur Entscheidungsfindung verwendet und verfügen über mehrere Zweige, während Blattknoten die Ausgabe dieser Entscheidungen sind und keine weiteren Zweige enthalten.
  • Die Entscheidungen oder der Test werden auf der Grundlage von Merkmalen des gegebenen Datensatzes durchgeführt.
  • Es handelt sich um eine grafische Darstellung, um alle möglichen Lösungen für ein Problem/eine Entscheidung auf der Grundlage gegebener Bedingungen zu erhalten.
  • Er wird Entscheidungsbaum genannt, weil er, ähnlich wie ein Baum, mit dem Wurzelknoten beginnt, der sich über weitere Zweige ausdehnt und eine baumartige Struktur aufbaut.
  • Um einen Baum zu bauen, verwenden wir das CART-Algorithmus, welches dafür steht Klassifizierungs- und Regressionsbaum-Algorithmus.
  • Ein Entscheidungsbaum stellt einfach eine Frage und teilt den Baum basierend auf der Antwort (Ja/Nein) weiter in Unterbäume auf.
  • Das folgende Diagramm erläutert die allgemeine Struktur eines Entscheidungsbaums:

Hinweis: Ein Entscheidungsbaum kann sowohl kategoriale Daten (JA/NEIN) als auch numerische Daten enthalten.

Entscheidungsbaum-Klassifizierungsalgorithmus

Warum Entscheidungsbäume verwenden?

Beim maschinellen Lernen gibt es verschiedene Algorithmen. Daher ist die Auswahl des besten Algorithmus für den gegebenen Datensatz und das gegebene Problem der wichtigste Punkt, den Sie bei der Erstellung eines Modells für maschinelles Lernen beachten sollten. Nachfolgend sind die beiden Gründe für die Verwendung des Entscheidungsbaums aufgeführt:

  • Entscheidungsbäume ahmen normalerweise die menschliche Denkfähigkeit beim Treffen einer Entscheidung nach und sind daher leicht zu verstehen.
  • Die Logik hinter dem Entscheidungsbaum ist leicht zu verstehen, da er eine baumartige Struktur aufweist.

Entscheidungsbaum-Terminologien

Wurzelknoten:Der Wurzelknoten ist der Ausgangspunkt des Entscheidungsbaums. Es stellt den gesamten Datensatz dar, der weiter in zwei oder mehr homogene Sätze unterteilt wird.Blattknoten:Blattknoten sind die endgültigen Ausgabeknoten, und der Baum kann nach Erhalt eines Blattknotens nicht weiter getrennt werden.Aufteilung:Beim Teilen handelt es sich um den Prozess der Aufteilung des Entscheidungsknotens/Wurzelknotens in Unterknoten entsprechend den gegebenen Bedingungen.Zweig/Unterbaum:Ein Baum, der durch Spaltung des Baumes entsteht.Beschneidung:Beim Beschneiden werden unerwünschte Äste vom Baum entfernt.Übergeordneter/untergeordneter Knoten:Der Wurzelknoten des Baums wird als übergeordneter Knoten bezeichnet, die anderen Knoten als untergeordnete Knoten.

Wie funktioniert der Entscheidungsbaum-Algorithmus?

In einem Entscheidungsbaum beginnt der Algorithmus zur Vorhersage der Klasse des gegebenen Datensatzes am Wurzelknoten des Baums. Dieser Algorithmus vergleicht die Werte des Stammattributs mit dem Datensatzattribut (realer Datensatz) und folgt auf der Grundlage des Vergleichs der Verzweigung und springt zum nächsten Knoten.

Für den nächsten Knoten vergleicht der Algorithmus erneut den Attributwert mit den anderen Unterknoten und bewegt sich weiter. Der Vorgang wird fortgesetzt, bis der Blattknoten des Baums erreicht wird. Der gesamte Prozess kann mithilfe des folgenden Algorithmus besser verstanden werden:

    Schritt 1:Beginnen Sie den Baum mit dem Wurzelknoten, sagt S, der den vollständigen Datensatz enthält.Schritt 2:Finden Sie das beste Attribut im Datensatz mit Attributauswahlmaß (ASM). Schritt 3:Teilen Sie das S in Teilmengen auf, die mögliche Werte für die besten Attribute enthalten.Schritt 4:Generieren Sie den Entscheidungsbaumknoten, der das beste Attribut enthält.Schritt 5:Erstellen Sie rekursiv neue Entscheidungsbäume unter Verwendung der Teilmengen des in Schritt -3 erstellten Datensatzes. Setzen Sie diesen Vorgang fort, bis ein Stadium erreicht ist, in dem Sie die Knoten nicht mehr weiter klassifizieren können und den letzten Knoten als Blattknoten bezeichnen.

Beispiel: Angenommen, es gibt einen Kandidaten, der ein Stellenangebot hat und entscheiden möchte, ob er das Angebot annehmen soll oder nicht. Um dieses Problem zu lösen, beginnt der Entscheidungsbaum mit dem Wurzelknoten (Gehaltsattribut von ASM). Der Wurzelknoten teilt sich anhand der entsprechenden Bezeichnungen weiter in den nächsten Entscheidungsknoten (Entfernung vom Büro) und einen Blattknoten auf. Der nächste Entscheidungsknoten wird weiter in einen Entscheidungsknoten (Cab-Funktion) und einen Blattknoten aufgeteilt. Schließlich teilt sich der Entscheidungsknoten in zwei Blattknoten (Akzeptierte Angebote und Abgelehntes Angebot). Betrachten Sie das folgende Diagramm:

Entscheidungsbaum-Klassifizierungsalgorithmus

Attributauswahlmaßnahmen

Bei der Implementierung eines Entscheidungsbaums stellt sich vor allem die Frage, wie das beste Attribut für den Wurzelknoten und die Unterknoten ausgewählt werden soll. Um solche Probleme zu lösen, gibt es eine Technik namens „ Attributauswahlmaß oder ASM. Durch diese Messung können wir leicht das beste Attribut für die Knoten des Baums auswählen. Es gibt zwei beliebte Techniken für ASM:

    Informationsgewinn Gini-Index

1. Informationsgewinn:

  • Der Informationsgewinn ist die Messung von Entropieänderungen nach der Segmentierung eines Datensatzes basierend auf einem Attribut.
  • Es berechnet, wie viele Informationen uns ein Feature über eine Klasse liefert.
  • Entsprechend dem Wert des Informationsgewinns teilen wir den Knoten auf und erstellen den Entscheidungsbaum.
  • Ein Entscheidungsbaumalgorithmus versucht immer, den Wert des Informationsgewinns zu maximieren, und ein Knoten/Attribut mit dem höchsten Informationsgewinn wird zuerst geteilt. Es kann mit der folgenden Formel berechnet werden:
 Information Gain= Entropy(S)- [(Weighted Avg) *Entropy(each feature) 

Entropie: Entropie ist eine Metrik zur Messung der Verunreinigung in einem bestimmten Attribut. Es spezifiziert die Zufälligkeit von Daten. Die Entropie kann wie folgt berechnet werden:

Entropy(s)= -P(yes)log2 P(yes)- P(no) log2 P(no)

Wo,

Konvertieren Sie einen String in einen Int
    S= Gesamtzahl der Proben P(ja)= Wahrscheinlichkeit von ja P(nein)= Wahrscheinlichkeit von nein

2. Gini-Index:

  • Der Gini-Index ist ein Maß für die Verunreinigung oder Reinheit, das beim Erstellen eines Entscheidungsbaums im CART-Algorithmus (Classification and Regression Tree) verwendet wird.
  • Ein Attribut mit einem niedrigen Gini-Index sollte einem Attribut mit einem hohen Gini-Index vorgezogen werden.
  • Es werden nur binäre Aufteilungen erstellt, und der CART-Algorithmus verwendet den Gini-Index, um binäre Aufteilungen zu erstellen.
  • Der Gini-Index kann mit der folgenden Formel berechnet werden:
 Gini Index= 1- &#x2211;<sub>j</sub>P<sub>j</sub><sup>2</sup> 

Beschneiden: Einen optimalen Entscheidungsbaum erhalten

Beim Beschneiden werden unnötige Knoten aus einem Baum gelöscht, um den optimalen Entscheidungsbaum zu erhalten.

Ein zu großer Baum erhöht das Risiko einer Überanpassung, und ein kleiner Baum erfasst möglicherweise nicht alle wichtigen Merkmale des Datensatzes. Daher wird eine Technik, die die Größe des Lernbaums verringert, ohne die Genauigkeit zu beeinträchtigen, als Pruning bezeichnet. Es gibt hauptsächlich zwei Arten von Bäumen Beschneidung Verwendete Technologie:

    Beschneiden der Kostenkomplexität Reduzierte Fehlerbereinigung.

Vorteile des Entscheidungsbaums

  • Es ist einfach zu verstehen, da es dem gleichen Prozess folgt, dem ein Mensch folgt, wenn er im wirklichen Leben eine Entscheidung trifft.
  • Es kann sehr nützlich sein, um entscheidungsbezogene Probleme zu lösen.
  • Es hilft, über alle möglichen Ergebnisse eines Problems nachzudenken.
  • Im Vergleich zu anderen Algorithmen ist eine geringere Datenbereinigung erforderlich.

Nachteile des Entscheidungsbaums

  • Der Entscheidungsbaum enthält viele Ebenen, was ihn komplex macht.
  • Möglicherweise liegt ein Überanpassungsproblem vor, das mithilfe von behoben werden kann Random Forest-Algorithmus.
  • Bei mehr Klassenbezeichnungen kann die Rechenkomplexität des Entscheidungsbaums zunehmen.

Python-Implementierung des Entscheidungsbaums

Jetzt implementieren wir den Entscheidungsbaum mit Python. Hierzu verwenden wir den Datensatz ' user_data.csv ,‘ die wir in früheren Klassifizierungsmodellen verwendet haben. Durch die Verwendung desselben Datensatzes können wir den Entscheidungsbaumklassifikator mit anderen Klassifizierungsmodellen vergleichen, z KNN SVM, LogisticRegression usw.

Die Schritte bleiben ebenfalls gleich und werden im Folgenden aufgeführt:

    Datenvorverarbeitungsschritt Anpassen eines Entscheidungsbaumalgorithmus an den Trainingssatz Vorhersage des Testergebnisses Testgenauigkeit des Ergebnisses (Erstellung einer Verwirrungsmatrix) Visualisierung des Testsatzergebnisses.

1. Datenvorverarbeitungsschritt:

Nachfolgend finden Sie den Code für den Vorverarbeitungsschritt:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv(&apos;user_data.csv&apos;) #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test) 

Im obigen Code haben wir die Daten vorverarbeitet. Wo wir den Datensatz geladen haben, der wie folgt lautet:

Entscheidungsbaum-Klassifizierungsalgorithmus

2. Anpassen eines Entscheidungsbaumalgorithmus an den Trainingssatz

Jetzt passen wir das Modell an den Trainingssatz an. Dazu importieren wir die DecisionTreeClassifier Klasse von sklearn.tree Bibliothek. Unten ist der Code dafür:

 #Fitting Decision Tree classifier to the training set From sklearn.tree import DecisionTreeClassifier classifier= DecisionTreeClassifier(criterion=&apos;entropy&apos;, random_state=0) classifier.fit(x_train, y_train) 

Im obigen Code haben wir ein Klassifikatorobjekt erstellt, in dem wir zwei Hauptparameter übergeben haben;

Java-Arraylist sortiert
    'kriterium='entropie':Das Kriterium wird verwendet, um die Qualität der Aufteilung zu messen, die anhand des durch die Entropie gegebenen Informationsgewinns berechnet wird.random_state=0':Zur Erzeugung der Zufallszustände.

Nachfolgend finden Sie die Ausgabe hierfür:

 Out[8]: DecisionTreeClassifier(class_weight=None, criterion=&apos;entropy&apos;, max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=0, splitter=&apos;best&apos;) 

3. Vorhersage des Testergebnisses

Jetzt werden wir das Ergebnis des Testsatzes vorhersagen. Wir werden einen neuen Vorhersagevektor erstellen y_pred. Unten ist der Code dafür:

 #Predicting the test set result y_pred= classifier.predict(x_test) 

Ausgabe:

Im folgenden Ausgabebild sind die vorhergesagte Ausgabe und die tatsächliche Testausgabe angegeben. Wir können deutlich erkennen, dass der Vorhersagevektor einige Werte enthält, die sich von den tatsächlichen Vektorwerten unterscheiden. Das sind Vorhersagefehler.

Entscheidungsbaum-Klassifizierungsalgorithmus

4. Prüfgenauigkeit des Ergebnisses (Erstellung einer Verwirrungsmatrix)

In der obigen Ausgabe haben wir gesehen, dass es einige falsche Vorhersagen gab. Wenn wir also die Anzahl der richtigen und falschen Vorhersagen wissen möchten, müssen wir die Verwirrungsmatrix verwenden. Unten ist der Code dafür:

Ups in Java
 #Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred) 

Ausgabe:

Entscheidungsbaum-Klassifizierungsalgorithmus

Im obigen Ausgabebild können wir die Verwirrungsmatrix sehen 6+3= 9 falsche Vorhersagen Und 62+29=91 richtige Vorhersagen. Daher können wir sagen, dass der Entscheidungsbaum-Klassifikator im Vergleich zu anderen Klassifizierungsmodellen eine gute Vorhersage gemacht hat.

5. Visualisierung des Trainingssatzergebnisses:

Hier visualisieren wir das Ergebnis des Trainingssatzes. Um das Ergebnis des Trainingssatzes zu visualisieren, zeichnen wir ein Diagramm für den Entscheidungsbaumklassifikator. Der Klassifikator sagt „Ja“ oder „Nein“ für die Benutzer voraus, die das SUV-Auto entweder gekauft oder nicht gekauft haben, wie wir es in der logistischen Regression getan haben. Unten ist der Code dafür:

 #Visulaizing the trianing set result from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap((&apos;purple&apos;,&apos;green&apos; ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap((&apos;purple&apos;, &apos;green&apos;))(i), label = j) mtp.title(&apos;Decision Tree Algorithm (Training set)&apos;) mtp.xlabel(&apos;Age&apos;) mtp.ylabel(&apos;Estimated Salary&apos;) mtp.legend() mtp.show() 

Ausgabe:

Entscheidungsbaum-Klassifizierungsalgorithmus

Die obige Ausgabe unterscheidet sich völlig von den übrigen Klassifizierungsmodellen. Es gibt sowohl vertikale als auch horizontale Linien, die den Datensatz nach Alter und geschätzter Gehaltsvariable aufteilen.

Wie wir sehen können, versucht der Baum, jeden Datensatz zu erfassen, was bei einer Überanpassung der Fall ist.

6. Visualisierung des Testsatzergebnisses:

Die Visualisierung des Testsatzergebnisses ähnelt der Visualisierung des Trainingssatzes, mit der Ausnahme, dass der Trainingssatz durch den Testsatz ersetzt wird.

 #Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap((&apos;purple&apos;,&apos;green&apos; ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap((&apos;purple&apos;, &apos;green&apos;))(i), label = j) mtp.title(&apos;Decision Tree Algorithm(Test set)&apos;) mtp.xlabel(&apos;Age&apos;) mtp.ylabel(&apos;Estimated Salary&apos;) mtp.legend() mtp.show() 

Ausgabe:

Entscheidungsbaum-Klassifizierungsalgorithmus

Wie wir im obigen Bild sehen können, gibt es einige grüne Datenpunkte im violetten Bereich und umgekehrt. Das sind also die falschen Vorhersagen, die wir in der Verwirrungsmatrix besprochen haben.