Apakah ada masalah teoritis dengan rata-rata koefisien regresi untuk membangun model?

13

Saya ingin membangun model regresi yang merupakan rata-rata dari beberapa model OLS, masing-masing berdasarkan pada subset dari data lengkap. Gagasan di balik ini didasarkan pada makalah ini . Saya membuat lipatan k dan membuat model OLS k, masing-masing pada data tanpa salah satu lipatan. Saya kemudian rata-rata koefisien regresi untuk mendapatkan model akhir.

Ini menurut saya mirip dengan sesuatu seperti regresi hutan acak, di mana banyak pohon regresi dibangun dan dirata-rata. Namun, kinerja model OLS rata-rata tampaknya lebih buruk daripada hanya membangun satu model OLS pada seluruh data. Pertanyaan saya adalah: apakah ada alasan teoritis mengapa rata-rata beberapa model OLS salah atau tidak diinginkan? Bisakah kita mengharapkan rata-rata beberapa model OLS untuk mengurangi overfitting? Di bawah ini adalah contoh 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
sumber
2
Anda dapat mencoba menggunakan nilai koefisien median , daripada nilai koefisien rata - rata . Saya telah melihat bahwa teknik ini terkadang dapat memberikan hasil yang lebih baik.
James Phillips
Ini mungkin tidak akan memberi Anda peningkatan kinerja atau pengurangan over fitting, tetapi memang memiliki aplikasi berguna lainnya. Bab ini digunakan untuk memilih tren yang benar untuk data deret waktunya yang dialirkan youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
josh
Lihat juga posting ini, stats.stackexchange.com/q/68030/28746
Alecos Papadopoulos

Jawaban:

14

Mengingat bahwa OLS meminimalkan MSE dari residu di antara semua estimator linier yang tidak bias (oleh teorema Gauss-Markov), dan bahwa rata-rata tertimbang dari estimator linier yang tidak bias (misalnya, fungsi linear yang diestimasi dari masing-masing lipatan Anda ) itu sendiri penaksir linier, harus OLS yang diterapkan pada seluruh kumpulan data akan mengungguli rata-rata tertimbang dari regresi linier kecuali, secara kebetulan, keduanya memberikan hasil yang identik.kkk

Mengenai overfitting - model linier tidak rentan terhadap overfitting dengan cara yang sama seperti, misalnya, Gradient Boosting Machines. Penegakan linearitas memastikan hal itu. Jika Anda memiliki sejumlah kecil pencilan yang menarik garis regresi OLS Anda jauh dari yang seharusnya, pendekatan Anda mungkin sedikit - hanya sedikit - memperbaiki kerusakan, tetapi ada pendekatan yang jauh lebih unggul untuk menangani masalah itu dalam konteks sejumlah kecil pencilan, misalnya, regresi linier yang kuat, atau sekadar memplot data, mengidentifikasi, dan kemudian menghapus pencilan (dengan asumsi bahwa mereka memang tidak mewakili proses pembuatan data yang parameternya ingin Anda perkirakan).

Jbowman
sumber
dengan "mengungguli" apakah maksud Anda akan memiliki estimasi koefisien yang lebih baik atau bahwa itu akan lebih baik daripada pendekatan kfold di seluruh papan (tidak termasuk outlier, seperti yang Anda sebutkan)?
Arash Howaida
Ini akan memiliki MSE residual yang lebih rendah daripada pendekatan k-fold, yang menyiratkan, dengan asumsi bentuk fungsional model sudah benar, bahwa rata-rata akan memiliki estimasi koefisien yang lebih baik dan lebih baik daripada pendekatan k-fold di seluruh papan - kecuali masalah spesifik Anda menunjukkan bahwa kriteria yang berbeda, misalnya, berarti kesalahan absolut, lebih disukai daripada MSE.
jbowman
1

Bagaimana dengan menjalankan bootstrap? Buat 100-1000 sampel replikat dengan tingkat pengambilan sampel 100% menggunakan pengambilan sampel acak tidak terbatas (pengambilan sampel dengan penggantian). Jalankan model dengan mereplikasi dan dapatkan median untuk setiap koefisien regresi. Atau coba artinya. Lihat juga dan distribusi masing-masing koefisien untuk melihat apakah tanda-tanda berubah dan pada nilai distribusi kumulatif apa.

Jonas Bilenas
sumber