Wie man Gewicht-Klassen in einem RandomForest Umsetzung?

Ich arbeite an einem 3D-Punkt Identifikation mit der RandomForest Methode von scikit. Eine der Fragen, die ich laufen in ist, dass bestimmte Klassen vorhanden sind, öfter als andere Klassen.

Dies bedeutet, dass in den Prozess der Generierung von Vorhersagen aus der trainierten Klassifizierer, wenn der Klassifikator ist unsicher von einer Punkt-Klasse wird es eher davon ausgehen, es gehört zu einer der häufigsten Klassen eher als die weniger Allgemeinen Klasse.

Sehe ich, dass in der scikit-Dokumentation für random forests es ist ein sample_weight parameter in den fit-Methode. Was ich sagen kann, dass nur bestimmte GEWICHTE insgesamt Proben(sagen wir ich habe 50 Dateien, die ich trainiere, es wird das Gewicht der ersten Probe doppelt so stark wie alles andere auch) eher als Klassen.

Dieser das Problem nicht beheben lässt, weil der kleinste gemeinsame Klassen sind in etwa so selten in allen Proben, die ich habe. Es liegt einfach in der Natur der jeweiligen Klasse.

Ich habe festgestellt, dass einige Papiere auf ausgewogene random forests und weighted random forests. Aber ich habe nicht gesehen, nichts darüber, wie verwenden Sie diese in scikit. Ich hoffe, dass ich falsch Liege - gibt es einen Weg, um Gewicht zu Klassen eingebaut? Sollte ich etwas schreiben, sondern das künstlich gleicht das Gewicht der verschiedenen Klassen, die in meinen Proben?

Sample_weight gemäß der Dokumentation ausgeführt haben, scheint sich auf Stichproben und nicht Klasse Gewicht. Also wenn ich Dateien A, B und C und Klassen 1, 2 und 3, sagen wir mal:

A = [1 1 1 2]
B = [2 2 1 1]
C = [3 1 1 1]

Suchen oben haben wir eine situation, sehr vereinfacht, in dem wir haben sehr wenige von der Klasse 3 im Vergleich zu den anderen Klassen. Meine situation hat 8 Klassen und Schulungen auf Millionen Punkte, aber das Verhältnis ist immer noch unglaublich schief gegen zwei bestimmte Klassen.

Mithilfe der sample_weight, die in ein array der Größe m(m ist die Zahl der Proben), ich wäre in der Lage, Gewicht, wie stark jeder dieser drei Dateien arbeiten. Also mein Verständnis ist, dass ich tun kann sample_weight = [1 1 2] was wäre die Probe C doppelt so stark wie die anderen beiden Proben.

Jedoch, dies nicht wirklich helfen, weil mein Problem ist, dass die Klasse 3 ist super selten(in den tatsächlichen Daten, 1k Punkte aus Millionen anstelle von 1 aus 12).

Erhöhung des Gewichts von jeder Probe wird nicht erhöhen Sie das Gewicht von bestimmten Klassen, es sei denn, ich fake einige Daten, bei denen die Probe besteht aus fast nichts, aber die bestimmte Klasse.

Fand ich sklearn.Vorverarbeitung.balance_weights(y) in der Dokumentation aber ich finde nicht, jeden es zu benutzen. In der Theorie es tut, was ich brauche, es zu tun, aber ich weiß nicht, wie ich sehen kann passen die GEWICHTE array zurück in meine Random Forest.

  • Ich verstehe nicht: "Das ist nicht das Problem beheben, weil der kleinste gemeinsame Klassen sind in etwa so selten in allen Proben, die ich habe. Es ist einfach die Natur der besonderen Klasse." Wenn Sie legen Sie die Probe GEWICHTE zu sample_weight = (1 / n_samples_in_same_class) geben Sie angemessene Werte für die Klasse GEWICHTE.
  • sample_weight laut Dokumentation scheint sich auf Stichproben und nicht Klasse Gewicht.
  • Ja, aber zuordnen können Sie die gleiche Einwaage an alle die samples der gleichen Klasse und Sie effektiv sind Gewichtung, als wenn Sie zur Verfügung gestellt hatte, Klasse GEWICHTE. Es ist möglich, zu simulieren, Klasse GEWICHTE durch die Bereitstellung von Probe Gewicht, aber nicht Umgekehrt.
  • sollten wir wirklich umsetzen, dass Bequemlichkeit, was es gibt - oder vielmehr Sie Faktor aus der (ich glaube) SGDClassifier.
  • ogrisel war völlig auf die Nase, tut mir Leid für Sie zweifeln! Ich machte eine flache array, der alle Klassen in der Beispiel-Dateien(anstelle der multideminsional array, die ich vorher hatte) und lief dann, die durch die balance_weights Methode. Da die Etiketten sind nun eindimensionale, kann ich diese verwenden GEWICHTE in der sample_weight Feld.
InformationsquelleAutor Nahkki | 2013-07-16
Schreibe einen Kommentar