¿Hay algún problema teórico con promediar coeficientes de regresión para construir un modelo?

13

Quiero construir un modelo de regresión que sea un promedio de múltiples modelos OLS, cada uno basado en un subconjunto de datos completos. La idea detrás de esto se basa en este documento . Creo k pliegues y construyo k modelos OLS, cada uno con datos sin uno de los pliegues. Luego promedio los coeficientes de regresión para obtener el modelo final.

Esto me parece similar a algo como la regresión forestal aleatoria, en la que se construyen y promedian árboles de regresión múltiple. Sin embargo, el rendimiento del modelo OLS promedio parece peor que simplemente construir un modelo OLS en todos los datos. Mi pregunta es: ¿hay alguna razón teórica por la que promediar múltiples modelos OLS sea incorrecto o indeseable? ¿Podemos esperar promediar múltiples modelos OLS para reducir el sobreajuste? A continuación se muestra un ejemplo de R.

#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
fuente
2
Puede intentar usar los valores del coeficiente medio , en lugar de los valores del coeficiente promedio . He visto que esta técnica a veces puede dar mejores resultados.
James Phillips
Probablemente no le dará un aumento de rendimiento o reducirá el ajuste excesivo, pero tiene otras aplicaciones útiles. Este capítulo se utiliza para seleccionar la tendencia correcta para sus datos de series de tiempo transmitidos youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
josh
Ver también esta publicación, stats.stackexchange.com/q/68030/28746
Alecos Papadopoulos

Respuestas:

14

Dado que OLS minimiza el MSE de los residuos entre todos los estimadores lineales insesgados (según el teorema de Gauss-Markov), y que un promedio ponderado de estimadores lineales insesgados (por ejemplo, las funciones lineales estimadas de cada uno de sus pliegues) es en sí mismo un insesgado estimador lineal, debe ser que la OLS aplicada a todo el conjunto de datos superará el promedio ponderado de las regresiones lineales a menos que, por casualidad, las dos den resultados idénticos.kk

En cuanto al sobreajuste: los modelos lineales no son propensos a sobreajustar de la misma manera que, por ejemplo, las máquinas de aumento de gradiente. La aplicación de la linealidad se encarga de eso. Si tiene un número muy pequeño de valores atípicos que alejan su línea de regresión de OLS de donde debería estar, su enfoque puede mejorar levemente, solo ligeramente, el daño, pero existen enfoques muy superiores para tratar ese problema en el contexto de un número muy pequeño de valores atípicos, por ejemplo, una regresión lineal robusta, o simplemente trazar los datos, identificar y luego eliminar los valores atípicos (suponiendo que de hecho no sean representativos del proceso de generación de datos cuyos parámetros le interesan estimar).

jbowman
fuente
por "superar" ¿quiere decir que tendrá mejores estimaciones de los coeficientes o que será mejor que el enfoque kfold en todos los ámbitos (excluyendo los valores atípicos, como mencionó)?
Arash Howaida
Tendrá un MSE de los residuos más bajo que el enfoque k-fold, lo que implica, suponiendo que la forma funcional del modelo sea correcta, que en promedio tendrá mejores estimaciones de los coeficientes y será mejor que el enfoque k-fold en la placa, a menos que su problema específico indique que se prefiere un criterio diferente, por ejemplo, error absoluto medio, a MSE.
jbowman
1

¿Qué pasa con correr un bootstrap? Cree 100-1000 muestras replicadas con una tasa de muestreo del 100% utilizando un muestreo aleatorio sin restricciones (muestreo con reemplazo). Ejecute los modelos por réplica y obtenga la mediana para cada coeficiente de regresión. O prueba la media. También eche un vistazo y la distribución de cada coeficiente para ver si los signos cambian ya qué valores de distribución acumulativa.

Jonas Bilenas
fuente