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

Your email address will not be published. Required fields are marked *

300-101   400-101   300-320   300-070   300-206   200-310   300-135   300-208   810-403   400-050   640-916   642-997   300-209   400-201   200-355   352-001   642-999   350-080   MB2-712   400-051   C2150-606   1Z0-434   1Z0-146   C2090-919   C9560-655   642-64   100-101   CQE   CSSLP   200-125   210-060   210-065   210-260   220-801   220-802   220-901   220-902   2V0-620   2V0-621   2V0-621D   300-075   300-115   AWS-SYSOPS   640-692   640-911   1Z0-144   1z0-434   1Z0-803   1Z0-804   000-089   000-105   70-246   70-270   70-346   70-347   70-410