Zufällige Wälder gelten als Black Boxes, aber in letzter Zeit habe ich darüber nachgedacht, welches Wissen aus einem zufälligen Wald gewonnen werden kann.
Das offensichtlichste ist die Wichtigkeit der Variablen. In der einfachsten Variante kann dies einfach durch Berechnen der Anzahl der Vorkommen einer Variablen erfolgen.
Das zweite, woran ich dachte, waren Interaktionen. Ich denke, wenn die Anzahl der Bäume ausreichend groß ist, kann die Anzahl der Vorkommen von Variablenpaaren getestet werden (so etwas wie Chi-Quadrat-Unabhängigkeit). Das dritte sind Nichtlinearitäten von Variablen. Meine erste Idee war es, nur ein Diagramm mit einem variablen Vs-Score zu betrachten, aber ich bin mir noch nicht sicher, ob es Sinn macht.
Hinzugefügt 23.01.2012
Motivation
Ich möchte dieses Wissen nutzen, um ein Logit-Modell zu verbessern. Ich denke (oder hoffe zumindest), dass es möglich ist, übersehene Wechselwirkungen und Nichtlinearitäten zu finden.
quelle
Antworten:
Zufällige Wälder sind kaum eine Black Box. Sie basieren auf Entscheidungsbäumen, die sehr einfach zu interpretieren sind:
Daraus ergibt sich ein einfacher Entscheidungsbaum:
Wenn Petal.Length <4,95, klassifiziert dieser Baum die Beobachtung als "andere". Wenn es größer als 4,95 ist, wird die Beobachtung als "virginica" klassifiziert. Eine zufällige Gesamtstruktur ist einfach eine Sammlung vieler solcher Bäume, wobei jeder auf eine zufällige Teilmenge der Daten trainiert wird. Jeder Baum "stimmt" dann über die endgültige Klassifizierung jeder Beobachtung ab.
Sie können sogar einzelne Bäume aus dem RF ziehen und deren Struktur betrachten. Das Format ist ein wenig anders als bei
rpart
Modellen, aber Sie können jeden Baum untersuchen, um zu sehen, wie die Daten modelliert werden.Darüber hinaus ist kein Modell wirklich eine Black Box, da Sie für jede Variable im Dataset die vorhergesagten Antworten mit den tatsächlichen Antworten vergleichen können. Dies ist eine gute Idee, unabhängig davon, welche Art von Modell Sie erstellen:
Ich habe die Variablen (Länge und Breite der Kelchblätter und Blütenblätter) auf einen Bereich von 0-1 normalisiert. Die Antwort ist ebenfalls 0-1, wobei 0 eine andere und 1 eine virginica ist. Wie Sie sehen, ist der zufällige Wald ein gutes Modell, auch auf dem Test-Set.
Darüber hinaus berechnet eine zufällige Gesamtstruktur verschiedene Maße von unterschiedlicher Wichtigkeit, die sehr informativ sein können:
Diese Tabelle gibt an, um wie viel das Entfernen jeder Variablen die Genauigkeit des Modells verringert. Schließlich gibt es noch viele andere Diagramme, die Sie aus einem zufälligen Waldmodell erstellen können, um zu sehen, was in der Blackbox vor sich geht:
Sie können die Hilfedateien für jede dieser Funktionen anzeigen, um eine bessere Vorstellung davon zu erhalten, was sie anzeigen.
quelle
Vor einiger Zeit musste ich einigen Chemikern in meiner Firma eine RF-Modellanpassung nachweisen. Ich habe viel Zeit damit verbracht, verschiedene Visualisierungstechniken auszuprobieren. Während des Vorgangs habe ich mir aus Versehen auch einige neue Techniken ausgedacht , die ich in ein R-Paket ( forestFloor ) speziell für zufällige Waldvisualisierungen eingefügt habe .
Der klassische Ansatz sind Teilabhängigkeitsdiagramme, die unterstützt werden von: Rminer (datenbasierte Sensitivitätsanalyse wird als Teilabhängigkeit neu erfunden) oder PartialPlot im randomForest- Paket. Das Teilabhängigkeitspaket iceBOX finde ich eine elegante Möglichkeit, Wechselwirkungen zu entdecken. Habe kein Edarf-Paket verwendet , scheint aber einige feine Visualisierungen für RF zu haben. Das ggRandomForest- Paket enthält auch eine Vielzahl nützlicher Visualisierungen.
Derzeit unterstützt forestFloor randomForest-Objekte (Unterstützung für andere RF-Implementierungen ist in Vorbereitung). Es können auch Feature-Beiträge für Bäume berechnet werden, deren Steigung erhöht wurde, da sich diese Bäume nach dem Training nicht wesentlich von zufälligen Waldbäumen unterscheiden. So könnte forestFloor zukünftig XGBoost unterstützen. Partielle Abhängigkeitsdiagramme sind vollständig modellinvariant.
Allen Paketen ist gemeinsam, die geometrische Mapping-Struktur eines Modells vom Feature-Space zum Ziel-Space zu visualisieren. Eine Sinuskurve y = sin (x) wäre eine Abbildung von x nach y und kann in 2D dargestellt werden. Um eine HF-Abbildung direkt zu zeichnen, wären häufig zu viele Dimensionen erforderlich. Stattdessen kann die gesamte Mapping-Struktur projiziert, aufgeschnitten oder zerlegt werden, sodass die gesamte Mapping-Struktur in eine Folge von 2D-Randdiagrammen zerlegt wird. Wenn Ihr RF-Modell nur die Haupteffekte und keine Wechselwirkungen zwischen Variablen erfasst, reichen die klassischen Visualisierungsmethoden aus. Dann können Sie Ihre Modellstruktur wie vereinfachen:y=F(X)≈f1(x1)+f2(x2)+...+fd(xd) . Dann kann jede Teilfunktion jeder Variablen genauso wie die Sinuskurve visualisiert werden. Wenn Ihr RF-Modell beträchtliche Interaktionen erfasst hat, ist dies problematischer. 3D-Schnitte der Struktur können die Interaktionen zwischen zwei Features und der Ausgabe visualisieren. Das Problem besteht darin, die zu visualisierende Kombination von Funktionen zu kennen ( iceBOX behebt dieses Problem). Es ist auch nicht leicht zu sagen, ob andere latente Wechselwirkungen noch nicht berücksichtigt sind.
In diesem Artikel habe ich eine sehr frühe Version von forestFloor verwendet, um zu erklären, welche tatsächliche biochemische Beziehung ein sehr kleines RF-Modell erfasst hat. In diesem Artikel beschreiben wir ausführlich Visualisierungen von Feature-Beiträgen, Forest Floor Visualizations of Random Forests .
Ich habe das simulierte Beispiel aus dem forestFloor-Paket eingefügt, in dem ich zeige, wie eine simulierte versteckte Funktion aufgedeckt wird: noisey=x12+sin(x2π)+2∗x3∗x4+
Zuletzt der Code für partielle Abhängigkeitsdiagramme, codiert von A. Liaw, beschrieben von J. Friedman. Welche tun gut für die Haupteffekte.
quelle
Um diese feinen Antworten zu ergänzen, würde ich die Verwendung gradientenverstärkter Bäume erwähnen (z. B. das GBM-Paket in R ). In R ziehe ich dies zufälligen Gesamtstrukturen vor, da fehlende Werte im Vergleich zu randomForest zulässig sind, bei denen eine Imputation erforderlich ist. Variable Wichtigkeit und Teildiagramme stehen (wie in randomForest) zur Verfügung, um die Auswahl von Features und die Untersuchung nichtlinearer Transformationen in Ihrem Logit-Modell zu erleichtern. Weiterhin wird die variable Interaktion mit der Friedman-H-Statistik (
interact.gbm
) unter Angabe von angesprochenJ.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1
. Eine kommerzielle Version namens TreeNet ist von Salford Systemen und die Video - Präsentation spricht zu ihnen nehmen auf variable Interaktion Schätzung Video .quelle
Späte Antwort, aber ich bin auf ein kürzlich veröffentlichtes R-Paket
forestFloor
(2015) gestoßen, mit dem Sie diese "Unblackboxing" -Aufgabe automatisiert ausführen können. Es sieht sehr vielversprechend aus!Erzeugt die folgenden Handlungen:
Es bietet auch eine dreidimensionale Visualisierung, wenn Sie nach Interaktionen suchen.
quelle
Wie von Zach erwähnt, besteht eine Möglichkeit, ein Modell zu verstehen, darin, die Reaktion zu zeichnen, wenn die Prädiktoren variieren. Mit dem plotmo R-Paket können Sie dies problemlos für "jedes" Modell tun . Zum Beispiel
was gibt
Dies ändert eine Variable, während die anderen auf ihren Medianwerten gehalten werden. Bei Interaktionsdiagrammen werden zwei Variablen geändert. (Anmerkung hinzugefügt im November 2016:
plotmo
Unterstützt jetzt auch partielle Abhängigkeitsdiagramme.)Im obigen Beispiel werden nur zwei Variablen verwendet. kompliziertere Modelle können stückweise durch gleichzeitiges Betrachten von einer oder zwei Variablen visualisiert werden. Da die "anderen" Variablen bei ihren Medianwerten gehalten werden, zeigt dies nur einen Ausschnitt der Daten, kann aber dennoch nützlich sein. Einige Beispiele finden Sie in der Vignette für das plotmo-Paket . Weitere Beispiele finden Sie in Kapitel 10 des Zeichnens von Teilbäumen mit dem Paket rpart.plot .
quelle
Diese Art von Fragen interessieren mich sehr. Ich denke, es gibt eine Menge Informationen, die wir aus einem zufälligen Wald herausholen können.
In Bezug auf Interaktionen scheinen Breiman und Cultier bereits versucht zu haben, dies zu untersuchen, insbesondere im Hinblick auf Klassifizierungs-RFs.
Meines Wissens wurde dies im randomForest R-Paket nicht implementiert. Vielleicht, weil es nicht so einfach ist und weil die Bedeutung von "variablen Wechselwirkungen" stark von Ihrem Problem abhängt.
In Bezug auf die Nichtlinearität bin ich mir nicht sicher, wonach Sie suchen. Regressionswald wird für nichtlineare multiple Regressionsprobleme verwendet, ohne dass zuvor festgelegt wurde, welche Art von nichtlinearer Funktion verwendet werden soll.
quelle
Spät im Spiel gibt es aber einige neue Entwicklungen in dieser Front, zum Beispiel LIME und SHAP . Ein weiteres Paket, das es wert ist, überprüft zu werden, ist DALEX (insbesondere wenn es R verwendet, aber auf jeden Fall nette Cheatsheets usw. enthält), obwohl es derzeit keine Interaktionen zu behandeln scheint. Und diese sind alle modellunabhängig, sodass sie für zufällige Wälder, GBMs, neuronale Netze usw. funktionieren.
quelle
Eine geringfügige Modifikation von zufälligen Wäldern, die mehr Informationen über die Daten liefert, sind die kürzlich entwickelten Methoden für kausale Wälder. Das GRF R-Paket und das Motivationspapier finden Sie hier . Die Idee ist, die zufälligen Waldgrundlinienmethoden zu verwenden, um Heterogenität in kausalen Effekten zu finden.
Eine frühere Veröffentlichung ( hier ) gibt einen detaillierten Ansatz für einen einfachen kausalen Wald. Seite 9 des Papiers beschreibt Schritt für Schritt, wie ein kausaler Baum gezüchtet wird, der dann auf übliche Weise zu einem Wald ausgebaut werden kann.
Gleichung 4:
Gleichung 5:
quelle
Späte Antwort zu meiner Frage hier ( Können wir Random Forest durch Fixieren des Samens zu 100% interpretierbar machen? ):
quelle