Wie kann man die Kosten einer Fehlklassifizierung in zufälligen Wäldern kontrollieren?

21

Ist es möglich, die Kosten einer Fehlklassifizierung im R-Paket randomForest zu kontrollieren ?

In meiner eigenen Arbeit sind falsch negative Ergebnisse (z. B. das Fehlen einer Krankheit) weitaus kostspieliger als falsch positive Ergebnisse. Das Paket rpart ermöglicht es dem Benutzer, Fehlklassifizierungskosten zu kontrollieren, indem eine Verlustmatrix angegeben wird, um Fehlklassifizierungen unterschiedlich zu gewichten. Gibt es etwas ähnliches für randomForest? Soll ich zum Beispiel die classwtOption verwenden, um das Gini-Kriterium zu steuern?

user5944
quelle

Antworten:

8

Nicht wirklich, wenn nicht durch manuelles Anfertigen eines RF-Klons zum Absacken von rpartModellen.

Eine Option ergibt sich aus der Tatsache, dass die Ausgabe von RF tatsächlich eine kontinuierliche Punktzahl ist und keine klare Entscheidung, dh der Anteil der Bäume, die für eine Klasse abgestimmt haben. Sie kann mit extrahiert predict(rf_model,type="prob")und verwendet werden, um beispielsweise eine ROC-Kurve zu erstellen, die einen besseren Schwellenwert als 0,5 aufweist (der später in das RF-Training mit cutoffParametern einbezogen werden kann).

classwt Der Ansatz scheint ebenfalls gültig zu sein, funktioniert jedoch in der Praxis nicht sehr gut - der Übergang zwischen ausgewogener Vorhersage und trivialem Casting derselben Klasse, unabhängig von den Attributen, ist in der Regel zu scharf, um verwendet werden zu können.


quelle
MBQ. Danke vielmals. (i) ROC-Kurve: In diesem Fall benötige ich keine ROC-Kurve, da ich meine eigenen Prioritäten hinsichtlich der Kostengewichtung habe. (ii) classwt: Ja, ich habe festgestellt, dass die Ergebnisse in der Praxis und im Einklang mit anderen Benutzern nicht den Erwartungen entsprechen. (iii) cutoff: Mir ist nicht klar, wie cutoffich in diesem Fall vorgehen soll, und ich würde jeden weiteren Rat begrüßen.
user5944
3

Es gibt verschiedene Möglichkeiten, die Kosten einzubeziehen.
(1) Über- / Unterprobenahme für jeden Sackbaum (geschichtete Probenahme) ist die gebräuchlichste Methode zur Einführung von Kosten. Sie haben das Dataset absichtlich aus dem Gleichgewicht gebracht.
(2) Gewichtung. Funktioniert nie Ich denke, das wird in der Dokumentation betont. Einige behaupten, Sie müssten nur in allen Phasen wie der Gini-Aufteilung und der Schlussabstimmung gewichten. Wenn es funktionieren wird, wird es eine schwierige Implementierung sein.
(3) Metacost-Funktion in Weka.
(4) Behandeln einer zufälligen Gesamtstruktur als probabilistischer Klassifikator und Ändern des Schwellenwerts. Ich mag diese Option am wenigsten. Wahrscheinlich aufgrund meines Unwissens, aber obwohl der Algorithmus Wahrscheinlichkeiten ausgeben kann, ist es für mich nicht sinnvoll, sie so zu behandeln, als ob dies ein probabilistisches Modell wäre.

Ich bin mir aber sicher, dass es weitere Ansätze gibt.

Charles
quelle
3

Es wird empfohlen, dass Sie den Parameter so anpassen , dass er den Realwert in der Zusammenfassung darstellt , wenn die Variable, die Sie vorhersagen möchten, nicht 50% für class 1und 50% für class 2(wie in den meisten Fällen) ist .cutoffOOB

Beispielsweise,

randomForest(data=my_data, formula, ntree = 501, cutoff=c(.96,.04))

In diesem Fall Wahrscheinlichkeit , einen Wert eines mit class 1ist , .96während mit einem Wert von class 2ist .04.

Ansonsten verwenden zufällige Wälder eine Schwelle von 0.5.

pablo_sci
quelle
1

Man kann sich integrieren costMatrixin randomForestexplizit über parmsParameter:

library(randomForest)
costMatrix <- matrix(c(0,10,1,0), nrow=2)
mod_rf <- randomForest(outcome ~ ., data = train, ntree = 1000, parms = list(loss=costMatrix))
Sergey Bushmanov
quelle
0

Sie können die Kostensensitivität über die sampsizeim randomForestPaket enthaltene Funktion einbinden.

model1=randomForest(DependentVariable~., data=my_data, sampsize=c(100,20))

Variieren Sie die Zahlen (100,20)basierend auf Ihren Daten und den Annahmen / Geschäftsregeln, mit denen Sie arbeiten.

Um eine Verwirrungsmatrix zu erhalten, die die Kosten von Klassifizierungsfehlern widerspiegelt, ist ein gewisser Versuch erforderlich. Sehen Sie sich Richard Berks an kriminelle Risikoprognosen: Ein Ansatz für maschinelles Lernen . 82.

MH TING
quelle