Je veux construire un modèle de régression qui est une moyenne de plusieurs modèles OLS, chacun basé sur un sous-ensemble des données complètes. L'idée derrière cela est basée sur cet article . Je crée k plis et je crée k modèles OLS, chacun sur des données sans l'un des plis. Je fais ensuite la moyenne des coefficients de régression pour obtenir le modèle final.
Cela me semble similaire à quelque chose comme la régression aléatoire des forêts, dans laquelle plusieurs arbres de régression sont construits et moyennés. Cependant, les performances du modèle OLS moyenné semblent pires que de simplement construire un modèle OLS sur l'ensemble des données. Ma question est: existe-t-il une raison théorique pour laquelle la moyenne de plusieurs modèles OLS est erronée ou indésirable? Pouvons-nous nous attendre à ce que la moyenne de plusieurs modèles OLS réduise le sur-ajustement? Voici un exemple 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
la source
Réponses:
Étant donné que l'OLS minimise le MSE des résidus parmi tous les estimateurs linéaires sans biais (par le théorème de Gauss-Markov), et qu'une moyenne pondérée des estimateurs linéaires sans biais (par exemple, les fonctions linéaires estimées de chacun de vos plis) est elle-même sans biais estimateur linéaire, il faut que l'OLS appliqué à l'ensemble des données surperforme la moyenne pondérée des régressions linéaires à moins que, par hasard, les deux ne donnent des résultats identiques.kk k
En ce qui concerne le sur-ajustement - les modèles linéaires ne sont pas sujets au sur-ajustement de la même manière que, par exemple, les machines de renforcement de gradient le sont. L'application de la linéarité y veille. Si vous avez un très petit nombre de valeurs aberrantes qui tirent votre ligne de régression OLS loin de l'endroit où elle devrait être, votre approche peut légèrement - seulement légèrement - améliorer les dommages, mais il existe des approches bien supérieures pour traiter ce problème dans le contexte de un très petit nombre de valeurs aberrantes, par exemple, une régression linéaire robuste, ou simplement le traçage des données, l'identification, puis la suppression des valeurs aberrantes (en supposant qu'elles ne sont en effet pas représentatives du processus de génération de données dont vous souhaitez estimer les paramètres.)
la source
Qu'en est-il de l'exécution d'un bootstrap? Créez 100 à 1000 échantillons répliqués avec un taux d'échantillonnage de 100% en utilisant un échantillonnage aléatoire sans restriction (échantillonnage avec remplacement). Exécutez les modèles par répétition et obtenez la médiane de chaque coefficient de régression. Ou essayez la moyenne. Jetez également un œil et la distribution de chaque coefficient pour voir si les signes changent et à quelles valeurs de distribution cumulative.
la source