Gibt es ein theoretisches Problem bei der Mittelung von Regressionskoeffizienten zur Erstellung eines Modells?

12

Ich möchte ein Regressionsmodell erstellen, bei dem es sich um einen Durchschnitt mehrerer OLS-Modelle handelt, die jeweils auf einer Teilmenge der vollständigen Daten basieren. Die Idee dahinter basiert auf diesem Papier . Ich erstelle k Falten und erstelle k OLS-Modelle, die jeweils auf Daten ohne eine der Falten basieren. Ich mittle dann die Regressionskoeffizienten, um das endgültige Modell zu erhalten.

Dies erscheint mir ähnlich wie eine zufällige Waldregression, bei der mehrere Regressionsbäume erstellt und gemittelt werden. Die Leistung des gemittelten OLS-Modells scheint jedoch schlechter zu sein, als nur ein einziges OLS-Modell für die gesamten Daten zu erstellen. Meine Frage ist: Gibt es einen theoretischen Grund, warum die Mittelung mehrerer OLS-Modelle falsch oder unerwünscht ist? Können wir damit rechnen, dass mehrere OLS-Modelle gemittelt werden, um die Überanpassung zu verringern? Unten ist ein R-Beispiel.

#Load and prepare data
library(MASS)
data(Boston)
trn <- Boston[1:400,]
tst <- Boston[401:nrow(Boston),]

#Create function to build k averaging OLS model
lmave <- function(formula, data, k, ...){
  lmall <- lm(formula, data, ...)
  folds <- cut(seq(1, nrow(data)), breaks=k, labels=FALSE)
  for(i in 1:k){
    tstIdx <- which(folds==i, arr.ind = TRUE)
    tst <- data[tstIdx, ]
    trn <- data[-tstIdx, ]
    assign(paste0('lm', i), lm(formula, data = trn, ...))
  }

  coefs <- data.frame(lm1=numeric(length(lm1$coefficients)))
  for(i in 1:k){
    coefs[, paste0('lm', i)] <- get(paste0('lm', i))$coefficients
  }
  lmnames <- names(lmall$coefficients)
  lmall$coefficients <- rowMeans(coefs)
  names(lmall$coefficients) <- lmnames
  lmall$fitted.values <- predict(lmall, data)
  target <- trimws(gsub('~.*$', '', formula))
  lmall$residuals <- data[, target] - lmall$fitted.values

  return(lmall)
}

#Build OLS model on all trn data
olsfit <- lm(medv ~ ., data=trn)

#Build model averaging five OLS 
olsavefit <- lmave('medv ~ .', data=trn, k=5)

#Build random forest model
library(randomForest)
set.seed(10)
rffit <- randomForest(medv ~ ., data=trn)

#Get RMSE of predicted fits on tst
library(Metrics)
rmse(tst$medv, predict(olsfit, tst))
[1] 6.155792
rmse(tst$medv, predict(olsavefit, tst))
[1] 7.661 ##Performs worse than olsfit and rffit
rmse(tst$medv, predict(rffit, tst))
[1] 4.259403
Gaurav Bansal
quelle
2
Sie können versuchen, die mittleren Koeffizientenwerte anstelle der durchschnittlichen Koeffizientenwerte zu verwenden. Ich habe gesehen, dass diese Technik manchmal zu besseren Ergebnissen führen kann.
James Phillips
Es wird Ihnen wahrscheinlich keine Leistungssteigerung oder Leistungsreduzierung über die Anpassung bringen, aber es hat andere nützliche Anwendungen. Dieser Kerl verwendet, um den richtigen Trend für seine gestreamten Zeitreihendaten auszuwählen. Youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
Josh
Siehe auch diesen Beitrag, stats.stackexchange.com/q/68030/28746
Alecos Papadopoulos

Antworten:

13

kk

Überanpassung - Lineare Modelle sind nicht so anfällig für Überanpassungen wie beispielsweise Gradienten-Boosting-Maschinen. Dafür sorgt die Durchsetzung der Linearität. Wenn Sie eine sehr kleine Anzahl von Ausreißern haben, die Ihre OLS-Regressionslinie weit von der gewünschten Position entfernt haben, kann Ihr Ansatz den Schaden geringfügig - nur geringfügig - lindern, es gibt jedoch weitaus bessere Ansätze, um dieses Problem im Kontext von zu lösen Eine sehr kleine Anzahl von Ausreißern, z. B. robuste lineare Regression, oder einfaches Zeichnen der Daten, Identifizieren und anschließendes Entfernen der Ausreißer (vorausgesetzt, sie sind tatsächlich nicht repräsentativ für den Datenerzeugungsprozess, dessen Parameter Sie schätzen möchten.)

Bogenschütze
quelle
mit "outperform" meinen Sie, dass es bessere Schätzungen der Koeffizienten gibt oder dass es insgesamt besser ist als der k-fache Ansatz (ohne Ausreißer, wie Sie erwähnt haben)?
Arash Howaida
Es wird eine niedrigere MSE der Residuen haben als der k-fache Ansatz, was unter der Annahme, dass die funktionale Form des Modells korrekt ist, impliziert, dass es im Durchschnitt bessere Schätzungen der Koeffizienten hat und über den k-fachen Ansatz hinweg besser ist die Karte - es sei denn, Ihr spezifisches Problem weist darauf hin, dass ein anderes Kriterium, z. B. der Mittelwert des absoluten Fehlers, der MSE vorzuziehen ist.
Bogenschütze
1

Was ist mit einem Bootstrap? Erstellen Sie 100-1000 Wiederholungsproben mit einer Abtastrate von 100% unter Verwendung einer uneingeschränkten Zufallsstichprobe (Stichprobe mit Ersatz). Führen Sie die Modelle nach Replikation aus und ermitteln Sie den Median für jeden Regressionskoeffizienten. Oder probieren Sie den Mittelwert. Schauen Sie sich auch die Verteilung der einzelnen Koeffizienten an, um festzustellen, ob sich die Vorzeichen ändern und bei welchen kumulativen Verteilungswerten.

Jonas Bilenas
quelle