2016-11-09 1 views
0

So habe ich ein Trainingsdaten wie folgt festgelegt (aber viel größer):Learning Zufalls Wald von Gruppe Betreute

 Group PID Var1 Var2 Best 
    0 111  1  1  1  1 
    1 111  2  2  1  2 
    2 111  3  1  2  2 
    3 112  1  1  2  2 
    4 112  2  2  1  1 
    5 113  1  1  2  2 
    6 113  2  1  1  2 
    7 113  3  2  1  1 
    8 113  4  3  2  2 

Wo jede Gruppe (Zeilen, die eine Gruppennummer teilen) enthält eine Liste von Personen (jede eindeutige PID innerhalb jeder Gruppe), und eine Person innerhalb der Gruppe mit Best = 1 und der Rest mit Best = 2. Mein Ziel ist es, anhand dieser Trainingsdaten vorherzusagen, welche Person in jeder Gruppe die beste (Best = 1) basierend auf Var1 ist und Var2.

Ich habe mit Scikit lernen gespielt und versucht, das zufällige Waldmodell zu verwenden, um Best für die Testdaten vorherzusagen, aber es berücksichtigt nicht die Gruppen und kann Best = 1 für mehr als eine PID pro Gruppe zuweisen.

Ich frage mich, wie man das Modell trainieren/laufen lässt, so dass es lernt, ein einzelnes Best = 1 pro Gruppe zuzuweisen, anstatt es über alle Zeilen und Gruppen hinweg zuzuordnen. Es wäre genauso gut, mich in Richtung hilfreicher Ressourcen zu führen, denn ich bin mir nicht sicher, wo ich Hilfe suchen soll.

+0

Da Ihre Funktionen sind 'Var1' &' Var2', wird es versuchen 'Best' von diesen vorherzusagen zwei Spalten. Es wird jede Probe unabhängig voraussagen und kann daher viele in derselben Gruppe ergeben. – MMF

+0

Ok, ich werde versuchen, Group und PID zu den Features hinzuzufügen und zu sehen, ob das die gewünschten Ergebnisse liefert. Vielen Dank! – Nizag

+1

Ich fürchte, es wird nicht besser. Sie sollten 'OneHotEncoder' verwenden, um das Feature' Group' zu codieren, sonst wird es die Gruppen zwischen ihnen ordnen und es bedeutet alles. Warum sollte Gruppe '111' weniger wichtig sein als Gruppe' 112' (nur weil '111 <112') – MMF

Antwort

2

Wenn ein Feature nicht eine gut geordnete Metrik ist - wie eine diskrete Klassifizierung - verwenden wir One-Hot-Codierung. Dies bedeutet, dass für N Klassen (verschiedene Werte) der ursprünglichen Funktion, wir eine Familie von N Funktionen erstellen, genau ein davon wird „gut“ (in der Regel), während die anderen sind " schlecht "(typisch). Sie können dies als einen Satz von Booleschen Funktionen lesen: isGroup111(), isGroup112(), ...

Group111 Group112 Group113 PID Var1 Var2 Best 
0  1  0  0  1  1  1  1 
1  1  0  0  2  2  1  2 
2  1  0  0  3  1  2  2 
3  0  1  0  1  1  2  2 
4  0  1  0  2  2  1  1 
5  0  0  1  1  1  2  2 
6  0  0  1  2  1  1  2 
7  0  0  1  3  2  1  1 
8  0  0  1  4  3  2  2 
+1

Verwerfen "PID". Ich glaube nicht, dass IDs dem Klassifikator irgendwelche wichtigen Informationen bringen werden ... – MMF

+0

Ich habe die Tabelle der Vollständigkeit halber verlassen. Sie sind ziemlich richtig, dass es kein Merkmal in der Bewertung sein sollte. – Prune

+0

Das macht Sinn, Danke! Gibt es Bedenken hinsichtlich der Speicherkapazität, wenn es eine große Anzahl verschiedener Gruppen gibt? – Nizag