2016-04-12 8 views
0

Ich verwende Random Forest, um ein Klassifikationsproblem zu machen. Die Antwort hat 5 Klassen. Alle Klassen sind gleichmäßig im Trainingssatz verteilt, jedoch bilden im Testdatensatz zwei bestimmte Klassen die überwiegende Mehrheit. Was es schwierig macht, ist, dass ich im Validierungssatz sehe, dass diese beiden Klassen auch die schlechtesten Genauigkeitsraten haben. Meine Frage ist also, gibt es Möglichkeiten, die Klassifikationsgenauigkeit dieser beiden spezifischen Klassen zu verbessern, um meine Gesamtprognose zu verbessern?Maschinelles Lernen - wie man die Klassifizierung bestimmter Klassen verbessert

Jeder Eingang wird sehr geschätzt!

Antwort

0

Eine einfache Möglichkeit besteht darin, die Zielfunktion zu ändern, um bei Fehlklassifizierung bestimmter Klassen mehr/weniger Verluste zu verursachen. Zum Beispiel sind wohl die Prognosen mit einem Y markiert und Ground-Truth mit T (beide Vektoren), dann die üblichen Verlustfunktion ist einfach:

total_loss(Y,T) == \sum_n loss(y_n, t_n) 

oben, so ist die Strafe für Fehlklassifikation das gleiche für alle Klassen, denen geändert werden zu:

Dabei steht C (t_n) für ein der Klasse t_n zugeordnetes Gewicht.

Sie können C dann so einstellen, dass die Leistung des Dev-Sets maximiert wird, und hoffen, dass sich die Testmenge verbessert (vorausgesetzt, die Label-Verteilung des Dev-Sets ist der des Testsets ähnlich).

Wenn dies wie der richtige Weg klingt, möchten Sie vielleicht ein wenig über Entscheidungstheorie (Abschnitt 1.5 im PRML-Buch von Bishop) und kostensensitives Lernen (here und) lesen.

+0

Danke für die Antwort! Ich denke, das macht Sinn, aber wie erreiche ich das mit dem randomForest-Paket in R? –

+0

Ich bin kein R-Experte. aber, sieh diese SE Frage und Antworten: http://stats.stackexchange.com/questions/46963/how-to-control-the-cost-of-misclassification-in-random-forests. Persönlich würde ich mit Lösung (1) der 2. Antwort beginnen - "absichtlich Ungleichgewicht [der] Datensatz". –

Verwandte Themen