Model oluşturmak için regresyon katsayılarının ortalamasında teorik bir problem var mı?


13

Her biri tam verinin bir alt kümesine dayanan, birden çok OLS modelinin ortalaması olan bir regresyon modeli oluşturmak istiyorum. Bunun arkasındaki fikir bu makaleye dayanmaktadır . K kıvrımları oluşturuyorum ve her biri kıvrımlardan biri olmayan verilerde k OLS modelleri oluşturuyorum. Daha sonra son modeli elde etmek için regresyon katsayılarını ortalarım.

Bu beni çoklu regresyon ağaçlarının yapıldığı ve ortalaması alındığı rastgele orman regresyonu gibi bir şeye benziyor. Bununla birlikte, ortalama OLS modelinin performansı, tüm veriler üzerinde sadece bir OLS modeli oluşturmaktan daha kötü görünmektedir. Sorum şu: Birden fazla OLS modelinin ortalamasının yanlış veya istenmeyen olmasının teorik bir nedeni var mı? Birden fazla OLS modelinin ortalamasının aşırı sığmayı azaltmasını bekleyebilir miyiz? Aşağıda bir R örneği verilmiştir.

#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

2
Sen kullanarak deneyebilirsiniz medyan katsayı değerleri yerine ortalama katsayı değerleri. Bu tekniğin bazen daha iyi sonuçlar verebileceğini gördüm.
James Phillips

Muhtemelen size bir performans artışı veya aşırı montaj azalması vermeyecektir, ancak başka yararlı uygulamalara sahiptir. Bu adam akış zaman serisi verileri için doğru eğilimi seçmek için kullanır youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
josh

Yanıtlar:


14

OLS'nin tüm tarafsız lineer tahmin ediciler arasındaki kalıntıların MSE'sini en aza indirdiği göz önüne alındığında (Gauss-Markov teoremi ile) ve ağırlıklı ortalama bir nötr lineer tahmin edicinin (örn. kıvrımlarınızın her birinden tahmini doğrusal fonksiyonların ) kendisi tarafsızdır. doğrusal kestirimci, şans eseri, ikisi de aynı sonuçları vermedikçe, tüm veri setine uygulanan OLS'nin doğrusal regresyonlarının ağırlıklı ortalamasından daha iyi performans göstermesi gerekir.kk

Aşırı takmaya gelince - doğrusal modeller, örneğin Gradient Boosting Machines gibi aşırı takmaya eğilimli değildir. Doğrusallığın uygulanması bunu görür. OLS regresyon hattınızı olması gereken yerden iyi çeken çok az sayıda aykırı değer varsa, yaklaşımınız hasarı hafifçe - sadece biraz - hafifletebilir, ancak bu sorunla başa çıkmak için çok daha üstün yaklaşımlar vardır. çok az sayıda aykırı değer, örneğin, sağlam doğrusal regresyon, ya da basitçe verileri çizme, aykırı değerlerin tanımlanması ve ardından kaldırılması (parametrelerinin tahmin etmek istediğiniz veri oluşturma sürecini temsil etmediği varsayılarak).


"daha iyi performans" ile, katsayıları daha iyi tahmin edeceğinizi ya da tahtadaki kfold yaklaşımından daha iyi olacağı anlamına mı geliyorsunuz (bahsettiğiniz gibi aykırı değerler hariç)?
Arash Howaida

Kalıntıların MSE'si, modelin fonksiyonel formunun doğru olduğunu varsayarak, ortalama olarak katsayıların daha iyi tahminlerine sahip olacağını ve k katlama yaklaşımından daha iyi olacağını ima eden k-katlama yaklaşımından daha düşük bir MSE'ye sahip olacaktır. yönetim kurulu - özel probleminiz farklı bir kriterin, örneğin ortalama mutlak hatanın MSE'ye tercih edileceğini belirtmedikçe.
jbowman

1

Önyükleme yapmaya ne dersiniz? Sınırsız rastgele örnekleme (değiştirme ile örnekleme) kullanarak% 100 örnekleme oranı ile 100-1000 çoğaltma örnekleri oluşturun. Modelleri kopyalayarak çalıştırın ve her regresyon katsayısı için medyanı alın. Veya ortalamayı deneyin. Ayrıca, işaretlerin değişip değişmediğini ve kümülatif dağılım değerlerinde ne olduğunu görmek için her katsayının dağılımına bakın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.