Verwendet rpart standardmäßig multivariate Splits?

8

Ich weiß, dass die rpartFunktion von R die Daten behält, die für die Implementierung einer multivariaten Aufteilung erforderlich sind, aber ich weiß nicht, ob tatsächlich multivariate Aufteilungen durchgeführt werden. Ich habe versucht, es online zu recherchieren, indem ich mir die rpartDokumente angesehen habe, aber ich sehe keine Informationen darüber, dass es dies kann oder tut. Weiß jemand sicher?

Chubbsondubs
quelle
Was genau meinen Sie mit multivariater Aufteilung? Multivariater Test Welches Attribut sollte für Split oder Split verwendet werden, basierend auf einer Funktion weniger Attribute?
Dies ist eine Aufteilung, die mehr als eine Variable verwendet. Geometrisch bedeutet dies eine Teilung entlang einer Hyperebene und nicht entlang einer Ebene senkrecht zu einer der Achsen.
Chubbsondubs

Antworten:

13

Rpart bietet nur univariate Teilungen. Ich glaube, basierend auf Ihrer Frage, dass Sie den Unterschied zwischen einer univariaten Partitionierungsmethode und einer multivariaten Partitionierungsmethode nicht vollständig kennen. Ich habe mein Bestes getan, um dies unten zu erklären, einige Referenzen für die weitere Forschung bereitzustellen und einige R-Pakete zur Implementierung dieser Methoden vorzuschlagen.

Rpart ist ein baumbasierter Klassifikator, der eine rekursive Partitionierung verwendet. Bei Partitionierungsmethoden müssen Sie die Punkte in Ihren Daten definieren, an denen eine Aufteilung vorgenommen werden soll. Der rpart-Algorithmus in R ermittelt dazu die Variable und den Punkt, der den RSS am besten aufteilt (und somit reduziert). Da die Teilungen jeweils nur entlang einer Variablen erfolgen, handelt es sich um univariate Teilungen. Ein multivariater Split wird normalerweise als gleichzeitige Partitionierung entlang mehrerer Achsen (daher multivariat) definiert, dh der erste Teilknoten kann sich entlang des Alters> 35 teilen, der zweite Knoten kann sich entlang des Einkommens> 25.000 teilen und der dritte Knoten kann sich entlang der Städte westlich von teilen der Mississippi. Der zweite und dritte Knoten werden in kleinere Teilmengen der Gesamtdaten aufgeteilt, sodass im zweiten Knoten das Einkommenskriterium den RSS am besten nur für Personen mit einem Alter von über 35 Jahren aufteilt. Dies gilt nicht für Beobachtungen, die in diesem Knoten nicht gefunden wurden. Gleiches gilt für das Kriterium Städte. Dies kann so lange fortgesetzt werden, bis für jede Beobachtung in Ihrem Datensatz ein Knoten vorhanden ist (rpart verwendet zusätzlich zu einem Kriterium für die minimale Knotengröße eine Funktion für die minimale Bucket-Größe und einen cp-Parameter, der das Minimum darstellt, um das sich der r-Quadrat-Wert erhöhen muss weiter montieren).

Eine multivariate Methode, wie die Methode zur Induktion von Patientenregeln (das Prim-Paket in R), würde gleichzeitig aufgeteilt, indem beispielsweise Alle Beobachtungen mit einem Einkommen von mehr als 22.000, Alter> 32 und Städte westlich von Atlanta ausgewählt würden. Der Grund, warum die Anpassung unterschiedlich sein kann, liegt darin, dass die Berechnung für die Anpassung multivariat statt univariat ist. Die Anpassung dieser drei Kriterien wird basierend auf der gleichzeitigen Anpassung der drei Variablen an alle Beobachtungen berechnet, die dieses Kriterium erfüllen, anstatt iterativ zu partitionieren univariate Teilungen (wie bei rpart).

Es gibt unterschiedliche Ansichten hinsichtlich der Wirksamkeit von univariaten gegenüber multivariaten Partitionierungsmethoden. Im Allgemeinen habe ich in der Praxis gesehen, dass die meisten Menschen zu Erklärungszwecken eine univariate Partitionierung (wie z. B. rpart) bevorzugen (sie wird nur zur Vorhersage verwendet, wenn ein Problem behandelt wird, bei dem die Struktur sehr gut definiert ist und die Variation zwischen den Variablen fair ist konstant, deshalb werden diese häufig in der Medizin verwendet). Univariate Baummodelle werden normalerweise mit Ensemble-Lernenden kombiniert, wenn sie für die Vorhersage verwendet werden (dh ein zufälliger Wald). Menschen, die multivariate Partitionierung oder Clustering verwenden (was sehr eng mit multivariater Partitionierung zusammenhängt), tun dies häufig bei komplexen Problemen, bei denen univariate Methoden sehr schlecht passen, und zwar hauptsächlich zur Vorhersage oder zur Gruppierung von Beobachtungen in Kategorien.

Ich kann Julian Faraways Buch Extending the Linear Model with R nur empfehlen. Kapitel 13 widmet sich ausschließlich der Verwendung von Bäumen (alle univariat). Wenn Sie sich weiter für multivariate Methoden interessieren, finden Sie Elemente des statistischen Lernens von Hastie et. bietet einen hervorragenden Überblick über viele multivariate Methoden, einschließlich PRIM (obwohl Friedman in Stanford seinen Originalartikel über die Methode auf seiner Website veröffentlicht hat) sowie Clustering-Methoden.

In Bezug auf R-Pakete zur Verwendung dieser Methoden glaube ich, dass Sie das rpart-Paket bereits verwenden, und ich habe das prim-Paket oben erwähnt. Es gibt verschiedene integrierte Clustering-Routinen, und ich mag das Party-Paket, das von einer anderen Person in diesem Thread erwähnt wird, sehr, da es bedingte Inferenz im Entscheidungsbaum-Erstellungsprozess implementiert. Mit dem optpart-Paket können Sie eine multivariate Partitionierung durchführen, und mit dem mvpart-Paket (auch von einer anderen Person erwähnt) können Sie multivariate rpart-Bäume ausführen. Ich persönlich bevorzuge jedoch die Verwendung von partDSA, mit der Sie Knoten weiter unten in Ihrem Baum kombinieren können, um eine Partitionierung ähnlicher Elemente zu verhindern Beobachtungen, wenn ich der Meinung bin, dass Part und Party für meine Modellierungszwecke nicht angemessen sind.

Hinweis: In meinem Beispiel für einen Teilbaum in Absatz 2 beschreibe ich, wie die Partitionierung mit Knotennummern funktioniert. Wenn man diesen Baum zeichnen würde, würde die Partitionierung nach links fortgesetzt, wenn die Regel für die Aufteilung wahr wäre, jedoch in RI Ich glaube, die Aufteilung geht tatsächlich nach rechts, wenn die Regel wahr ist.

Adam
quelle
Adam tolle Antwort. Genau das habe ich gefragt. Sie haben jedoch ein paar Informationen hinzugefügt, zu denen ich nur schwer mehr Informationen finden konnte. Das CP-Stoppkriterium der Malve. Ich habe den R-Quellcode durchgesehen, aber es ist zu schwer herauszufinden, wie sie aufhören wollen. Ich habe ungefähr eine Idee, aber ich brauche ein Papier oder eine Diskussion darüber, wie es funktioniert, damit ich die Implementierung abschließen kann. Haben Sie Informationen dazu?
Chubbsondubs
Also habe ich das Referenzhandbuch für Teile überprüft und anscheinend war ich falsch. Während eines der Kriterien für das Anhalten in rpart "cp" heißt, ist dies die Abkürzung für "Komplexitätsparameter" und lediglich der Mindestbetrag, um den r ^ 2 erhöht werden muss, um eine bestimmte Aufteilung zu verfolgen. Ich habe meinen Beitrag oben korrigiert, um dies widerzuspiegeln. Das Fehlen statistischer Tests bei der Aufteilung von Regeln ist einer der Gründe, warum ich das Party-Paket gegenüber dem rpart-Paket verwende. Mit dem Party-Paket implementiert die Standardmethode einen Bonferroni-korrigierten p-Wert als Stoppkriterium (Standard p = 0,05). Einzelheiten finden Sie in der Vignette.
Adam
Ich bin der Meinung, dass die Tatsache, dass rpart kein Stoppkriterium verwendet, eher ein Aktivposten als eine Verbindlichkeit ist. Ein Split scheint wertlos zu sein und dennoch den Weg für nachfolgende Splits weiter unten im Baum freizumachen, was sehr bedeutsam sein kann. Eine in rpart implementierte Richtlinie "Wachsen, dann beschneiden" vermeidet ein vorzeitiges Anhalten und scheint mir ein vernünftiger Ansatz zu sein.
F. Tusell
@Tusell, das ist die ganze Idee hinter CARTs Forschung, dass die Auswahl eines Stoppkriteriums nicht optimal ist. Wachsen Sie einen vollen Baum und schneiden Sie dann mit dem Schnitt einen optimalen Baum. Wie @Adam jedoch betont hat, funktioniert rpart nicht genau so. Ein Teil davon ist meiner Meinung nach eine Optimierung für große Datenmengen. Wenn ein Teilbaum frühzeitig abgeschnitten werden kann, ohne ihn zu untersuchen, kann dies viel mehr CPU-Zeit sparen als eine vollständige Erweiterungs- und Bereinigungssitzung. Wie Sie jedoch betonen, bedeutet dies, dass einige Bäume nicht vollständig erforscht sind und Sie den cp-Parameter anpassen müssen, damit er funktioniert.
Chubbsondubs
@Adam wird R ^ 2 aus dem Testdatensatz berechnet oder wird der Bereinigungssatz zur Berechnung der MSE verwendet?
Chubbsondubs
1

So schnell ich weiß, tut es nicht; habe es aber schon eine Weile nicht mehr benutzt. Wenn ich Sie gut verstehe, sollten Sie sich stattdessen das Paket mvpart ansehen .

F. Tusell
quelle
1

Ihre Terminologie ist verwirrend. Meinst du Splits mit mehr als einer Variablen oder einem Baum, der eine multivariate (im Gegensatz zu einer univariaten) Antwort zulässt? Letzteres nehme ich an.

F. Tusell hat Sie auf das mvpart-Paket hingewiesen, das ein multivariates Kriterium für die Knotenverunreinigung hinzufügt, das für alle möglichen Teilungen in jeder Phase der Baumbildung bewertet wird.

Eine Alternative ist das Party- Paket, dessen Funktion ctree()multivariate Antworten verarbeiten kann.

Gavin Simpson
quelle
Eigentlich beziehe ich mich auf Splits mit mehr als einer Variablen. Wenn Sie das CART-Buch von Leo Breiman lesen, wird dies als Multi-Variate-Split bezeichnet, im Gegensatz zu Uni-Variate, bei dem nur eine Variable berücksichtigt wird. Danke für deine Antwort.
Chubbsondubs
1
Alle Variablen werden berücksichtigt rpart, die binäre Aufteilung wird gebildet, indem alle Variablen und alle möglichen Aufteilungsstellen innerhalb jeder Variablen durchsucht werden. rpartspeichert auch Informationen über Ersatzaufteilungen, die verwendet werden können, wenn Daten in Ihren Variablen fehlen. Hilft das?
Gavin Simpson
Wenn Sie Teilungen meinen, die eine Kombination aus zwei oder mehr Variablen sind, nein, rpartbehandelt diesen Fall nicht.
Gavin Simpson
1

Multivariate Splits, wie sie im CART-Buch definiert sind, sind in nicht implementiert rpart. Das CART-Softwarepaket von Salford Systems verfügt über diese Funktion, AFAIK verwendet jedoch einen proprietären Algorithmus, der von Breiman, Friedman et al.

Hong Ooi
quelle