Ressourcen zum Erlernen der Implementierung von Ensemble-Methoden

13

Ich verstehe theoretisch (sozusagen), wie sie funktionieren würden, bin mir aber nicht sicher, wie ich eine Ensemble-Methode anwenden soll (z. B. Abstimmung, gewichtete Mischungen usw.).

  • Was sind gute Ressourcen für die Implementierung von Ensemble-Methoden?
  • Gibt es spezielle Ressourcen für die Implementierung in Python?

BEARBEITEN:

Um einige anhand der Diskussion zu den Kommentaren zu klären, suche ich nicht nach Ensemble-Algorithmen wie randomForest usw. Stattdessen frage ich mich, wie Sie verschiedene Klassifikationen aus verschiedenen Algorithmen kombinieren können.

Angenommen, jemand verwendet logistische Regression, SVM und einige andere Methoden, um die Klasse einer bestimmten Beobachtung vorherzusagen. Was ist der beste Weg, um die beste Schätzung der Klasse basierend auf diesen Vorhersagen zu erfassen?

user1074057
quelle

Antworten:

12

Ein guter Anfang ist, sich einen Überblick über das Lernen von Ensembles zu verschaffen. Besonders sollten Sie sich das Boosten und Absacken ansehen . Eine andere Methode, die vom "The Ensemble" -Team beim Netflix-Preis verwendet wurde, wird als "Mischen" oder "Feature-Stacking" bezeichnet .

Dann finden Sie einfach einige Bibliotheken, die diese implementieren und von dort aus arbeiten. Ein schnelles Googeln ergab Scikit und Orange , die beide Sack und Boost haben sollten (und beide sind Python).

Wenn darüber hinaus nur mit Ensemble Methoden, die Sie mögen ein wenig von der Theorie lernen, dann denke ich , dieses Papier ein guter Startpunkt sein würde (die Referenzen für die Teile , die Sie daran interessiert sind , folgen).

Prost.

Stumpy Joe Pete
quelle
(+1) woa, tolle Referenzen hier: O!
Steffen
Vielen Dank. Ich versuche nur, etwas zu einem der wenigen Themen beizutragen, von denen ich etwas weiß.
Stumpy Joe Pete
4

"Ensemble-Methoden im Data Mining: Verbessern der Genauigkeit durch Kombinieren von Vorhersagen", Seni und Elder - Hervorragende Referenz zur praktischen Ensemble-Theorie und -Implementierung, aber der zugehörige Code basiert auf R.

'Maschinelles Lernen: Eine algorithmische Perspektive', S. Marsland - Hervorragender Python-basierter praktischer Text, der jedoch nicht so reinen Ensemblekonzepten gewidmet ist wie die erste Referenz.

klopfen
quelle
2

Die Reaktion des stumpfen Joe Pete war perfekt, aber da Sie von einer Python-Implementierung gesprochen haben, wollte ich das Brauprojekt der Universidade Federal de Pernambuco erwähnen .

https://github.com/viisar/brew

from brew.base import Ensemble
from brew.base import EnsembleClassifier
from brew.combination import import Combiner

# create your Ensemble
clfs = your_list_of_classifiers # [clf1, clf2]
ens = Ensemble(classifiers = clfs)

# create your Combiner
# the rules can be 'majority_vote', 'max', 'min', 'mean' or 'median'
comb = Combiner(rule='majority_vote')

# now create your ensemble classifier
ensemble_clf = EnsembleClassifier(ensemble=ens, combiner=comb)
ensemble_clf.predict(X)

Zu diesem Zeitpunkt verfügen sie über Ensemblegenerierung, -kombination, -beschneidung und -dynamik.

Einschränkungen: nur Klassifizierung; kein Stapeln in der aktuellen öffentlichen Version; nicht viel dokumentation.

Dayvid Oliveira
quelle
0

Salford Systems hat ein Softwarepaket namens Random Forests, das dies für Ensembles von Klassifizierungs- und Regressionsbäumen implementiert. Ich habe keine kostenlosen R-Pakete anzubieten. Ich stelle mir vor, sie haben ein Benutzerhandbuch, das ihre Implementierung erklärt. In Analogie könnten Sie wahrscheinlich herausfinden, wie dies für andere Ensemble-Methoden zu tun ist.

Michael R. Chernick
quelle
2
Es gibt viele großartige R-Pakete für Ensembles von Bäumen: zB randomForest (klassischer Algorithmus), party :: cforest (zufälliger Wald mit bedingten Inferenzbäumen), gbm (Gradientenerhöhung von Bäumen), um nur einige zu nennen. Ich habe in der OP gelesen, dass man Klassifizierer / Regressions-Agnostiker-Ensembles implementieren möchte. Am einfachsten ist es natürlich, Vorhersagen zu mitteln.
B_Miner
@B_Miner Es ist schön zu wissen, dass es Implementierungen in R gibt. Vielleicht könnte mir jemand erklären, warum eine bestimmte Implementierung in Python wünschenswert ist (bitte entschuldigen Sie meine Unkenntnis über R). Ich habe das OP gelesen, um Quellen zu kennen, die beschreiben, wie die Ensemble-Methoden implementiert werden. Das Salford-Paket war eines, von dem ich wusste, dass es möglicherweise Dokumentation enthält.
Michael R. Chernick
Soweit ich weiß, wurden die besten Ergebnisse mit Baumklassifikatoren erzielt, die auf den Papierverstärkungsfunktionen von Freund und Schapire basieren.
Michael R. Chernick
Ich persönlich erhalte wirklich gute Ergebnisse durch einfache Mittelung von Wahrscheinlichkeiten - aber meine Domain interessiert sich mehr für Wahrscheinlichkeiten als für die Auswahl eines Klassenlabels.
B_Miner
@MichaelChernick Wenn Sie wirklich intensive Vorhersagearbeit leisten (wie ... ein Kaggle-Wettbewerb), werden Sie weder Boosting- Wälder noch zufällige Wälder auswählen . Sie werden so viele mögliche Modelle aggregieren wollen, wie Sie benötigen (was im Allgemeinen viel mehr als eins ist). In diesem Zusammenhang werden andere Ensemblemethoden wichtig sein, auch wenn zufällige Wälder weitaus überwältigender sind als alles andere.
Stumpy Joe Pete
0

Scikit-Learn- Ensembling-Guide bietet Bagging und Boosten von Meta-Klassifikatoren und Regressoren. Darüber hinaus bietet die mlxtend- Bibliothek Implementierungen zum Stapeln von Metaklassifikatoren und Regressoren.

Vadim Smolyakov
quelle