Vergleichen Sie das R-Quadrat aus zwei verschiedenen Random Forest-Modellen


10

Ich verwende das randomForest-Paket in R, um ein zufälliges Waldmodell zu entwickeln und zu versuchen, ein kontinuierliches Ergebnis in einem "breiten" Datensatz mit mehr Prädiktoren als Stichproben zu erklären.

Insbesondere passe ich ein RF-Modell an, mit dem das Verfahren aus einem Satz von ~ 75 Prädiktorvariablen auswählen kann, die ich für wichtig halte.

Ich teste, wie gut dieses Modell das tatsächliche Ergebnis für einen reservierten Testsatz vorhersagt, indem ich den hier zuvor beschriebenen Ansatz verwende , nämlich

... oder in R:

1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

Aber jetzt habe ich zusätzliche ~ 25 Prädiktorvariablen, die ich hinzufügen kann. Bei Verwendung des Satzes von ~ 100 Prädiktoren ist der R² höher. Ich möchte dies statistisch testen, mit anderen Worten, wenn der Satz von ~ 100 Prädiktoren verwendet wird, ist der Modelltest beim Testen von Daten signifikant besser als die Modellanpassung mit ~ 75 Prädiktoren. Das heißt, ist der R² aus dem Testen des RF-Modells, der auf den vollständigen Datensatz passt, signifikant höher als der R² aus dem Testen des RF-Modells auf den reduzierten Datensatz.

Dies ist für mich wichtig zu testen, da es sich um Pilotdaten handelt und es teuer war, diese zusätzlichen 25 Prädiktoren zu erhalten, und ich muss wissen, ob ich für die Messung dieser Prädiktoren in einer größeren Folgestudie zahlen muss.

Ich versuche, mir einen Resampling- / Permutationsansatz auszudenken, aber mir fällt nichts ein.

Antworten:


8

R2

Siehe Seite 3 der Caret-Vignette (auch im vollständigen Referenzhandbuch ).


Ich stimme zu, mit Ausnahme Ihrer Auslassung, dass OP R-Quadrat angepasst verwenden sollte, da dies das ist, wofür es entwickelt wurde. Die Modelle haben das gleiche Y, aber unterschiedliche Prädiktorsätze. Daher ist eine Anpassung des R-Quadrats erforderlich, um den Unterschied in den verbrauchten Freiheitsgraden / der Modellkomplexität zu bestrafen. Das andere Problem, das ich sehe, ist möglicherweise ein Problem mit der Stichprobengröße. OP würde eine MASSIVE Stichprobengröße erfordern, um irgendeine echte Hoffnung zu haben, dass dies nicht nur eine Überanpassung ist, selbst mit Lebenslauf.
LSC

@LSC Ich würde sagen, wenn of einen zusätzlichen Datensatz enthält (der nicht zur Auswahl verwendet wird), könnte R2 ohne Anpassung verwendet werden, da es sich nur um normalisierten RMSE handelt. Ich bin damit einverstanden, dass sie dafür einen ziemlich großen Datensatz benötigen würden.
Zach

Neue Daten oder alte, alles andere Konstante, die 100 Terme in ein Modell gegen 25 setzen, haben ein höheres unangepasstes R-Quadrat im Vergleich zum R-Quadrat aus dem 25-Prädiktor-Modell. Dies ist leicht zu erkennen, wenn die Summe der quadratischen Fehler zwischen den beiden berechnet wird (mehr Terme sind niedrigere SSE, alle anderen gleich). Ich denke, die Leute vergessen oft, dass mehr Begriffe niemals das R-Quadrat verringern, aber wenn sie im Verhältnis zu ihrem Wert stinken, können sie das angepasste R-Quadrat verringern, was eine bessere Maßnahme ist, um nach dem Geld zu suchen.
LSC

"Mehr Terme verringern niemals das R-Quadrat" <- Diese Aussage ist falsch, wenn R2 aus der Stichprobe berechnet wird.
Zach

Wie ich bereits erwähnte, weise ich darauf hin, weil sich viele Leute, die diese Fragen stellen, überhaupt nicht an diese Idee erinnern. Ich denke, es ist wichtig zu verstehen, warum dies in der Stichprobe zutrifft und möglicherweise keine neuen Daten enthält, um zu verstehen, was und wie etwas in der ursprünglichen Gleichung optimiert wird.
LSC

4

R2

Die Nebenoption besteht darin, alle relevanten Feature-Auswahlen zu verwenden. Dies würde Ihnen sagen, welche Attribute eine Chance haben, für die Klassifizierung von erheblichem Nutzen zu sein. Daher sind diese teuren Attribute ihren Preis wert. Dies kann beispielsweise mit einem RF-Wrapper, Boruta, erfolgen .


Für einen gepaarten Test gehe ich davon aus, dass die beiden Modelle auf die gleichen Falten passen. Damit die k Zeilen der Matrix die Falten sind und die beiden Spalten Modell 1 und Modell 2 sind?
B_Miner

@B_Miner Genau.

1

Möglicherweise möchten Sie eher in praktischer als in statistischer Signifikanz (oder in beidem) denken. Mit genügend Daten können Sie statistisch wichtige Dinge finden, die keinen wirklichen Einfluss auf Ihre Nutzung haben. Ich erinnere mich, dass ich ein Modell einmal analysiert habe, bei dem die 5-Wege-Wechselwirkungen statistisch signifikant waren, aber als die Vorhersagen des Modells, die alles bis zu den 5-Wege-Wechselwirkungen umfassten, mit den Vorhersagen eines Modells verglichen wurden, das nur 2-Wege-Wechselwirkungen und Haupteffekte enthielt Der größte Unterschied war weniger als 1 Person (die Antwort war die Anzahl der Personen und alle interessanten Werte waren von 0 entfernt). Die zusätzliche Komplexität hat sich also nicht gelohnt. Schauen Sie sich also die Unterschiede in Ihren Vorhersagen an, um festzustellen, ob die Unterschiede ausreichen, um die zusätzlichen Kosten zu rechtfertigen. wenn nicht, warum dann überhaupt nach der statistischen Signifikanz suchen? Wenn die Unterschiede groß genug sind, um die Kosten zu rechtfertigen, wenn sie real sind, dann stimme ich den anderen Vorschlägen für die Verwendung der Kreuzvalidierung zu.


1

R2

library(randomForest)
data(iris)
set.seed(42)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# with species
model1 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length +
   Petal.Width + Species, data = trainset)
# without species
model2 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length + 
   Petal.Width, data = trainset)

pred1 <- predict(model1, testset[, -1])
pred2 <- predict(model2, testset[, -1])

y <- testset[, 1]
n <- length(y)

# psi is the mean squared prediction error (MSPE) estimate
# sigma2 is the estimate of the variance of the MSPE
psi1 <- mean((y - pred1)^2)
sigma21 <- 1/n * var((y - pred1)^2) 
# 95% CI:
c(psi1 - 1.96 * sqrt(sigma21), psi1, psi1 + 1.96 * sqrt(sigma21))

psi2 <- mean((y - pred2)^2)
sigma22 <- 1/n * var((y - pred2)^2) 
# 95% CI:
c(psi2 - 1.96 * sqrt(sigma22), psi2, psi2 + 1.96 * sqrt(sigma22))

Die Methode kann auch erweitert werden, um innerhalb der Kreuzvalidierung zu arbeiten (nicht nur Stichprobenaufteilung wie oben gezeigt).


0

Da Sie bereits randomForestnach der Kreuzvalidierung verwenden, können Sie die Berechnung der Prädiktor-Wichtigkeitswerte durch die ausgewählte Anpassung ausgeben.

> require(randomForest)
> rf.fit = randomForest(Species~.,data=iris,importance=TRUE)
> rf.fit$importance
                  setosa   versicolor   virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.036340893  0.021013369 0.032345037          0.030708732         9.444598
Sepal.Width  0.005399468 -0.002131412 0.007499143          0.003577089         2.046650
Petal.Length 0.319872296  0.297426025 0.290278930          0.299795555        42.494972
Petal.Width  0.343995456  0.309455331 0.277644128          0.307843300        45.286720

0

Ich sehe, dass diese Frage vor langer Zeit gestellt wurde; Es gibt jedoch noch keine Antwort auf die erheblichen Mängel und Missverständnisse in der Frage.

Bitte beachten Sie:

  1. Sie geben an, dass R ^ 2 = ESS / TSS = 1 - RSS / TSS. Dies gilt nur in einem linearen Kontext. Die Gleichheit TSS = RSS + ESS gilt nur bei linearer Regression mit Achsenabschnitt. Daher können Sie diese Definitionen für zufällige Gesamtstrukturen nicht austauschbar verwenden. Aus diesem Grund sind RMSE und ähnliche eher typische Verlustfunktionen.

  2. Noch wichtiger für statistische Zwecke: R ^ 2 folgt einer unbekannten Verteilung (auch in der linearen Einstellung). Das heißt, das Testen einer Hypothese mit statistischer Signifikanz unter Verwendung von R ^ 2 ist nicht so einfach. Die von Zach erwähnte Kreuzvalidierung ist eine gute Wahl.

Was user88 Antwort: Kreuzvalidierung mit Wilcoxon - Test ist ein gültiger Ansatz. In einem kürzlich erschienenen Artikel werden der von Wilcoxon signierte Ränge-Test und der Friedman-Test zum Vergleich verschiedener Methoden und Algorithmen verwendet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.