Was bedeutet negative% IncMSE im RandomForest-Paket?

8

Ich habe RandomForest für ein Regressionsproblem verwendet. Ich habe importance(rf,type=1) verwendet, um die% IncMSE für die Variablen zu erhalten, und eine davon hat eine negative% IncMSE. Bedeutet dies, dass diese Variable für das Modell schlecht ist? Ich suchte im Internet nach Antworten, fand aber keine klare Antwort. Ich fand auch etwas seltsam in der Zusammenfassung des Modells (unten angehängt). Es scheint, dass nur ein Baum verwendet wurde, obwohl ich ntrees als 800 definiert habe.

Modell:

%Vor%     
mql4beginner 13.01.2015, 09:03
quelle

1 Antwort

20

Frage 1 - Warum zeigt ntree 1? :

summary(rf) zeigt Ihnen die Länge der Objekte an, die in Ihrer rf -Variable enthalten sind. Das bedeutet, dass rf$ntree die Länge 1 hat. Wenn Sie auf Ihrer Konsole rf$tree eingeben, sehen Sie, dass es 800 anzeigt.

Frage 2 - zeigt eine negative% IncMSE eine "schlechte" Variable?

IncMSE:
Die Art und Weise, wie dies berechnet wird, besteht darin, zunächst den MSE des gesamten Modells zu berechnen. Nennen wir das MSEmod . Danach werden die Werte für jede der Variablen (Spalten in Ihrem Datensatz) zufällig gemischt (permutiert), so dass eine "schlechte" Variable erstellt wird und ein neuer MSE berechnet wird. I.e. Stellen Sie sich vor, dass Sie für eine Spalte Zeilen 1,2,3,4,5 hatten. Nach der Permutation werden diese zufällig 4,3,1,2,5 sein. Nach der Permutation (alle anderen Spalten bleiben genau gleich, da wir col1's Wichtigkeit untersuchen wollen), wird der neue MSE des Modells berechnet, nennen wir es MSEcol1 (in ähnlicher Weise haben Sie MSEcol2 , MSEcol3 , aber lass es uns einfach halten und behandle nur MSEcol1 hier). Wir würden erwarten, dass MSEcol1 höher wäre als MSEmod (je höher der MSE, desto schlechter), da der zweite MSE mit einer völlig zufälligen Variablen erstellt wurde. Wenn wir also die Differenz der beiden MSEcol1 - MSEmod nehmen, erwarten wir normalerweise eine positive Zahl. In Ihrem Fall zeigt eine negative Zahl an, dass die Zufallsvariable besser funktioniert, was zeigt, dass die Variable wahrscheinlich nicht prädiktiv genug ist, d. H. Nicht wichtig.

Beachten Sie, dass diese Beschreibung, die ich Ihnen gegeben habe, das hohe Niveau ist, in Wirklichkeit werden die beiden MSE-Werte skaliert und die prozentuale Differenz wird berechnet. Aber die Geschichte auf hohem Niveau ist das.

In Algorithmusform:

  1. Berechne Modell MSE
  2. Für jede Variable im Modell:
    • Variable anpassen
    • Berechnen Sie das neue Modell MSE nach der Variablenpermutation
    • Nimm den Unterschied zwischen dem Modell MSE und dem neuen Modell MSE
  3. Sammeln Sie die Ergebnisse in einer Liste
  4. Wichtigkeit der Rangvariablen gemäß dem Wert von% IncMSE. Je größer der Wert, desto besser

Hoffe es ist jetzt klar!

    
LyzandeR 13.01.2015, 10:51
quelle