Hängt die optimale Anzahl der Bäume in einer zufälligen Gesamtstruktur von der Anzahl der Prädiktoren ab?

46

Kann jemand erklären, warum wir eine große Anzahl Bäume in zufälligen Wäldern benötigen, wenn die Anzahl der Prädiktoren groß ist? Wie können wir die optimale Anzahl von Bäumen bestimmen?

Z Khan
quelle

Antworten:

70

Zufällige Gesamtstruktur verwendet das Absacken (Auswählen einer Stichprobe von Beobachtungen anstelle von allen) und die Methode des zufälligen Unterraums (Auswählen einer Stichprobe von Merkmalen anstelle von allen, mit anderen Worten - Attributabsacken ), um einen Baum zu züchten. Ist die Anzahl der Beobachtungen groß, aber die Anzahl der Bäume zu klein, werden einige Beobachtungen nur einmal oder gar nicht vorhergesagt. Wenn die Anzahl der Prädiktoren groß, die Anzahl der Bäume jedoch zu klein ist, können einige Features (theoretisch) in allen verwendeten Subspaces übersehen werden. In beiden Fällen nimmt die Vorhersagekraft für zufällige Gesamtstrukturen ab. Der letzte Fall ist jedoch ziemlich extrem, da die Auswahl des Unterraums an jedem Knoten durchgeführt wird.

Während der Klassifizierung ist die Subraumdimensionalität standardmäßig (ziemlich klein, ist die Gesamtzahl der Prädiktoren), aber ein Baum enthält viele Knoten. Während der Regression beträgt die Subraumdimensionalität standardmäßig (groß genug), obwohl ein Baum weniger Knoten enthält. Die optimale Anzahl der Bäume in einem zufälligen Wald hängt daher nur in extremen Fällen von der Anzahl der Prädiktoren ab.ppp/3

Die offizielle Seite des Algorithmus besagt, dass die zufällige Gesamtstruktur nicht zu groß ist und Sie so viele Bäume verwenden können, wie Sie möchten. Aber Mark R. Segal (14. April 2004. Benchmarks für maschinelles Lernen und zufällige Waldrückführung. Zentrum für Bioinformatik und Molekulare Biostatistik) hat herausgefunden, dass es für einige verrauschte Datensätze überpassend ist. Um eine optimale Anzahl zu erhalten, können Sie versuchen, eine zufällige Gesamtstruktur in einem ntreeParameterraster zu trainieren (einfach, aber CPU-aufwendiger) oder eine zufällige Gesamtstruktur mit vielen Bäumen zu erstellen. keep.inbagBerechnen Sie die OOB-Fehlerraten für die ersten Bäume (wobei sich von zu ändert ) und die OOB-Fehlerrate in Abhängigkeit von der Anzahl der Bäume (komplexer, aber weniger CPU-verbrauchend) darstellt.nn1ntree

O_Devinyak
quelle
-2

Entsprechend zu diesem Artikel

Sie schlagen vor, dass ein zufälliger Wald eine Anzahl von Bäumen zwischen 64 - 128 haben sollte . Damit sollten Sie ein gutes Gleichgewicht zwischen ROC AUC und Verarbeitungszeit haben.

silviomoreto
quelle
10
Es scheint seltsam, dass ihre Ergebnisse nicht von der Anzahl der Features im Datensatz
abhängen
-5

Ich möchte etwas hinzufügen, wenn Sie mehr als 1000 Features und 1000 Zeilen haben, können Sie nicht einfach eine beliebige Anzahl von Bäumen nehmen.

Ich schlage vor, Sie sollten zuerst die Anzahl der CPUs und RAMs ermitteln, bevor Sie versuchen, eine Kreuzvalidierung zu starten, um das Verhältnis zwischen ihnen und der Anzahl der Bäume zu ermitteln

Wenn Sie sikit learn in Python verwenden, haben Sie die Möglichkeit n_jobs=-1, alle Prozesse außer den Kosten zu verwenden, für die jeder Kern eine Kopie der Daten benötigt. Danach können Sie diese Formel anwenden

ntree = sqrt (Anzahl der Zeilen * Anzahl der Spalten) / numberofcpu

Malouke
quelle
6
Ich denke, Sie müssen dies überarbeiten, um Beweise und Rechtfertigungen für Ihre Aussagen zu liefern.
mdewey