AI-United » Allgemein » Ensemble Learning des maschinellen Lernens in Python

Ensemble Learning des maschinellen Lernens in Python

Erstellen besserer Vorhersagemodelle, indem Klassifikatoren zu einem Meta-Klassifikator effizient kombiniert werden

Alle, die die Konzepte des maschinellen Lernens viel besser verstehen möchten, sollten sich mit Ensembles auseinandersetzen.  In diesem Artikel werden die Techniken und Methoden zum Kombinieren mehrerer Klassifikatoren behandelt, die zur Verbesserung der Leistung der Lösung des maschinellen Lernens führen sollen.

Ensemble-Methoden dienen zur Verbesserung der Generalisierung der Lösung des maschinellen Lernens und dadurch zur Verhinderung der Überanpassung.

Definition der Ensemble-Methoden

Das Ziel besteht darin, einen Meta-Klassifikator zu erstellen, der eine bessere Generalisierungsleistung als jeder einzelne Klassifikator aufweist.

Ein Ensemble-Meta-Klassifikator kann als eine Lösung betrachtet werden, bei der eine unendliche Menge von Klassifikatoren kombiniert wird, um bessere Ergebnisse zu erhalten als die Ergebnisse eines einzelnen Klassifikators.

Prinzip der Mehrheitsentscheidung

Das Prinzip der Mehrheitsentscheidung dient als Grundlage für eine der gebräuchlichsten Ensemble-Methoden. Um es zu veranschaulichen, betrachten wir folgendes Beispiel: Eine Gruppe von Richtern wählt die Kandidaten für einen Tanzwettbewerb. Das Ergebnis der kombinierten Richter ergibt höchstwahrscheinlich bessere Kandidaten als das Ergebnis jedes einzelnen Richters.

Beim Prinzip der Mehrheitsentscheidung wird der vorhergesagte Wert verwendet, den die meisten Stimmen geliefert haben.

Die Funktionsweise des Ensembles

Für unser Beispiel betrachten wir folgende fünf Klassifizierungsalgorithmen:

  1. Random Forests
  2. Support Vector Machines
  3. Logistic Regression Classifier
  4. Boosted Trees
  5. Nearest Neighbor.

Nun kann ein Ensemble als Kombination von allen fünf Klassifizierungsalgorithmen aufgebaut werden. Danach können verschiedene Teilmengen des Trainingssatzes in einen Algorithmus übertragen und angepasst werden und auf diese Weise bessere Vorhersagen ermittelt werden.

Jeder dieser Klassifizierungsalgorithmen liefert seine eigenen Vorhersagen. Man kann für sie das Prinzip der Mehrheitsentscheidung durchführen, um die Vorhersage zu wählen, die am häufigsten erschien.

Beim Kombinieren der Klassifikatoren sinkt die Gesamtfehlerrate verglichen mit der Fehlerrate jedes einzelnen Klassifikators.

Angenommen es soll vorhergesagt werden, ob ein Aktienkurs steigen oder fallen wird. Wenn drei von fünf Algorithmen die Vorhersage über den Anstieg des Aktienkurses treffen, kann die endgültige Vorhersage entsprechend  gemacht werden, dass der Aktienkurs steigen wird.

Im Vergleich zu einzelnen Ensembles ermitteln Ensemble-Methoden bessere Vorhersagen und sind zuverlässiger.

Als Basis für die Mehrheitsentscheidung dient hauptsächlich das mathematische Konzept des Modus, das darin besteht, dass der am häufigsten vorkommende Wert als Durchschnitt betrachtet wird.

Implementieren eines Ensemble-Klassifikators in Python

Nachdem die Funktionsweise eines Ensemble-Klassifikators erklärt worden ist, kann man versuchen, ihn in Python zu implementieren.

  1. Die Python-Bibliothek Scikit-learn wird verwendet.
  2. Die Genauigkeit wird mithilfe der Funktion cross_val_score ermittelt.
  3. Folgende Scikit-learn-Algorithmen werden eingesetzt: k-nächste-Nachbarn, Random Forest, Entscheidungsbäume.
  4. Der letzte Schritt besteht darin, dass ein Ensemble verwendet wird, mit dessen Hilfe der Genauigkeitswert über den Einsatz des Prinzips der Mehrheitsentscheidung berechnet wird. Der VotingClassifier wird eingesetzt.
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import VotingClassifier

x_test, y_test = get_data() # function to get datamodel1 = KNeighborsClassifier(n_neighbours=3, metric='minkowski')
model2 = RandomForestClassifier(n_estimators=50, random_state=0)
model3 = DecisionTreeClassifier(max_depth=1,criterion='entropy')classifier = VotingClassifier(estimators=[
   ('kn', model1), ('rf', model2), ('dt', model3)], voting='hard')

for model in ([model1, model2, model3, classifier]):
     scores = cross_val_score(model, x_test, y_test, cv=3,  scoring='accuracy')
     print("Accuracy: " % scores.mean())

Nach dem Ausführen des Codes kann festgestellt werden, dass der Mittelwert des Ensemble-Modells (VotingClassifer) besser war als der Mittelwert der anderen Modelle. Dies bedeutet, dass Ensemble-Klassifikator eine viel bessere prädiktive Leistung als jeder einzelne Klassifikator aufweist.

VotingClassifier von Scikit-learn ist bei einer Reihe von gleich gut funktionierenden Modellen nützlich, da dadurch ihre individuellen Schwächen ausgeglichen werden können.

Fazit

Dieser Artikel war Ensemble-Methoden als einer der nützlichsten Methoden des maschinellen Lernens gewidmet.

Die Funktionsweise der Ensemble-Methoden wurde erklärt und es wurde gezeigt, wie mit ihrer Hilfe mehrere Estimators in einem Modell kombiniert werden können, wodurch die Generalisierung und Robustheit im Vergleich zu einem einzelnen Estimator verbessert wird.

Möchten Sie mehr über Ensemble Learning des maschinellen Lernens erfahren, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.

Quelle
AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.