Wie kann ich Parameter in Random Forest einstellen, mit Scikit Learn?

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 Samples und etwa 7000 Attributen. Von diesen Samples gibt es 3 Kategorien, die mein Klassifikator erkennt.

Ich weiß, das ist weit von idealen Bedingungen, aber ich versuche herauszufinden, welche Attribute die wichtigsten Vorhersagen sind. Welche Parameter wären am besten zu optimieren?

Ich habe verschiedene n_estimators und bemerkt, dass die Anzahl der "signifikanten Features" (dh Werte ungleich Null im feature_importances_ Array) dramatisch angestiegen ist.

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

3 Solutions collect form web for “Wie kann ich Parameter in Random Forest einstellen, mit Scikit Learn?”

Aus meiner Erfahrung gibt es drei Features, die es wert sind, mit dem Sklearn RandomForestClassifier zu erforschen, in der Reihenfolge von Bedeutung:

  • n_estimators

  • max_features

  • criterion

n_estimators ist nicht wirklich wert zu optimieren. Je mehr Schätzer Sie geben, desto besser wird es tun. 500 oder 1000 ist in der Regel ausreichend.

max_features lohnt sich für viele verschiedene Werte zu erforschen. Es kann einen großen Einfluss auf das Verhalten der RF haben, weil es entscheidet, wie viele Features jeder Baum in der RF berücksichtigt bei jedem Split.

criterion kann eine kleine Wirkung haben, aber in der Regel ist der Standard gut. Wenn du die Zeit hast, probier es aus.

Vergewissern Sie sich, sklearns GridSearch zu verwenden (vorzugsweise GridSearchCV, aber Ihre Datensatzgröße ist zu klein), wenn Sie diese Parameter ausprobieren.

Wenn ich deine Frage richtig verstehe, dann hast du nur 9 Samples und 3 Klassen? Vermutlich 3 Proben pro Klasse? Es ist sehr, sehr wahrscheinlich, dass Ihre RF wird mit dieser kleinen Menge an Daten übertreffen, es sei denn, sie sind gut, repräsentative Aufzeichnungen.

Die entscheidenden Teile sind in der Regel drei Elemente:

  • Anzahl der Schätzer – je größer der Wald, desto besser, es gibt eine kleine Chance, hier zu übertreffen
  • Maximale Tiefe jedes Baumes (Standard keine, die zum vollen Baum führt) – Verringerung der maximalen Tiefe hilft beim Kämpfen mit Überfüllung
  • Max Features pro Split (Standard sqrt (d)) – man könnte man ein bisschen spielen, da es das Verhalten des ganzen Baumes deutlich verändert. Sqrt heuristisch ist in der Regel ein guter Ausgangspunkt, aber ein tatsächlicher süßer Punkt könnte woanders sein

Dieser wunderbare Artikel hat eine detaillierte Erklärung der abstimmbaren Parameter, wie man die Leistung vs Geschwindigkeit Kompromiss, einige praktische Tipps und wie man Raster-Suche zu verfolgen.

  • Wie initialisierst du eine Gensim-Korpus-Variable mit einer csr_matrix?
  • Wie finde ich, welche Attribute mein Baum bei der Verwendung von Scikit-Lernen aufspaltet?
  • Vorhersage von stetigen Werten mit Sklearn-Sackleger
  • Was ist der Unterschied zwischen KFold und ShuffleSplit CV?
  • So geben Sie die vorherige Wahrscheinlichkeit für die Naive Bayes von scikit-learn an
  • Wie kann ich die Liste mit Sklearn DictVectorizer vektorisieren
  • ImportError: Kein Modul namens model_selection
  • Wie man scikit-Learn-Paket in Anaconda aufrüstet
  • Wie benutzt man `log_loss` in` GridSearchCV` mit Multi-Class-Labels in Scikit-Learn (Sklearn)?
  • Sklearn.cross_validation.StratifiedShuffleSplit - Fehler: "Indizes sind out-of-bounds"
  • Wie klassifiziere ich Dokumente mit SciKitLearn mit TfIdfVectorizer?
  • Python ist die beste Programmiersprache der Welt.