Czy istnieje jakiś problem teoretyczny ze współczynnikami regresji uśredniającej w celu zbudowania modelu?

13

Chcę zbudować model regresji, który jest średnią z wielu modeli OLS, każdy oparty na podzbiorze pełnych danych. Idea tego opiera się na tym dokumencie . Tworzę k fałd i buduję k modeli OLS, każdy na danych bez jednego z fałd. Następnie uśredniam współczynniki regresji, aby uzyskać ostateczny model.

Uderza mnie to podobnie do przypadkowej regresji leśnej, w której drzewa regresji są budowane i uśredniane. Wydajność uśrednionego modelu OLS wydaje się jednak gorsza niż po prostu budowanie jednego modelu OLS na całych danych. Moje pytanie brzmi: czy istnieje teoretyczny powód, dla którego uśrednianie wielu modeli OLS jest błędne lub niepożądane? Czy możemy spodziewać się uśrednienia wielu modeli OLS w celu ograniczenia nadmiernego dopasowania? Poniżej znajduje się przykład 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
źródło
2
Możesz spróbować użyć średnich wartości współczynników zamiast średnich wartości współczynników. Widziałem, że ta technika może czasami dawać lepsze wyniki.
James Phillips
Prawdopodobnie nie zwiększy lub nie poprawi wydajności, ale ma też inne przydatne aplikacje. Ten facet używa do wyboru prawidłowego trendu dla swoich danych szeregów czasowych przesyłanych strumieniowo youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
Jos
Zobacz także ten post, stats.stackexchange.com/q/68030/28746
Alecos Papadopoulos

Odpowiedzi:

14

Biorąc pod uwagę, że OLS minimalizuje MSE z reszt wśród wszystkich nieobciążonych estymatorów liniowych (na mocy twierdzenia Gaussa-Markowa), a średnią ważoną nieobciążonych estymatorów liniowych (np szacowany liniowy funkcji z każdego z fałd) sama jest bezstronna estymator liniowy, musi być tak, że OLS zastosowany do całego zestawu danych przewyższy średnią ważoną regresji liniowych, chyba że przypadkowo oba dadzą identyczne wyniki.kkk

Jeśli chodzi o nadmierne dopasowanie - modele liniowe nie są podatne na nadmierne dopasowanie w taki sam sposób, jak na przykład maszyny do zwiększania gradientu. Do tego dochodzi egzekwowanie liniowości. Jeśli masz bardzo małą liczbę wartości odstających, które odciągają linię regresji OLS daleko od miejsca, w którym powinna być, twoje podejście może nieznacznie - tylko nieznacznie - złagodzić szkody, ale istnieją znacznie lepsze podejścia do radzenia sobie z tym problemem w kontekście bardzo niewielka liczba wartości odstających, np. solidna regresja liniowa lub po prostu wykreślanie danych, identyfikowanie, a następnie usuwanie wartości odstających (przy założeniu, że faktycznie nie są one reprezentatywne dla procesu generowania danych, którego parametry są zainteresowane oszacowaniem).

łucznik
źródło
przez „lepsze wyniki”, czy masz na myśli lepsze oszacowania współczynników czy lepsze niż podejście kfold na całej planszy (wyłączając wartości odstające, jak wspomniałeś)?
Arash Howaida
Będzie miał niższy MSE reszt niż podejście k-krotnie, co oznacza, że ​​przy założeniu, że funkcjonalna forma modelu jest poprawna, średnio będzie miał lepsze oszacowania współczynników i będzie lepszy niż podejście k-krotnie w poprzek tablica - chyba że konkretny problem wskazuje, że zamiast MSE należy wybrać inne kryterium, np. średni błąd bezwzględny.
jbowman
1

Co z uruchomieniem paska startowego? Utwórz 100-1000 powtórzonych próbek ze 100% częstotliwością próbkowania, używając nieograniczonego losowego próbkowania (próbkowanie z wymianą). Uruchom modele replikując i uzyskaj medianę dla każdego współczynnika regresji. Lub spróbuj wrednie. Spójrz również i rozkład każdego współczynnika, aby zobaczyć, czy zmieniają się znaki i jakie skumulowane wartości rozkładu.

Jonas Bilenas
źródło