7

Ich fühle mich unwohl mit der Bedeutung des stepFactor Parameters der tuneRF Funktion, die zum Abstimmen des mtry Parameters weiter in der randomForest Funktion verwendet wird.R: unklares Verhalten tuneRF Funktion (Random Paket)

Die Dokumentation der tuneRF sagt, dass stepFactor eine Größenordnung ist, durch welche die gewählte mtry entleert wird oder aufgeblasen. Offensichtlich, da mtry ist eine Anzahl von Variablen zufällig gewählt, es muss eine ganze Zahl sein, aber ich sah viele Beispiele im Netz mit stepFactor=1.5. Zuerst dachte ich, dass R standardmäßig mtry gleich floor(mtry_current-stepFactor) verwendet, aber es stellte sich heraus, dass ich falsch lag. Außerdem verstehe ich nicht die R-Befehle angezeigt search left... search right... während tuneRF funktioniert. Ich dachte, es war die Information entweder auf den mtry Parameter aufzublasen oder zu entleeren, aber meine Vermutungen erwiesen sich als nicht korrekt.

Um diese lange und nicht zu anmutigen Beschreibung meiner Zweifel zusammenzufassen, meine Fragen sind: warum stepFactor nicht eine ganze Zahl ist ??

Wie werden die folgenden Werte mtry gewählt? Welche Suche nach links/rechts bedeutet eigentlich ??

Jede Hilfe würde sehr geschätzt werden !! :)

+0

Ich habe keine Erfahrung mit 'tuneRF', obwohl ich manchmal das 'randomForest'-Paket verwendet habe. Es sollte eine ganze Zahl in der Theorie sein, aber vielleicht kann 1,5 sagen, dass 'mtry' bei jedem Bootstrap-Replikat durch eine zufällige Auswahl von 1 oder 2 Prädiktoren aufgebläht oder deflationiert wird. Es ist nur meine Vermutung. –

Antwort

7

Nachfolgend finden Sie eine Zusammenfassung, wie tuneRF Werke:

  1. ein. Set mtry auf den Standardwert von sqrt (p) zur Klassifizierung und p/3 für Regression (wobei p = Anzahl der Variablen)

    b. Berechnen Sie den Out-of-Bag (OOB) -Fehler (zB error_default) für eine zufällige Gesamtstruktur mit mtry auf den Standardwert

  2. a. Schau nach links: Setze mtry = Standardwert/stepFactor. Wenn zum Beispiel stepFactor = 1.5 und Ihr Standardstartwert 8 ist, wird mtry auf 8/1,5 = 5,33 gesetzt, aufgerundet auf die ganze Zahl, was 6

    b. Berechnen Sie den OOB-Fehler, z. B. error_left

  3. a. Schau nach rechts: setze mtry = Standardwert * stepFactor. Um mit meinem Beispiel fortzufahren, würde mtry auf 8 * 1,5 = 12 gesetzt werden.

    b. Berechne den OOB-Fehler, zum Beispiel error_right

  4. i. Wenn (error_default < error_right) OR (error_default < error_left), das beste mtry ist der Standardwert

    ii.Wenn die vorherige Bedingung nicht erfüllt ist, aber das Delta zwischen errors_default und error_right/error_left kleiner als die Parameter verbessern, ist das beste mtry ist der Standardwert

    iii. Wenn die Bedingung nicht erfüllt ist, und wenn error_right < error_left und if (error_default-error_right)> verbessern, setzen Sie mtry auf mtry_right (12). Von jetzt an immer nach rechts gehen

  5. Wenn 4.iii. ist verifiziert, iterieren: set mtry zu mtry_right * stepFactor (in meinem Beispiel 12 * 1.5 = 18), berechnen Sie den OOB-Fehler und vergleichen Sie es mit dem Fehler im vorherigen Schritt (in meinem Beispiel für mtry = 12). Wenn der Fehler Neuer Fehler kleiner ist und die Verstärkung der Fehlerreduzierung ausreichend ist (dh>Verbessern), wählen Sie den neuen mtry und fahren Sie fort, diese Schritte zu wiederholen, andernfalls stoppen und geben Sie den aktuellen mtry als beste mtry

Je kleiner stepFactor Sie setzen (zB 1.1, 1.2), die mehr Werte von mtry Sie versuchen, (Feinsuche), desto größer stepFactor Sie setzen (zB 2, 2.5) , desto weniger Werte versuchen Sie (grobe Suche). Auch bei niedrigen Werten von wird die Suche länger fortgesetzt.