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?
quelle
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?
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.
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 ntree
Parameterraster zu trainieren (einfach, aber CPU-aufwendiger) oder eine zufällige Gesamtstruktur mit vielen Bäumen zu erstellen. keep.inbag
Berechnen 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.ntree
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 anwendenntree = sqrt (Anzahl der Zeilen * Anzahl der Spalten) / numberofcpu
quelle