Ideen zur Ausgabe einer Vorhersagegleichung für zufällige Wälder

8

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:

  1. Verwenden Sie RF für die Variablenauswahl und dann Logistik (unter Verwendung aller möglichen Interaktionen), um die Diagnosegleichung zu erstellen.
  2. Aggregieren Sie den RF-Wald irgendwie zu einem "Mega-Baum", der die Knotenaufteilung über Bäume hinweg irgendwie mittelt.
  3. 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?

dfife
quelle
Erstellen Sie eine Vorhersagegleichung für jeden Baum (es handelt sich um einfache Teilungspunkte) und mitteln Sie dann die Vorhersagen aus jeder Gleichung? Sie erhalten eine Monstergleichung, die jedoch den Wald vollständig darstellt.
Zach
Gute Idee @Zach. Aber leider versuche ich alles "Monster" zu vermeiden.
dfife
1
Würde es Ihnen etwas ausmachen, noch einmal zu wiederholen, warum zufällige Gesamtstrukturen für Sie Implementierungsprobleme darstellen? Sie sind nicht besonders intensiv, es sei denn, Sie haben Tausende von Funktionen. Sie könnten es beschneiden, aber es ist unwahrscheinlich, dass Sie eine analytische Form haben, die verdaulich ist.
Jessica Collins
@ Jacob - Das Problem ist, dass RF viele Entscheidungsbäume hat. Ich würde gerne eine einzelne Formel (wenn möglich <ein paar Zeilen lang) angeben, die fast so genau wie RF vorhersagt. Da ich meine Arbeit für ein Publikum mit bescheidener statistischer Raffinesse veröffentliche, denke ich, dass das Exportieren von Seiten auf Seiten von Bäumen die Wahrscheinlichkeit, dass meine Ergebnisse in klinischen Umgebungen umgesetzt werden, stark einschränken würde.
dfife
Ich habe eine Funktion geschrieben, um SQL-Code für ein zufälliges Waldmodell
Shane

Antworten:

6

Hier gibt es einige Gedanken:

  1. Alle Black-Box-Modelle könnten auf irgendeine Weise inspiziert werden. Sie können beispielsweise die variable Wichtigkeit für jedes Feature berechnen oder die vorhergesagte Antwort und die tatsächliche Antwort für jedes Feature ( Link ) darstellen.
  2. Sie könnten über einen Schnitt des Ensembles nachdenken. Nicht alle Bäume im Wald sind notwendig und Sie können nur einige verwenden. Artikel: [Suche nach dem kleinsten zufälligen Wald, Zhang]. Ansonsten nur Google "Ensemble Pruning" und werfen Sie einen Blick auf "Ensemble-Methoden: Grundlagen und Algorithmen" Kapitel 6 ;
  3. Sie können ein einzelnes Modell erstellen, indem Sie wie gesagt die Funktionsauswahl treffen. Andernfalls können Sie auch versuchen, die Domingos-Methode in [Wissenserwerb aus Beispielen über mehrere Modelle] zu verwenden, die darin besteht, einen neuen Datensatz mit Black-Box-Vorhersagen zu erstellen und darauf einen Entscheidungsbaum zu erstellen.
  4. Wie in erwähnte diesen Stapel Exchange Antwort könnte ein Baummodell interpretierbar erscheinen , aber es ist anfällig für hohe Änderungen nur wegen der kleinen Störungen der Trainingsdaten. Daher ist es besser, ein Black-Box-Modell zu verwenden. Das Endziel eines Endbenutzers besteht darin, zu verstehen, warum ein neuer Datensatz als eine bestimmte Klasse klassifiziert wird. Sie könnten über einige wichtige Funktionen nur für diesen bestimmten Datensatz nachdenken.

Ich würde für 1. oder 2 gehen.

Simone
quelle
11

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.

wwwslinger
quelle
Guter Punkt! - Wenn Sie die Ergebnisse von RF in einer einzigen Gleichung zusammenfassen, verlieren Sie unweigerlich einige ihrer Vorteile. Daran hatte ich nicht gedacht.
Dfife
2
Sehr wahrscheinlich ja. Die Verwendung von RF zur Berechnung der variablen Wichtigkeit zur Reduzierung der Dimensionalität, gefolgt von einer Methode, mit der Ihr Publikum besser vertraut ist, ist jedoch ein häufiger Kompromiss. Es ist wichtig zu wissen, dass die variable Bedeutung in RF im Allgemeinen basierend auf der Leistung innerhalb der RF berechnet wird (Anheben, Fehler reduzieren usw.) und möglicherweise nicht alle bei anderen Methoden ein ähnliches Gewicht haben.
wwwslinger
2

Ich habe Erfahrung mit der Bereitstellung zufälliger Gesamtstrukturen in einer SQL Server-Umgebung über User Defined Function. Der Trick besteht darin, die IF-THEN ELSERegeln, die Sie von jedem Baum erhalten, in ein CASE-WHEN ENDoder ein anderes Conditional ProcessingKonstrukt 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 RPaket nicht erreicht werden kann . Schauen Sie sich randomForest2Rules& printRandomForestsFunktionen in diesem Paket an. Beide nehmen das random forestObjekt als Eingabe und besuchen jeden Baum in der Gesamtstruktur und geben eine Reihe von IF-THEN ELSERegeln 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