2017-10-05 3 views
0

Ich versuche, einen Entscheidungsbaumklassifikator für die Bewertung von Baseballspielern mit der von scikit-learn bereitgestellten Funktion zu trainieren. Allerdings würde ich gerne einige Splits im Voraus "vorschreiben" oder "erzwingen", basierend auf dem, was ich weiß, dass die Expertenmeinung wahr ist (diese müssen unabhängig davon berücksichtigt werden). Zum Beispiel möchte ich eine Aufteilung basierend auf Batting-Durchschnitt> .300 erzwingen.Wie kann ich Splits im Entscheidungsbaum angeben?

Eine verwandte Frage ist - kann ich ein zuvor trainiertes Entscheidungsbaummodell "vorladen" und es lediglich in einem nachfolgenden Training "aktualisieren"? Oder muss der Decizio-Tree-Classifier jedes Mal, wenn ich ihn leite, alle Regeln neu lernen? Die Analogie, die ich hier versuchen möchte, ist das Übertragen von Lernen, aber das Anwenden von Entscheidungsbäumen.

+0

Für die zweite Frage ist die Antwort meistens nein. DecisionTree muss alle Daten sehen, um die beste Aufteilung zu ermitteln, so dass das Transferlernen schwierig ist. –

Antwort

0

Die Art, wie ich Splits vorspezifiziere, besteht darin, mehrere Bäume zu erstellen. Teilen Sie die Spieler in 2 Gruppen auf, die mit> 0,3 und < = 0,3, dann erstellen und testen Sie einen Baum in jeder Gruppe. Während des Scorings kann ein simples if-then-else die Spieler zu tree1 oder tree2 schicken.

Der Vorteil dieser Art ist Ihr Code ist sehr explizit. Es ist auch eine gute Möglichkeit, diese Expertenregeln zu testen - einen einzelnen Baum ohne die Regel zu bauen, dann 2 Bäume zu bauen und zu vergleichen.

Der Nachteil ist, wenn Sie viele Regeln haben, wird dies ziemlich lästig mit vielen Bäumen, vielen wenn-dann-sonst zu pflegen und vielleicht kleine Proben, die jeden Baum trainieren. Aber vielleicht sind alle Expertenregeln nicht optimal.

Verwandte Themen