Ich habe die folgenden Beiträge gelesen, die die Frage beantwortet haben, die ich stellen wollte:
Verwenden Sie das Random Forest-Modell, um Vorhersagen aus Sensordaten zu treffen
Entscheidungsbaum für die Ausgabevorhersage
Folgendes habe ich bisher getan: Ich habe die logistische Regression mit zufälligen Wäldern verglichen und RF hat die logistische Leistung übertroffen. Jetzt wollen die medizinischen Forscher, mit denen ich zusammenarbeite, meine RF-Ergebnisse in ein medizinisches Diagnosewerkzeug verwandeln. Zum Beispiel:
Wenn Sie ein asiatischer Mann zwischen 25 und 35 Jahren sind, Vitamin D unter xx und Blutdruck über xx haben, haben Sie eine 76% ige Chance, eine Krankheit xxx zu entwickeln.
RF eignet sich jedoch nicht für einfache mathematische Gleichungen (siehe obige Links). Hier ist meine Frage: Welche Ideen haben Sie alle, um mithilfe von RF ein Diagnosetool zu entwickeln (ohne Hunderte von Bäumen exportieren zu müssen)?
Hier sind einige meiner Ideen:
- Verwenden Sie RF für die Variablenauswahl und dann Logistik (unter Verwendung aller möglichen Interaktionen), um die Diagnosegleichung zu erstellen.
- Aggregieren Sie den RF-Wald irgendwie zu einem "Mega-Baum", der die Knotenaufteilung über Bäume hinweg irgendwie mittelt.
- Verwenden Sie ähnlich wie bei Nr. 2 und Nr. 1 RF, um Variablen auszuwählen (z. B. insgesamt m Variablen), erstellen Sie dann Hunderte von Klassifizierungsbäumen, die alle jede m Variable verwenden, und wählen Sie dann den besten Einzelbaum aus.
Irgendwelche anderen Ideen? Es ist auch einfach, # 1 zu machen, aber gibt es Ideen, wie man # 2 und # 3 implementiert?
quelle
Antworten:
Hier gibt es einige Gedanken:
Ich würde für 1. oder 2 gehen.
quelle
Ich musste mich mit der gleichen Situation auseinandersetzen, in der RF in einer diagnostischen Umgebung verwendet wurde, mit Stakeholdern, die an Algorithmen gewöhnt sind, die sich auf eine einzige lesbare Gleichung beschränken. Ich habe festgestellt, dass Sie, wenn Sie zunächst einen einfachen Entscheidungsbaum erklären (hier können Sie Gleichungen verwenden), dann einen sehr komplizierten und dann die Nachteile einer Überanpassung erklären, einige Kopfnicken bekommen. Wenn Sie einmal erklären, dass viele kleine Bäume Ungenauigkeiten mildern können, indem sie unterschiedlich gezüchtet werden ("zufällig"), und dass sie als Ensemble-Abstimmung oder Durchschnitt verwendet werden können, um eine Überanpassung zu vermeiden, aber dennoch Randfälle berücksichtigen, erhalten Sie Verständnis. Hier sind einige Beispielfolien, die ich mit gutem Empfang verwendet habe:
Sie können nicht von Bäumen in einem Wald wegkommen, und sie geben dem Algorithmus so viel Vorhersagekraft und Robustheit, dass es selten eine bessere Lösung gibt, wenn RF für Sie sehr gut funktioniert. Diejenigen, die sich vergleichen lassen, wie SVM (abhängig von Ihren Daten), sind genauso komplex. Sie müssen ihnen klar machen, dass jede gute Lösung eine Art Black Box (für den Benutzer) sein wird. Am besten erstellen Sie eine Verbrauchsmaterialimplementierung, die nicht mehr Aufwand erfordert als eine einzelne Gleichung. Ich hatte Erfolg beim Erstellen eines RF-Modells in Python (über sklearn) und Erstellen einer einfachen Webserver-REST-API, die dieses Modell in den Speicher lädt und die Variablen in einem POST akzeptiert, um die Vorhersage auszugeben. Sie können dies auch sehr einfach in Java oder R tun oder die API überspringen und einfach eine ausführbare Binärdatei / JAR erstellen, die die Daten als Argumente verwendet.
quelle
Ich habe Erfahrung mit der Bereitstellung zufälliger Gesamtstrukturen in einer SQL Server-Umgebung über
User Defined Function
. Der Trick besteht darin, dieIF-THEN ELSE
Regeln, die Sie von jedem Baum erhalten, in einCASE-WHEN END
oder ein anderesConditional Processing
Konstrukt zu konvertieren (zugegebenermaßen habe ich die Bootstrap Forest-Implementierung von JMP Pro verwendet - 500.000 Zeilen SQL-Code).Es gibt absolut keinen Grund, warum dies mit dem
rattle
R
Paket nicht erreicht werden kann . Schauen Sie sichrandomForest2Rules
&printRandomForests
Funktionen in diesem Paket an. Beide nehmen dasrandom forest
Objekt als Eingabe und besuchen jeden Baum in der Gesamtstruktur und geben eine Reihe vonIF-THEN ELSE
Regeln aus. Ausgehend davon sollte es nicht schwierig sein, diese Logik automatisiert in Ihre gewünschte Sprache umzuwandeln, da die Ausgabe der oben genannten Funktion strukturierter Text ist.Das Obige macht es auch wichtig, die kleinste Nr. Zu entscheiden. von Bäumen, die Sie im Wald benötigen, um Vorhersagen mit der gewünschten Genauigkeit zu treffen (Hinweis: Diagramm (rf.object) zeigt Ihnen, an welchem Punkt sich die Waldvorhersagen trotz Hinzufügen weiterer Bäume nicht verbessern.), um die Nr. beizubehalten. von Linien, um den Wald nach unten darzustellen.
quelle