5

Ist ensemble learning ein Beispiel für viele Instanzen eines bestimmten Klassifikators, zum Beispiel Decision Tree Classifier; oder ist es eine Mischung aus mehreren Klassifikatoren wie Neuronale Netze, Entscheidungsbaum, SVM und so weiter?Lernen von Ensemble und seine Implementierung in Matlab

Ich habe in wikipedia's Beschreibung auf Bagging ein Ensemble Lerner untersucht. Er sagt, dass:

Absackung zu "Verbesserungen für instabile Verfahren" (Breiman, 1996) führt, zu denen zum Beispiel neuronale Netze, Klassifikations- und Regressionsbäume und Subgruppenauswahl in der linearen Regression (Breiman, 1994) .

Ich bin etwas verwirrt über diese Beschreibung. Ich habe auch in MATLAB implementation des Ensemble-Algorithmus untersucht. Zum Beispiel dieses:

load fisheriris 
ens = fitensemble(meas,species,'AdaBoostM2',100,'Tree') 

meas und species sind Eingänge der fitensemble Funktion. Hier in diesem Beispiel verwendet es AdaBoostM2 schwachen Lerner des Typs Tree und verwendet 100 von ihnen. Wie kann diese einfache Instanz dieser Funktion angesprochen werden, um zu zeigen, dass Ensemble-Lernen verwendet wird, um verschiedene Klassifizierer wie Neural Net, KNN, Naive Bayes miteinander zu kombinieren?

Kann jemand erklären, was Ensemble-Lernen tatsächlich ist und was MATLAB in seiner Implementierung der fitensemble Funktion zu tun versucht?

Antwort

11

Die Grundidee von ensemble learning besteht darin, mehrere Modelle zu kombinieren, um die Vorhersage-Performance zu verbessern. Sie gelten als Meta-Algorithmen entwickelt, um auf vorhandenen Lernalgorithmen zu arbeiten. Es gibt verschiedene Ansätze:

  • Bagging (steht für B ootstrap Agg regation) erzeugt einen Satz von Modellen jedes trainierten auf einer Stichprobe der Daten (bootstrapresampling: Probe N Instanzen mit Ersatz). Die Vorhersagen von diesem Modell werden kombiniert/aggregiert, um die endgültige Vorhersage unter Verwendung der Mittelwertbildung zu erzeugen.

  • Random Subspace: Die Idee ist es, den Lernalgorithmus, wie Kommissionierung eine Teilmenge von Merkmalen zufällig randomisieren vor dem Trainingsalgorithmus Anwendung (man denke Random Forest zum Beispiel). Jedes Modell wird auf Daten trainiert, die auf einen zufällig ausgewählten Unterraum projiziert werden. Die Ergebnisse der Modelle werden dann kombiniert, in der Regel mit einfacher Mehrheit.

  • Boosting: auch auf dem Konzept der Abstimmung/Mittelwertbildung mehrerer Modelle gebaut, jedoch gewichtet es die Modelle nach ihrer Leistung. Sie erstellt Modelle iterativ, wobei neue Modelle dazu ermutigt werden, "Experten" für Instanzen zu werden, die von früheren Modellen falsch klassifiziert wurden. Boosting funktioniert am besten, wenn der Basislernalgorithmus nicht zu komplex ist (schwacher Lerner). Es gibt verschiedene Varianten dieses Algorithmus (AdaBoost, LogitBoost, GentleBoost, LPBoost, etc ..).

  • Stacking: kombiniert die Vorhersagen mehrerer Basislerner (normalerweise verschiedener Typen: kNN, ANN, SVM, etc ..), nicht mit Voting wie vorher, aber mit einem Meta-Lerner (ein Modell trainiert am Ausgang) der Basismodelle).Daher werden die Vorhersagen der Basislerner als Eingangsdaten dem Meta-Lerner in der nächsten Schicht zugeführt, um die endgültige Vorhersage zu erzeugen.


fitensemble ist eine Funktion MATLAB verwendet sowohl ein ensemble learner für Klassifizierungs- und Regressions aufzubauen. Es unterstützt drei Methoden: Bagging, Boosting und Subspace. Sie können zwischen drei Arten von verfügbaren schwachen Lernenden wählen: decision tree (decision stump wirklich), Diskriminanzanalyse (sowohl linear und quadratic), oder k-nearest neighbor Klassifikator.

Hinweis: Außer Subspace Methode, alle zu steigern und Absacken Algorithmen basieren auf tree learners. Subraum kann entweder discriminant analysis oder k-nearest neighbor Lernende verwenden.

Zum Beispiel bildet der folgende Code einen Entscheidungsbaum ensemble Klassifikator (bestehend aus 100 Bäumen) unter Verwendung der AdaBoost Methode auf dem Trainingsdatenmenge ausgestattet X mit entsprechenden Klassen Y.

ens = fitensemble(X, Y, 'AdaBoostM1', 100, 'Tree') 

(der M1 Teil zeigt einen binären Klassifikator, gibt es eine erweiterte Version für M2 mehrklassige Probleme)

+1

Sie mehr über Ensemble Methoden, die von gerade Fragen und Antworten auf [stats.SE] (http lernen können: //stats.stackexchange.com/questions/tagged/ensemble) – Amro

+0

Danke für die Änderungen, haha, wirklich bemerkenswert. Ich war verwirrt über das Lernen von Gruppen und nachdem ich davon erfahren hatte, war ich zu faul, um die Änderungen vorzunehmen. – motiur

+0

Können Sie Ihren eigenen Lerner angeben? – JohnAndrews