Ich suche nach einer Alternative zu Klassifikationsbäumen, die eine bessere Vorhersagekraft bietet.
Die Daten, mit denen ich mich befasse, haben Faktoren sowohl für die erklärenden als auch für die erklärenden Variablen.
Ich erinnere mich, dass ich in diesem Zusammenhang auf zufällige Wälder und neuronale Netze gestoßen bin, obwohl ich sie noch nie zuvor ausprobiert habe. Gibt es noch einen guten Kandidaten für eine solche Modellierungsaufgabe (in R, offensichtlich)?
r
machine-learning
classification
cart
Tal Galili
quelle
quelle
Antworten:
Ich denke, es lohnt sich, Random Forests ( randomForest ) auszuprobieren . Einige Referenzen wurden als Antwort auf verwandte Fragen bereitgestellt: Merkmalsauswahl für das „endgültige“ Modell bei der Durchführung einer Kreuzvalidierung beim maschinellen Lernen ; Können CART-Modelle robust gemacht werden? . Durch Boosting / Bagging sind sie stabiler als ein einzelner WARENKORB, von dem bekannt ist, dass er sehr empfindlich gegen kleine Störungen ist. Einige Autoren argumentierten, dass es SVM- oder Gradienten-Boosting-Maschinen nicht nur bestraft, sondern auch bestrafte (siehe z. B. Cutler et al., 2009). Ich denke, sie übertreffen mit Sicherheit die NNs.
Boulesteix und Strobl bieten einen schönen Überblick über verschiedene Klassifikatoren in Bezug auf die Auswahl optimaler Klassifikatoren und die negative Verzerrung bei der Fehlerratenschätzung: eine empirische Studie zur hochdimensionalen Vorhersage (BMC MRM 2009 9: 85). Ich habe auf dem IV EAM-Treffen von einer weiteren guten Studie gehört , die in Statistics in Medicine besprochen werden sollte.
Ich mag auch das Caret- Paket: Es ist gut dokumentiert und ermöglicht den Vergleich der Vorhersagegenauigkeit verschiedener Klassifikatoren in demselben Datensatz. Es kümmert sich um die Verwaltung von Trainings- / Testmustern, Rechengenauigkeit usw. in wenigen benutzerfreundlichen Funktionen.
Das glmnet- Paket von Friedman und Kollegen implementiert bestraftes GLM (siehe die Übersicht im Journal of Statistical Software ), sodass Sie in einem bekannten Modellierungsframework bleiben.
Ansonsten können Sie auch nach Assoziationsregeln- basierten Klassifikatoren suchen (in der CRAN-Task-Ansicht für maschinelles Lernen oder in den Top 10-Algorithmen in Data Mining finden Sie eine sanfte Einführung in einige von ihnen).
Ich möchte einen weiteren interessanten Ansatz erwähnen, den ich in R (eigentlich Matlab-Code) erneut implementieren möchte, nämlich die Diskriminanz-Korrespondenz-Analyse von Hervé Abdi. Obwohl es ursprünglich für Studien mit kleinen Stichproben und vielen erklärenden Variablen entwickelt wurde (schließlich in kohärenten Blöcken zusammengefasst), scheint es klassische DA-Techniken effizient mit Datenreduktionstechniken zu kombinieren.
Verweise
quelle
Es ist wichtig zu bedenken, dass es keinen Algorithmus gibt, der immer besser ist als andere. Laut Wolpert und Macready "sind zwei beliebige Algorithmen äquivalent, wenn ihre Leistung über alle möglichen Probleme gemittelt wird." (Siehe Wikipedia für Details.)
Für eine bestimmte Anwendung ist die "beste" im Allgemeinen diejenige, die in Bezug auf die getroffenen Annahmen, die Arten der Daten, die sie verarbeiten kann, die Hypothesen, die sie darstellen kann, und so weiter am ehesten mit Ihrer Anwendung übereinstimmt.
Es ist daher eine gute Idee, Ihre Daten nach folgenden Kriterien zu charakterisieren:
Durch die Beantwortung dieser Fragen können Sie einige Algorithmen eliminieren und andere als potenziell relevant identifizieren. Dann erhalten Sie möglicherweise eine kleine Auswahl von Kandidatenmethoden, die Sie intelligent ausgewählt haben und als wahrscheinlich nützlich erweisen.
Es tut mir leid, Ihnen keine einfache Antwort zu geben, aber ich hoffe, das hilft trotzdem!
quelle
Für die Klassifizierung mehrerer Klassen sind Support-Vektor-Maschinen ebenfalls eine gute Wahl. Normalerweise verwende ich dafür das R-Kernlab-Paket.
Weitere Informationen finden Sie im folgenden JSS-Dokument: http://www.jstatsoft.org/v15/i09/
quelle
kernlab
es auch vore1071
.Wie bereits erwähnt, handelt es sich bei Random Forests um ein natürliches "Upgrade", und heutzutage ist SVM im Allgemeinen die empfohlene Technik.
Ich möchte hinzufügen, dass ein häufiger Wechsel zu SVM zu sehr enttäuschenden Ergebnissen führt. Während Techniken wie zufällige Bäume fast trivial sind, ist SVM etwas kniffliger.
Ich fand dieses Dokument von unschätzbarem Wert, als ich SVM zum ersten Mal verwendete (Ein praktischer Leitfaden zur Unterstützung der Vektorklassifizierung) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
In R können Sie das e1071-Paket für SVM verwenden, das mit der De-facto-Standardbibliothek libSVM (mindestens in freier Software!) Verknüpft ist.
quelle
Es lohnt sich, einen Blick auf die Klassifikatoren von Naive Bayes zu werfen . In R können Sie eine Naive-Bayes-Klassifizierung in den Paketen e1071 und klaR durchführen .
quelle