Existe algum problema teórico com a média dos coeficientes de regressão para construir um modelo?

12

Eu quero criar um modelo de regressão que seja uma média de vários modelos OLS, cada um com base em um subconjunto dos dados completos. A idéia por trás disso é baseada neste artigo . Crio k folds e construo k modelos OLS, cada um com dados sem uma das dobras. Em seguida, faço a média dos coeficientes de regressão para obter o modelo final.

Isso me parece semelhante a algo como regressão aleatória da floresta, na qual várias árvores de regressão são construídas e calculadas a média. No entanto, o desempenho do modelo OLS médio parece pior do que simplesmente construir um modelo OLS em todos os dados. Minha pergunta é: existe uma razão teórica para a média de vários modelos OLS estar errada ou indesejável? Podemos esperar que a média de vários modelos OLS reduza a super adaptação? Abaixo está um exemplo 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
fonte
2
Você pode tentar usar os valores do coeficiente mediano , em vez dos valores médios do coeficiente. Vi que essa técnica às vezes pode produzir melhores resultados.
James Phillips
Provavelmente, isso não lhe dará um aumento no desempenho ou reduzirá o excesso de ajuste, mas possui outros aplicativos úteis. Este capítulo usa para selecionar a tendência correta para os dados transmitidos das séries temporais youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
josh
Veja também este post, stats.stackexchange.com/q/68030/28746
Alecos Papadopoulos

Respostas:

13

kk

Quanto à super adaptação - os modelos lineares não são propensos à super adaptação da mesma maneira que, por exemplo, as máquinas de reforço de gradiente. A imposição da linearidade cuida disso. Se você tiver um número muito pequeno de discrepantes que puxam sua linha de regressão OLS para longe de onde deveria estar, sua abordagem pode melhorar um pouco - apenas um pouco - o dano, mas existem abordagens muito superiores para lidar com esse problema no contexto de um número muito pequeno de discrepantes, por exemplo, regressão linear robusta ou simplesmente plotar os dados, identificando e removendo os discrepantes (supondo que eles realmente não sejam representativos do processo de geração de dados cujos parâmetros você está interessado em estimar).

jbowman
fonte
com "desempenho superior", você quer dizer que ele terá melhores estimativas dos coeficientes ou que será melhor do que a abordagem kfold em toda a linha (excluindo valores extremos, como você mencionou)?
Arash Howaida 02/07/2018
Ela terá um MSE menor dos resíduos do que a abordagem com dobras k, o que implica, assumindo que a forma funcional do modelo esteja correta, que, em média, ele terá melhores estimativas dos coeficientes e será melhor do que a abordagem com dobras k o conselho - a menos que seu problema específico indique que um critério diferente, por exemplo, erro absoluto médio, deve ser preferido ao MSE.
jbowman
1

Que tal executar um bootstrap? Crie 100-1000 amostras replicadas com uma taxa de amostragem de 100% usando amostragem aleatória irrestrita (amostragem com substituição). Execute os modelos por replicação e obtenha a mediana para cada coeficiente de regressão. Ou tente a média. Observe também a distribuição de cada coeficiente para ver se os sinais mudam e quais valores de distribuição cumulativa.

Jonas Bilenas
fonte