Ich erkunde verschiedene Klassifizierungsmethoden für ein Projekt, an dem ich arbeite, und bin daran interessiert, Random Forests auszuprobieren. Ich versuche mich weiterzubilden und würde mich über jede Hilfe durch die CV-Community freuen.
Ich habe meine Daten in Trainings- / Test-Sets aufgeteilt. Durch Experimente mit zufälligen Gesamtstrukturen in R (mit dem randomForest-Paket) hatte ich Probleme mit einer hohen Fehlklassifizierungsrate für meine kleinere Klasse. Ich habe dieses Papier über die Leistung von Zufallsgesamtstrukturen mit unausgeglichenen Daten gelesen und die Autoren stellten zwei Methoden zum Umgang mit Klassenungleichgewichten bei der Verwendung von Zufallsgesamtstrukturen vor.
1. Gewichtete zufällige Wälder
2. Ausgewogene zufällige Wälder
Das R-Paket erlaubt keine Gewichtung der Klassen (in den R-Hilfeforen habe ich gelesen, dass der classwt-Parameter nicht ordnungsgemäß ausgeführt wird und als künftige Fehlerbehebung geplant ist). Daher bleibt mir die Option 2. Ich kann angeben Die Anzahl der Objekte, die von jeder Klasse für jede Iteration der zufälligen Gesamtstruktur abgetastet wurden.
Es ist mir unangenehm, gleiche Stichprobengrößen für zufällige Gesamtstrukturen festzulegen, da ich das Gefühl habe, zu viele Informationen über die größere Klasse zu verlieren, was bei zukünftigen Daten zu einer schlechten Leistung führen würde. Die Fehlklassifizierungsraten beim Downsampling der größeren Klasse haben sich verbessert, aber ich habe mich gefragt, ob es andere Möglichkeiten gibt, mit unausgeglichenen Klassengrößen in zufälligen Wäldern umzugehen.
Antworten:
Wenn Ihnen diese Optionen nicht gefallen, haben Sie überlegt, stattdessen eine Boosting-Methode zu verwenden? Bei entsprechender Verlustfunktion werden die Gewichte beim Boosten automatisch neu kalibriert. Wenn Ihnen die stochastische Natur von zufälligen Wäldern zusagt, wird dies auch durch die Erhöhung des stochastischen Gefälles unterstützt.
quelle
gbm
Paket inR
hat einen funktionierenden Ausdruck "Gewichte", und Sie können die Zufälligkeit auf sehr ähnliche Weise wie zufällige Wälder erhöhen, indem Sie den Ausdruck "bag.fraction" verringern. Es scheint, als wäre es einen Versuch wert.Ich denke, dass das Gewichten von Objekten irgendwie dem Duplizieren von Objekten entspricht. Vielleicht sollten Sie versuchen, den Bootstrap-Schritt zu ändern, indem Sie Ihre verschiedenen Klassen entsprechend abtasten.
Ein anderer Gedanke ist, dass ein Klassenungleichgewicht Ihren Entscheidungsschwellenwert auf einen anderen Wert als (wenn es sich um ein Binärklassifizierungsproblem handelt). Betrachten Sie die ROC-Kurven und die AUC, um festzustellen, wie stark das Ungleichgewicht die Leistung Ihrer Modelle beeinträchtigt.0,5
quelle
Anstatt große Klassen abzutasten, können Sie kleine Klassen erweitern! Wenn große Klassen um ein Vielfaches häufiger beobachtet werden als kleine, ist die Verzerrung gering. Ich hoffe, Sie können mit diesem übergroßen Datensatz umgehen.
Sie können auch Untergruppen von Beobachtungen identifizieren, die die meisten Informationen über große Klassen verarbeiten. Es gibt viele mögliche Verfahren. Die einfachste Methode basiert meiner Meinung nach auf der Methode des nächsten Nachbarn. Die Stichprobe der Beobachtung basiert auf einer Nachbarschaftsgraphenstruktur, die sicherstellt, dass die Stichprobe eine Wahrscheinlichkeitsdichte aufweist, die ähnlicher ist Original.
randomForest ist in Fortran und c geschrieben, der Quellcode ist verfügbar (http://cran.r-project.org/src/contrib/randomForest_4.6-2.tar.gz), aber ich kann den Ort nicht erkennen, an dem Enthropie berechnet wird. ps. ups that randomforest verwenden Gini anstelle von Enthropie
quelle
(1) Sie haben Recht, die Gewichtungsfunktion funktioniert nicht und Sie sind sich nicht sicher, ob sie jemals behoben wurde.
(2) Die meisten verwenden Option 2 mit ausgeglichenen Daten. Der Schlüssel, um nicht zu viele Daten zu verlieren, ist das Stratified Sampling. Sie wählen für jeden Baum nach dem Zufallsprinzip einen eindeutigen ausgeglichenen Satz.
quelle
Die synthetische Überabtastung von Minderheiten (SMOTE) erzeugt neue Beobachtungen der Minderheitsklasse als zufällige konvexe Kombinationen benachbarter Beobachtungen. Das Papier ist hier: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-14-106
quelle