Frage:
Erstellen eines einzelnen Entscheidungsbaums aus einer zufälligen Gesamtstruktur
Lembik
2015-09-12 11:48:04 UTC
view on stackexchange narkive permalink

Ich verwende scikit learn, um einen Random Forest-Klassifikator zu erstellen. Ich habe gehört, dass es möglich sein könnte, einen einzelnen Entscheidungsbaum aus einem zufälligen Wald zu erstellen. Der Vorschlag ist, dass der Entscheidungsbaum zwar kein so guter Klassifikator wie der Zufallswald ist, aber möglicherweise besser als der Entscheidungsbaum, den Sie mit der Standardmethode erhalten würden.

Ich war jedoch nicht in der Lage um diese Methode online zu finden. Existiert es?


Meine Frage ist nicht das Extrahieren eines der Entscheidungsbäume aus einem zufälligen Wald. Es wird nach einer Methode gefragt, mit der ein neuer Entscheidungsbaum aus dem gesamten Zufallswald erstellt werden kann, indem möglicherweise die Bäume im Zufallswald irgendwie kombiniert werden.

Es macht noch weniger Sinn.Warum sollten Sie einen einzelnen Baum aus einer RF erstellen, wenn Sie bereits eine RF haben?Verwenden Sie einfach die RF.Übrigens kombiniert RF bereits die Entscheidungsbäume (indem es ihre Vorhersagen mittelt).Aber vielleicht sind Sie immer noch unklar. Haben Sie also eine Referenz für "was Sie gehört haben"?Das würde Ihnen helfen, Antworten zu erhalten, die für das relevant sind, was Sie wirklich wollen.
Vielleicht möchten Sie eine Methode, um die * Entscheidungsregeln * einer RF zu extrahieren?Ich bin mir nicht sicher, ob dieses Regelwerk als Entscheidungsbaum dargestellt werden kann.
Der Schlüsselbegriff, den Sie benötigen, ist _Combined Multiple Models_ (CMM).Domingos 1997 beschreibt dies für das Absacken von C4.5-Regeln: http://homes.cs.washington.edu/~pedrod/papers/mlc97.pdf Es würde Spaß machen, ein Beispiel dafür mit Random Forests in `sklearn` zu haben.
Um klar zu sein, sind die meisten Algorithmen zur Erstellung von Entscheidungsbäumen gierige Algorithmen, die nicht den optimalen Entscheidungsbaum finden.Das OP schlägt vor, dass man nach dem Training eines RF Einblicke in die Zusammenstellung eines Baums gewinnen könnte, der leistungsfähiger ist als der, den man mit den typischen gierigen Algorithmen erhalten würde.Wie er erwähnt, sind seine Motivationen Interpretierbarkeit und Geschwindigkeit.
Meine Meinung: Eine zufällige Waldanpassung kann als ein großes Regelwerk angesehen werden, das auf ein kleineres Regelwerk reduziert werden kann, das eine bestimmte Zunahme der Verzerrung wie in diesem Artikel akzeptiert [10].http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4243592/ Aber ... wenn ein minimales Regelwerk noch eine große Anzahl sein muss, ist diese Reduzierung immer noch unverständlich.Wenn Sie den Wald mit wenig Voreingenommenheit auf einen kleinen Baum reduzieren können, sollten Sie häufig zunächst ein einfacheres Modell verwenden können.
Ich bin nicht der Meinung, dass Entscheidungsbäume einfach zu interpretieren sind - zumindest wenn sie eine realistische Größe haben.Blätter vier oder fünf Ebenen tiefer sind äußerst schwer zu erklären, da jede Entscheidung von allen Entscheidungen auf höherer Ebene abhängig ist.+1 zu Sorens Kommentar.
Sechs antworten:
Antoine
2015-09-14 14:46:09 UTC
view on stackexchange narkive permalink

Bäume in RF- und Einzelbäumen werden mit dem gleichen Algorithmus (normalerweise CART) erstellt. Der einzige kleine Unterschied besteht darin, dass ein einzelner Baum bei jeder Teilung alle Prädiktoren versucht, während Bäume in RF bei jeder Teilung nur eine zufällige Teilmenge der Prädiktoren versuchen (dies erzeugt unabhängige Bäume ). Außerdem basiert jeder Baum in einer RF auf einem Bootstrap-Beispiel der ursprünglichen Trainingsdaten und nicht auf dem vollständigen Trainingssatz. Dies macht jeden Baum in der Gesamtstruktur zu einem Experten für einige Domänen des Datenraums und an anderer Stelle schlecht.

Aus diesen Gründen ist es nicht sinnvoll, einen einzelnen Baum aus einer zufälligen Gesamtstruktur zu extrahieren, um dies zu tun Verwenden Sie es als Klassifikator. Abhängig von den Fachgebieten kann es zu besseren Ergebnissen führen als ein herkömmlicher Baum, der mit CART auf dem gesamten Datensatz erstellt wurde, oder viel schlimmer. Das, was einem RF ermöglicht, viel besser als ein einzelner Baum zu sein, ist, dass es viele dekorrelierte Bäume wachsen lässt und deren Ausgabe mittelt. Nur wenn das Expertengremium aus genügend Mitgliedern besteht (normalerweise zwischen 200 und 2000), wird die Varianz verringert. Jeder einzelne Baum eines RF wäre jedoch schwächer als ein einzelner Baum, der mit einem herkömmlichen WARENKORB erstellt wurde.

Sie können sicher einen Baum aus einer RF extrahieren, um ein Gefühl dafür zu bekommen, was im Wald vor sich geht (siehe den Link, den ich in meinem Kommentar oben angegeben habe). Verwenden Sie diesen einzelnen Baum nur nicht als Klassifikator.

Entschuldigung, ich denke meine Frage war nicht 100% klar.Ich frage nicht nach dem Extrahieren eines der Entscheidungsbäume aus der RF.Sondern über das Erstellen eines einzelnen Entscheidungsbaums aus der RF durch eine Methode.Ich stelle mir vor, dass dies die Kombination der Entscheidungsbäume in RF beinhalten würde, aber wie dies gemacht wird, ist der Punkt meiner Frage.
Die Hauptmotivation ist die Interpretierbarkeit.Ein Entscheidungsbaum sagt Ihnen etwas Einfaches und leicht Verständliches über Ihre Daten.Entscheidungsbäume von angemessener Größe lassen sich extrem schnell mit massiven Daten ausführen.
Sobald der RF trainiert ist, ist es auch sehr schnell, ihn zur Vorhersage zu verwenden.Und wenn Ihr Entscheidungsbaum durch "Kombinieren der Entscheidungsbäume in RF irgendwie" erstellt wird, müsste der RF ohnehin erst erstellt werden, oder?
Es ist wahr, dass Vorhersagen mit einer RF schnell sind, wenn auch nicht ganz schnell, wenn Sie die Mikrosekunden zählen.In meiner Situation würde ich die RF für einige Trainingsdaten erstellen und sie dann für zukünftige Daten ausführen, die möglicherweise viel größer sind.Aber wie gesagt, Interpretierbarkeit ist eine sehr attraktive Eigenschaft von Entscheidungsbäumen für meine Situation.
Sie können die [Variablenbedeutung] (https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp) aus einer zufälligen Gesamtstruktur extrahieren, die Ihnen zeigt, wie "wichtig" Ihre Variablen für Vorhersagen sind.Dies ist der erste Schritt, um eine Interpretation aus einer RF herauszuholen.
@Lembik Im Wesentlichen möchten Sie also von der Genauigkeit eines RF profitieren, ohne es gegen Interpretierbarkeit eintauschen zu müssen.Ich denke das ist einfach unmöglich.Sie können aus Ensemble-Lernmodellen wie RF, Boosting usw. nicht viel mehr Erkenntnisse gewinnen, als die Maßnahmen mit variabler Wichtigkeit bieten können.Ensembles sind von Natur aus Black Boxes (oder eher graue Boxen).
Nichts ist unmöglich, wenn wir nicht wissen, was getan werden könnte!Ich habe gehört, dass einige Unternehmen RF erfolgreich interpretierbarer machen.Sie sind jetzt "irgendwie" in der Lage, bei der Entscheidung zu erklären, welche Variable der Grund für diese Entscheidung ist und warum!Es ist nicht ganz klar wie CART, aber wir machen RF weniger schwarz!Das ist das gute Zeichen.
Abraham D Flaxman
2015-09-17 01:55:05 UTC
view on stackexchange narkive permalink

Vielleicht suchen Sie nach dem von Domingos in den 90er Jahren entwickelten Ansatz Kombinieren mehrerer Modelle (CMM). Details zur Verwendung mit einem umfassenden Ensemble von C4.5-Regeln finden Sie in seinem ICML-Artikel

Domingos, Pedro. "Wissenserwerb aus Beispielen über mehrere Modelle." In Proceedings of the Fourteenth International Conference on Machine Learning . 1997.

Der Pseudocode in Tabelle 1 ist jedoch nicht spezifisch für C4.5 in Beuteln: enter image description here

Um dies anzuwenden Zufällige Wälder, das Hauptproblem scheint zu sein, wie das zufällig generierte Beispiel $ \ overrightarrow {x} $ generiert wird. Hier ist ein Notizbuch, das eine Möglichkeit zeigt, dies mit sklearn zu tun.

Ich habe mich gefragt, welche Folgearbeiten an CMM durchgeführt wurden. und wenn jemand einen besseren Weg gefunden hat, um $ \ overrightarrow {x} $ zu generieren. Ich habe hier eine neue Frage dazu erstellt.

JohnRos
2015-09-20 15:11:34 UTC
view on stackexchange narkive permalink

Mit Ausnahme sehr unwahrscheinlicher Szenarien kann eine zufällige Waldvorhersage nicht durch einen einzelnen Baum dargestellt werden. Dies liegt daran, dass sie Prädiktoren in verschiedenen Hypothesenklassen lernen: Ein zufälliger Wald lernt Prädiktoren über den Raum linearer Baumkombinationen, einschließlich Prädiktoren, die keine Bäume sind. Anders ausgedrückt: Wälder lernen Prädiktoren im Bereich der Bäume.

Das heißt, es besteht die Hoffnung, dass es einen Baum gibt, der eine gute Annäherung an den Waldprädiktor darstellt. Eine schnelle und schmutzige Methode, diesen Baum zu finden, besteht darin, einen Baum an die Vorhersagen des Waldes anzupassen. Die Qualität seiner Vorhersagen hängt von der "Entfernung" vom besten Waldprädiktor bis zu seiner besten Baumnäherung ab.

Tchotchke
2015-09-14 19:30:09 UTC
view on stackexchange narkive permalink

Es sieht so aus, als würden Sie zwei Probleme ansprechen: 1. Interpretierbarkeit und 2. Effizienz der Vorhersage. Wie bereits in den obigen Kommentaren erwähnt, können Sie in Python variable Wichtigkeit extrahieren, sodass Punkt 1 angesprochen wird.

Um Punkt 2 anzusprechen, wenn Sie sich mit der Effizienz bis hinunter befassen In Mikrosekunden möchten Sie möglicherweise andere Algorithmen untersuchen, z. B. die logistische Regression, und die Leistung außerhalb der Stichprobe mit der von Random Forest generierten vergleichen. Wenn die Leistung nahezu gleichwertig ist, die logistische Regression jedoch viel schneller ist, können Sie sich für die logistische Regression entscheiden.

Wenn Sie Random Forest verwenden, lautet die kurze Antwort, dass Sie technisch könnte einen zufälligen Baum erstellen, indem ntree = 1 gesetzt wird, und es könnte eine anständige Vorhersage erzeugen, aber eine Sammlung von Bäumen ist viel besser als ein einzelner Baum. Es ist also nicht sinnvoll, nur einen Baum aus der Teilmenge der Bäume zu erstellen, es sei denn, Sie möchten die Leistung außerhalb der Stichprobe gegen Effizienz eintauschen.

Außerdem können Sie die Vorhersagen um beschleunigen ein Faktor von 10 oder mehr, indem nur eine Teilmenge der Bäume in der endgültigen Vorhersage verwendet wird. Wenn Sie 1500 Bäume trainieren, können Sie die Teilmenge auswählen, die am besten zur endgültigen Vorhersage beiträgt. Ich denke an etwas in der Art von Ensemble-Auswahl aus einem Bibliotheksmodell, bei dem jeder Baum in Ihrem Wald das Modell in Ihrem Ensemble wäre.

DaL
2015-09-20 13:39:05 UTC
view on stackexchange narkive permalink

Einer der Klassiker beim Kombinieren solcher Funktionen ist "Graphbasierte Algorithmen zur Manipulation boolescher Funktionen". Es hat über 3.000 Zitate. Sie können die Bäume nur als Sonderfall von Booleschen Funktionen behandeln.

Bitte beachten Sie, dass das Einzelbaummodell wahrscheinlich auch groß ist, wenn Ihr zufälliges Waldmodell groß ist.

Laurent Deborde
2019-03-24 20:39:56 UTC
view on stackexchange narkive permalink

Wie JohnRos oben sagt, können Sie tatsächlich nach einer globalen Einzelbaumnäherung von Random Forest suchen, indem Sie versuchen, einen einzelnen Baum an die Vorhersage des Random Forest an einer (sehr) großen Anzahl von Punkten anzupassen.Es kann für andere Black-Box-Modelle funktionieren.Es wird von [1] als "Orakel" -Ansatz für die globale Einzelbaumnäherung bezeichnet (da die Black Box als Orakel für den Einzelbaum verwendet wird). Wenn ich mich traue, habe ich hier ein paar Beispiele und weitere Erklärungen zu Github geladen: https://github.com/ljmdeb/GSTA

[1] Riccardo Guidotti, Anna Monreale, Salvatore Ruggieri, Franco Turini, Fosca Giannotti und Dino Pedreschi.2018. Ein Überblick über Methoden zur Erklärung von Black-Box-Modellen.ACM Comput.Surv.51, 5, Artikel 93 (August 2018), 42 Seiten.(insbesondere die Tabelle auf Seite 93:26)



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...