17
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None) 

Ich verwende ein zufälliges Waldmodell mit 9 Proben und etwa 7000 Attributen. Von diesen Samples gibt es 3 Kategorien, die mein Klassifikator erkennt.Wie können Parameter in der Random Forest-Umgebung mithilfe von Scikit Learn optimiert werden?

Ich weiß, dass dies weit von idealen Bedingungen entfernt ist, aber ich versuche herauszufinden, welche Attribute in Feature-Vorhersagen am wichtigsten sind. Welche Parameter würden am besten für die Optimierung der Feature-Wichtigkeit optimiert?

Ich versuchte verschiedene n_estimators und bemerkte, dass die Menge der "signifikanten Merkmale" (d. H. Werte ungleich null in der feature_importances_-Array) drastisch erhöht.

Ich habe die Dokumentation gelesen, aber wenn jemand Erfahrung darin hat, würde ich gerne wissen, welche Parameter am besten zu stimmen sind und eine kurze Erklärung warum.

Antwort

28

Aus meiner Erfahrung gibt es drei Merkmale Besuch wert mit dem sklearn RandomForestClassifier, in der Reihenfolge ihrer Bedeutung:

  • n_estimators

  • max_features

  • criterion

n_estimators lohnt sich nicht wirklich zu optimieren. Je mehr Schätzer du gibst, desto besser wird es sein. 500 oder 1000 ist normalerweise ausreichend.

max_features ist es wert, für viele verschiedene Werte zu erkunden. Es kann sich stark auf das Verhalten der RF auswirken, da es entscheidet, wie viele Funktionen jeder Baum in der RF bei jeder Aufteilung berücksichtigt.

criterion kann eine kleine Auswirkung haben, aber normalerweise ist der Standard in Ordnung. Wenn Sie Zeit haben, probieren Sie es aus.

Stellen Sie sicher, dass Sie sklearns GridSearch (vorzugsweise GridSearchCV, aber die Größe Ihres Datensatzes ist zu klein) verwenden, wenn Sie diese Parameter ausprobieren.

Wenn ich Ihre Frage richtig verstehe, haben Sie nur 9 Proben und 3 Klassen? Vermutlich 3 Proben pro Klasse? Es ist sehr, sehr wahrscheinlich, dass sich Ihre RF mit dieser kleinen Datenmenge überanstrengt, es sei denn, es sind gute, repräsentative Aufzeichnungen.

+0

vielen dank! Was ich vorher gemacht habe, war die iterative Instantiierung eines Modells, wobei die Nicht-Null-Attribute des Arrays "feature_importances_" genommen wurden, indem sie zu einem Zähler addiert wurden, wobei die populärsten genommen wurden. Ist das eine naive Art? Sollte ich es mehr auf variable Bedeutung stützen. –

11

die entscheidenden Teile sind in der Regel aus drei Elementen:

  • Anzahl von Schätzern - ususally größer der Wald, desto besser, ist es eine geringe Chance hier von Überanpassung
  • max Tiefe jeder Baum (default keine, was zu Voller Baum) - Reduzierung der maximalen Tiefe hilft beim Kampf mit Überanpassung
  • max. Features pro Split (Standard sqrt (d)) - Du könntest etwas herumspielen, da es das Verhalten des gesamten Baumes signifikant verändert. sqrt Heuristik ist in der Regel ein guter Ausgangspunkt, aber ein tatsächlicher Sweetspot könnte woanders
+0

Hallo, würden Sie mir bitte sagen, wie die Anzahl der Features Varianz und Überanpassung bewirkt? – Austin

1

This wunderbarer Artikel hat eine detaillierte Erklärung der Parameter einstellbar, wie Leistung vs Geschwindigkeit Kompromiss zu verfolgen, einige praktische Tipps, und wie Grid-Suche durchzuführen.

+0

Schönen Dank dafür! –

0

n_estimators ist gut, wie andere sagten. Es ist auch gut im Umgang mit der Überanpassung, wenn es erhöht wird.

Aber ich denke, min_sample_split ist auch hilfreich, wenn der Umgang mit Überanpassung in einer kleinen Probe aber große Features Datensatz aufgetreten ist.

Verwandte Themen