Random Forest Classifier: Überblick, Funktionsweise, Vor- und Nachteile

Veröffentlicht: 2021-06-18

Haben Sie sich jemals gefragt, wie Netflix einen Film auswählt, den er Ihnen empfiehlt? Oder wie Amazon die Produkte auswählt, die in Ihrem Feed angezeigt werden sollen?

Sie alle verwenden Empfehlungssysteme, eine Technologie, die den Random-Forest-Klassifikator verwendet.

Der Random Forest Classifier gehört zu den beliebtesten Klassifizierungsalgorithmen. Heute lernen wir diesen robusten Algorithmus für maschinelles Lernen kennen und sehen, wie er funktioniert. Sie werden auch etwas über seine Implementierung erfahren, da wir ein Schritt-für-Schritt-Tutorial zur Verwendung des Random-Forest-Klassifikators in einem realen Problem zeigen.

In den folgenden Punkten behandeln wir die Vor- und Nachteile von Random Forest Sklearn und vieles mehr.

Inhaltsverzeichnis

Random Forest Classifier: Eine Einführung

Der Random Forest Classifier ist ein überwachter Lernalgorithmus, den Sie für Regressions- und Klassifizierungsprobleme verwenden können. Aufgrund seiner hohen Flexibilität und einfachen Implementierung gehört es zu den beliebtesten Algorithmen für maschinelles Lernen.

Warum wird der Random-Forest-Klassifikator Random Forest genannt?

Das liegt daran, dass er aus mehreren Entscheidungsbäumen besteht, genau wie ein Wald viele Bäume hat. Darüber hinaus nutzt es Zufälligkeit, um seine Genauigkeit zu verbessern und Überanpassung zu bekämpfen, was für einen so ausgeklügelten Algorithmus ein großes Problem sein kann. Diese Algorithmen erstellen Entscheidungsbäume basierend auf einer zufälligen Auswahl von Datenstichproben und erhalten Vorhersagen von jedem Baum. Danach wählen sie durch Abstimmungen die beste praktikable Lösung aus.

Es hat zahlreiche Anwendungen in unserem täglichen Leben, wie z. B. Feature-Selektoren, Empfehlungssysteme und Bildklassifizierer. Einige seiner realen Anwendungen umfassen Betrugserkennung, Klassifizierung von Kreditanträgen und Krankheitsvorhersage. Es bildet die Grundlage für den Boruta-Algorithmus, der wichtige Merkmale in einem Datensatz auswählt.

Wie funktioniert es?

Angenommen, Ihr Datensatz hat „m“ Features, wählt der Random Forest nach dem Zufallsprinzip „k“ Features aus, wobei k < m ist. Nun berechnet der Algorithmus den Wurzelknoten unter den k Merkmalen, indem er einen Knoten mit dem höchsten Informationsgewinn auswählt.

Danach teilt der Algorithmus den Knoten in untergeordnete Knoten auf und wiederholt diesen Vorgang „n“ Mal. Jetzt haben Sie einen Wald mit n Bäumen. Abschließend führen Sie Bootstrapping durch, dh kombinieren Sie die Ergebnisse aller in Ihrer Gesamtstruktur vorhandenen Entscheidungsbäume.

Es ist sicherlich einer der ausgefeiltesten Algorithmen, da er auf der Funktionalität von Entscheidungsbäumen aufbaut.

Technisch gesehen ist es ein Ensemble-Algorithmus. Der Algorithmus generiert die einzelnen Entscheidungsbäume durch eine Attributauswahlanzeige. Jeder Baum stützt sich auf eine unabhängige Zufallsstichprobe. Bei einem Klassifizierungsproblem stimmt jeder Baum ab und die beliebteste Klasse ist das Endergebnis. Andererseits berechnen Sie bei einem Regressionsproblem den Durchschnitt aller Baumausgaben, und das wäre Ihr Endergebnis.

Eine Random-Forest-Python-Implementierung ist viel einfacher und robuster als andere nichtlineare Algorithmen, die für Klassifizierungsprobleme verwendet werden.

Das folgende Beispiel hilft Ihnen zu verstehen, wie Sie den Random-Forest-Klassifikator in Ihrem täglichen Leben verwenden:

Beispiel

Angenommen, Sie wollten ein neues Auto kaufen und fragen Ihren besten Freund Supratik nach seinen Empfehlungen. Er würde Sie nach Ihren Vorlieben, Ihrem Budget und Ihren Anforderungen fragen und Ihnen auch seine bisherigen Erfahrungen mit seinem Auto mitteilen, um Ihnen eine Empfehlung zu geben.

Hier verwendet Supratik die Entscheidungsbaummethode, um Ihnen basierend auf Ihrer Antwort Feedback zu geben. Nach seinen Vorschlägen zweifeln Sie an seinen Ratschlägen, also fragen Sie Aditya nach seinen Empfehlungen und er fragt Sie auch nach Ihren Vorlieben und anderen Anforderungen.

Angenommen, Sie wiederholen diesen Prozess und stellen 'n' Freunden diese Frage. Jetzt haben Sie mehrere Autos zur Auswahl. Du sammelst alle Stimmen deiner Freunde und entscheidest dich, das Auto zu kaufen, das die meisten Stimmen hat. Sie haben jetzt die Random-Forest-Methode verwendet, um ein Auto zum Kauf auszuwählen.

Je häufiger Sie diesen Prozess jedoch wiederholen, desto anfälliger sind Sie für eine Überanpassung. Denn Ihr Datensatz in Entscheidungsbäumen wird immer spezifischer. Random Forest bekämpft dieses Problem durch Verwendung von Zufälligkeit.

Vor- und Nachteile von Random Forest Classifier

Jeder Machine-Learning-Algorithmus hat seine Vor- und Nachteile. Im Folgenden sind die Vor- und Nachteile des Random-Forest-Klassifizierungsalgorithmus aufgeführt:

Vorteile

  • Der Random-Forest-Algorithmus ist wesentlich genauer als die meisten nichtlinearen Klassifikatoren.
  • Dieser Algorithmus ist auch sehr robust, da er mehrere Entscheidungsbäume verwendet, um zu seinem Ergebnis zu gelangen.
  • Der Random-Forest-Klassifikator stellt sich nicht dem Overfitting-Problem, da er den Durchschnitt aller Vorhersagen nimmt, die Verzerrungen aufhebt und somit das Overfitting-Problem behebt.
  • Sie können diesen Algorithmus sowohl für Regressions- als auch für Klassifizierungsprobleme verwenden, was ihn zu einem äußerst vielseitigen Algorithmus macht.
  • Zufällige Gesamtstrukturen lassen nicht zu, dass fehlende Werte ein Problem verursachen. Sie können Medianwerte verwenden, um die kontinuierlichen Variablen zu ersetzen, oder den nach Nähe gewichteten Durchschnitt der fehlenden Werte berechnen, um dieses Problem zu lösen.
  • Dieser Algorithmus bietet Ihnen eine relative Merkmalswichtigkeit, die es Ihnen ermöglicht, die am meisten beitragenden Merkmale für Ihren Klassifikator einfach auszuwählen.

Nachteile

  • Dieser Algorithmus ist wesentlich langsamer als andere Klassifizierungsalgorithmen, da er mehrere Entscheidungsbäume verwendet, um Vorhersagen zu treffen. Wenn ein zufälliger Waldklassifikator eine Vorhersage macht, muss jeder Baum im Wald eine Vorhersage für dieselbe Eingabe treffen und über dieselbe abstimmen. Dieser Vorgang kann sehr zeitaufwändig sein.
  • Aufgrund ihres langsamen Tempos können Random-Forest-Klassifikatoren für Echtzeitvorhersagen ungeeignet sein.
  • Das Modell kann im Vergleich zu einem Entscheidungsbaum ziemlich schwierig zu interpretieren sein, da Sie eine Auswahl treffen können, indem Sie dem Pfad des Baums folgen. Dies ist jedoch in einer zufälligen Gesamtstruktur nicht möglich, da sie mehrere Entscheidungsbäume hat.

Unterschied zwischen Random Forest und Entscheidungsbäumen

Ein Entscheidungsbaum ist, wie der Name schon sagt, ein baumartiges Flussdiagramm mit Zweigen und Knoten. Der Algorithmus teilt die Daten basierend auf den Eingabe-Features an jedem Knoten auf und generiert mehrere Zweige als Ausgabe. Es ist ein iterativer Prozess und erhöht die Anzahl der erstellten Zweige (Ausgabe) und die Differenzierung der Daten. Dieser Vorgang wiederholt sich, bis ein Knoten erstellt wird, bei dem fast alle Daten derselben Klasse angehören und weitere Verzweigungen oder Aufteilungen nicht möglich sind.

Andererseits verwendet ein zufälliger Wald mehrere Entscheidungsbäume, daher der Name "Wald". Es sammelt Stimmen aus den verschiedenen Entscheidungsbäumen, die es verwendet hat, um die erforderliche Vorhersage zu treffen.

Daher besteht der Hauptunterschied zwischen einem Random-Forest-Klassifikator und einem Entscheidungsbaum darin, dass der erstere eine Sammlung des letzteren verwendet. Hier sind einige zusätzliche Unterschiede zwischen den beiden:

  • Entscheidungsbäume sind mit dem Problem der Überanpassung konfrontiert, zufällige Wälder jedoch nicht. Das liegt daran, dass Random-Forest-Klassifikatoren zufällige Teilmengen verwenden, um diesem Problem entgegenzuwirken.
  • Entscheidungsbäume sind schneller als Random Forests. Random Forests verwenden mehrere Entscheidungsbäume, was viel Rechenleistung und damit mehr Zeit in Anspruch nimmt.
  • Entscheidungsbäume sind einfacher zu interpretieren als Random Forests und Sie können erstere leicht gemäß den Regeln konvertieren, aber es ist ziemlich schwierig, dasselbe mit letzteren zu tun.

Erstellen des Algorithmus (Random Forest Sklearn)

Im folgenden Beispiel haben wir eine Random-Forest-Python-Implementierung mithilfe der scikit-learn-Bibliothek durchgeführt. Sie können den Schritten dieses Lernprogramms folgen, um einen eigenen Random-Forest-Klassifikator zu erstellen.

Während 80 % aller datenwissenschaftlichen Aufgaben erfordern, dass Sie die Daten optimieren, was Datenbereinigung, Bereinigung, Korrektur fehlender Werte und vieles mehr umfasst. In diesem Beispiel konzentrieren wir uns jedoch ausschließlich auf die Implementierung unseres Algorithmus.

Erster Schritt: Importieren Sie die Bibliotheken und laden Sie den Datensatz

Zuerst müssen wir die erforderlichen Bibliotheken importieren und unseren Datensatz in einen Datenrahmen laden.

Eingang:

#Importieren der erforderlichen Bibliotheken

pandas als pd importieren

importiere numpy als np

importiere matplotlib.pyplot als plt

#Datensatz importieren

aus sklearn.datasets import load_iris
Datensatz = load_iris ()

Zweiter Schritt: Aufteilen des Datensatzes in einen Trainingssatz und einen Testsatz

Nachdem wir die notwendigen Bibliotheken importiert und die Daten geladen haben, müssen wir unseren Datensatz in einen Trainingssatz und einen Testsatz aufteilen. Das Trainingsset hilft uns, das Modell zu trainieren, und das Testset hilft uns festzustellen, wie genau unser Modell tatsächlich ist.

Eingang:

# Passen Sie den Klassifikator an das Trainingsset an

aus sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(criterion = 'entropy' , splitter = 'best' , random_state = 0)

model.fit(X_Zug, y_Zug)

Ausgabe:

DecisionTreeClassifier(class_weight=Keine, kriterium='entropie' , max_tiefe=Keine,
max_features=Keine, max_leaf_nodes=Keine,
min_impurity_decrease=0.0, min_impurity_split=Keine,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=False, random_state=0,

splitter='best')

Dritter Schritt: Erstellen Sie einen zufälligen Forest-Klassifikator

Jetzt erstellen wir unseren Random-Forest-Klassifikator mit Python und scikit-learn.

Eingang:

#Anpassen des Klassifikators an das Trainingsset

aus sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, kriterium-'entropy', random_state = 0)

model.fit(X_Zug, y_Zug)

Ausgabe:

RandomForestClassifier(bootstrap=True, class_weight=None, kriterium='entropy',

max_depth=Keine, max_features='auto', max_leaf_nodes=Keine,

min_impurity_decrease=0.0, min_impurity_split=Keine,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=Keine,

oob_score=False, random_state=0, verbose=0, warm_start=False)

Vierter Schritt: Sagen Sie die Ergebnisse voraus und erstellen Sie die Verwirrungsmatrix

Sobald wir unseren Klassifikator erstellt haben, können wir die Ergebnisse vorhersagen, indem wir ihn auf dem Testsatz verwenden und die Konfusionsmatrix erstellen und ihre Genauigkeitsbewertung für das Modell erhalten. Je höher die Punktzahl, desto genauer ist unser Modell.

Eingang:

#Sage die Ergebnisse des Testsets voraus

y_pred = mode.predict(X_test)

#Erstelle die Konfusionsmatrix

aus sklearn.metrics importieren verwirrte_matrix

cm = Verwirrungsmatrix (y_test, y_pred)

cm

Ausgang :

Array ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

Eingang :

#Ermittle die Punktzahl für dein Modell

model.score(X_test, y_test)

Ausgang :

0,9777777777777777

Fazit

Random-Forest-Klassifikatoren haben viele Anwendungen. Sie gehören zu den robustesten Algorithmen für maschinelles Lernen und sind ein Muss für jeden KI- und ML-Profi.

Wenn Sie mehr über künstliche Intelligenz erfahren möchten, sehen Sie sich das Executive PG Program in Machine Learning & AI von IIIT-B & upGrad an, das für Berufstätige konzipiert ist und mehr als 450 Stunden strenge Schulungen, mehr als 30 Fallstudien und Aufgaben, IIIT, bietet -B Alumni-Status, mehr als 5 praktische Schlusssteinprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Was ist Random Forest beim maschinellen Lernen?

Random Forest ist eine Ensemble-Lernmethode, die genauere Vorhersagen liefern kann als die meisten anderen maschinellen Lernalgorithmen. Es wird häufig beim Lernen von Entscheidungsbäumen verwendet. Ein Wald wird mit Hilfe von Entscheidungsbäumen erstellt, jeder Entscheidungsbaum ist ein starker Klassifikator für sich. Diese Entscheidungsbäume werden verwendet, um einen Wald starker Klassifikatoren zu erstellen. Dieser Wald aus starken Klassifikatoren liefert eine bessere Vorhersage als Entscheidungsbäume oder andere Algorithmen für maschinelles Lernen.

Was sind die Unterschiede zwischen Random Forest und Entscheidungsbäumen?

Ein Entscheidungsbaum ist ein Flussdiagramm, das den Analyseprozess für ein bestimmtes Problem beschreibt. Wir neigen dazu, sie am häufigsten für Klassifizierungsprobleme zu verwenden. Ein Entscheidungsbaum beschreibt den Eliminationsprozess, der notwendig ist, um eine Klassifizierung vorzunehmen. Im Gegensatz zum Entscheidungsbaum basiert der Random Forest auf einem Ensemble von Bäumen, und viele Studien zeigen, dass er leistungsfähiger ist als der Entscheidungsbaum im Allgemeinen. Darüber hinaus ist Random Forest widerstandsfähiger gegen Überanpassung und stabiler, wenn Daten fehlen.

Was sind die Nachteile von Random Forest?

Random Forest ist ein etwas komplexes Modell. Es handelt sich nicht um ein Black-Box-Modell und es ist nicht einfach, die Ergebnisse zu interpretieren. Es ist langsamer als andere Modelle für maschinelles Lernen. Es erfordert eine große Anzahl von Merkmalen, um eine gute Genauigkeit zu erzielen. Random Forests sind eine Art Ensemble-Lernmethode wie andere Ensemble-Methoden wie Bagging, Boosting oder Stacking. Diese Methoden sind in der Regel instabil, was bedeutet, dass sich das endgültige Modell drastisch ändern kann, wenn sich die Trainingsdaten geringfügig ändern.