Muss ich Daten für randomForest (R-Paket) normalisieren (oder skalieren)?

76

Ich mache eine Regressionsaufgabe - muss ich Daten für randomForest (R-Paket) normalisieren (oder skalieren)? Und ist es notwendig, auch Zielwerte zu skalieren? Und wenn - ich die Skalierungsfunktion aus dem Caret-Paket verwenden möchte, aber nicht gefunden habe, wie ich Daten zurückerhalten kann (entkalken, denormalisieren). Kennen Sie keine andere Funktion (in einem Paket), die bei der Normalisierung / Denormalisierung hilfreich ist? Danke, Milan

gutompf
quelle
7
Die scaleFunktion gehört nicht dazu caret. Es ist Teil des "Basis" R-Pakets. Es gibt eine unscaleFunktion, die die Transformation umkehrt.
IRTFM

Antworten:

86

Nein, für zufällige Gesamtstrukturen ist keine Skalierung erforderlich.

  • Die Natur von RF ist so, dass Konvergenz- und numerische Präzisionsprobleme, die manchmal die in der logistischen und linearen Regression verwendeten Algorithmen sowie in neuronalen Netzen auslösen können, nicht so wichtig sind. Aus diesem Grund müssen Sie Variablen nicht wie bei einem NN in eine gemeinsame Skala umwandeln.

  • Sie erhalten kein Analogon zu einem Regressionskoeffizienten, der die Beziehung zwischen jeder Prädiktorvariablen und der Antwort misst. Aus diesem Grund müssen Sie auch nicht überlegen, wie solche Koeffizienten zu interpretieren sind, was von variablen Messskalen beeinflusst wird.

Hong Ooi
quelle
24
Eine Skalierung ist nicht nur nicht erforderlich, sondern kann auch die nichtlineare Natur des Modells glätten. Wenn Sie komplexe nichtlineare Beziehungen im p-dimensionalen Raum haben und Ihre Daten transformiert haben, werden diese Nichtlinearitäten bei der Rücktransformation y nicht in der Schätzung berücksichtigt.
Jeffrey Evans
11
@JeffreyEvans bitte bitte bitte kombiniere deine tollen Kommentare und poste sie als Antwort. Andernfalls wird dies einfach unter jedermanns Radar geraten. Sie sagen "Nein, es ist nicht nur nicht notwendig, es ist aus folgenden Gründen schädlich: a) b) c) ..."
smci
2
Ich denke, er meint, dass es nicht notwendig ist, aber nicht schaden wird, wenn Sie alle Sätze (Zug, Test) mit derselben Funktion skalieren, die vom Trainingssatz definiert wird.
Keith
Ratet mal, was im folgenden Beispiel passieren wird, wenn Sie 20 prädiktive Merkmale haben, von denen 15 im Bereich [0; 10] und die anderen 5
Danylo Zherebetskyy
Kommt es nicht darauf an - wenn die Skalierung zwischen Variablen stark unterschiedlich ist, ermöglichen skalierte Features dann möglicherweise nicht kürzere Bäume? Wenn die Min-Max-Norm über der Vektornorm verwendet wird, unterscheidet sich dann nicht auch die Topologie des Netzwerks?
user3546025
17

Die Skalierung wird durchgeführt, um Daten zu normalisieren, sodass einem bestimmten Feature keine Priorität eingeräumt wird. Die Rolle der Skalierung ist vor allem bei entfernungsbasierten Algorithmen wichtig, die eine euklidische Entfernung erfordern.

Random Forest ist ein baumbasiertes Modell und erfordert daher keine Feature-Skalierung.

Dieser Algorithmus erfordert eine Partitionierung, auch wenn Sie Normalisierung anwenden, dann wäre auch> das Ergebnis dasselbe.

Shaurya Uppal
quelle
4

Ich sehe weder auf der Hilfeseite noch in der Vignette Vorschläge, die darauf hinweisen, dass eine Skalierung für eine Regressionsvariable in erforderlich ist randomForest. In diesem Beispiel bei Stats Exchange wird auch keine Skalierung verwendet.

Kopie meines Kommentars: Die scaleFunktion gehört nicht zu pkg: caret. Es ist Teil des "Basis" R-Pakets. Es gibt eine unscaleFunktion in Paketen GRT und DMwR , die die Umwandlung rückgängig zu machen, oder Sie können einfach multiplizieren mit der Skala Attribute und dann die Mittelattributwerte hinzuzufügen.

Ihre Vorstellung, warum "Normalisierung" durchgeführt werden muss, erfordert möglicherweise eine kritische Prüfung. Der Test der Nichtnormalität wird erst nach Abschluss der Regressionen benötigt und ist möglicherweise überhaupt nicht erforderlich, wenn bei der Methode der Anpassungsgüte keine Normalitätsannahmen vorliegen. Also: Warum fragst du? Die Suche in SO und Stats.Exchange kann sich als nützlich erweisen: Zitat # 1 ; Zitat # 2 ; Zitat Nr. 3

Die boxcoxFunktion ist eine häufig verwendete Transformation, wenn man keine Vorkenntnisse darüber hat, wie eine Verteilung sein sollte, und wenn man wirklich eine Transformation durchführen muss. Es gibt viele Fallstricke bei der Anwendung von Transformationen. Die Tatsache, dass Sie die Frage stellen müssen, wirft Bedenken auf, dass Sie möglicherweise weitere Konsultationen oder Selbststudien benötigen.

IRTFM
quelle
Ich verstehe Normalisierung in meiner Frage als einfache lineare Transformation von Daten in zB Intervall 0-1. Dies sollte zB bei Verwendung neuronaler Netze erfolgen. Also, was ich brauchte, als ich fragte, wurde von Hong Ooi beantwortet. Ich fand die von Ihnen vorgeschlagene Funktion nicht skaliert. Aber danke für deine Mühe.
Gutompf
Zitate zur Beantwortung Ihrer zweiten Frage hinzugefügt.
IRTFM
Ich entschuldige mich - ich habe übersehen, dass unscale Pakete grt und DMwR sind
gutompf
Keine Entschuldigung nötig. Ich hatte ein "falsches Gedächtnis" hergestellt, das sich in "Basis" befand und auf der Hilfeseite für erwähnt wurde scale. Ihre Folgefrage war hilfreich, um den Rekord zu korrigieren.
IRTFM
2
@ BondedDust: tolle Antwort, aber der letzte Absatz kommt irgendwie böse raus. Vielleicht umformulieren "Sie müssen lernen, wann Sie eine Transformation durchführen und nicht, sowohl für Prädiktoren als auch für Antwortvariablen"
smci
2

Ratet mal, was wird im folgenden Beispiel passieren? Stellen Sie sich vor, Sie haben 20 Vorhersagemerkmale, von denen 18 im Bereich [0; 10] und die anderen 2 im Bereich [0; 1.000.000] liegen (aus einem Beispiel aus der Praxis). Frage 1: Welche Funktionsbedeutungen werden von Random Forest zugewiesen? Frage 2: Was passiert mit der Feature-Wichtigkeit nach der Skalierung der 2 Features mit großer Reichweite?

Skalierung ist wichtig. Random Forest reagiert weniger empfindlich auf die Skalierung als andere Algorithmen und kann mit "grob" skalierten Features arbeiten.

Danylo Zherebetskyy
quelle
1
Zufällige Wälder müssen nicht skaliert werden
Patrick Stetz
6
Wenn nur Vorhersagen erforderlich sind, ist es normal, dass keine Skalierung erforderlich ist (Entscheidungsbäume sind für lineare Transformationen unveränderlich). Wenn jedoch "Merkmalsbedeutung" oder "Merkmalsauswahl" oder "Merkmal usw." werden in Betracht gezogen, dann ergeben skalierte und nicht skalierte Daten unterschiedliche "merkmalsbezogene" Ergebnisse. Siehe zum Beispiel: 1) Strobl et al. 2) explained.ai/rf-importance/index.html
Danylo Zherebetskyy
1

Wenn Sie dem Datensatz Interaktionen hinzufügen möchten - das heißt, eine neue Variable ist eine Funktion anderer Variablen (normalerweise einfache Multiplikation) und Sie nicht spüren, wofür diese neue Variable steht (kann sie nicht interpretieren), sollten Sie diese Variable mit berechnen skalierte Variablen.

Qbik
quelle
6
Random Forests ist ein nichtlineares Modell, und die Art der Knotenaufteilungsstatistik berücksichtigt hochdimensionale Interaktionen. Daher ist es unnötig und unerwünscht, Interaktionsvariablen zu definieren.
Jeffrey Evans
0

Random Forest verwendet von information gain / gini coefficientNatur aus Anwendungen, die im Gegensatz zu vielen anderen Modellen des maschinellen Lernens (wie z. B. k-means Clustering, PCA usw.) nicht von der Skalierung betroffen sind. Es könnte jedoch "wohl" die Konvergenz beschleunigen, wie in anderen Antworten angedeutet

Vaibhav
quelle