Есть ли теоретическая проблема с усреднением коэффициентов регрессии для построения модели?

13

Я хочу построить регрессионную модель, которая представляет собой среднее из нескольких моделей OLS, каждая из которых основана на подмножестве полных данных. Идея, лежащая в основе этого, основана на этой статье . Я создаю k сгибов и строю k моделей OLS, каждая на основе данных без одного сгиба. Затем я усредняю ​​коэффициенты регрессии, чтобы получить окончательную модель.

Это кажется мне похожим на что-то вроде случайной лесной регрессии, в которой несколько деревьев регрессии строятся и усредняются. Однако производительность усредненной модели OLS кажется хуже, чем простое построение одной модели OLS на всех данных. Мой вопрос: есть ли теоретическая причина, почему усреднение нескольких моделей OLS является неправильным или нежелательным? Можем ли мы ожидать усреднения нескольких моделей OLS, чтобы уменьшить переоснащение? Ниже приведен пример 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
Гаурав Бансал
источник
2
Вы можете попробовать использовать медианные значения коэффициентов, а не средние значения коэффициентов. Я видел, что эта техника иногда может дать лучшие результаты.
Джеймс Филлипс
Это, вероятно, не даст вам повышения производительности или снижения по сравнению с подгонкой, но у него есть другие полезные приложения. Этот глава использует, чтобы выбрать правильный тренд для своих потоковых данных временных рядов youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
Джош
Смотрите также этот пост, stats.stackexchange.com/q/68030/28746
Алекос Пападопулос,

Ответы:

14

kk

Что касается переоснащения - линейные модели не склонны к переоснащению так же, как, например, машины повышения градиента. Осуществление линейности следит за этим. Если у вас есть очень небольшое количество выбросов, которые сильно оттягивают вашу линию регрессии OLS от того места, где она должна быть, ваш подход может немного - или немного - уменьшить ущерб, но существуют гораздо более эффективные подходы к решению этой проблемы в контексте очень небольшое количество выбросов, например, устойчивая линейная регрессия, или просто построение графика данных, идентификация, а затем удаление выбросов (при условии, что они действительно не являются репрезентативными для процесса генерирования данных, параметры которого вы хотите оценить).

jbowman
источник
Под «превосходством» вы подразумеваете, что у него будут лучшие оценки коэффициентов или что он будет лучше, чем подход kfold по всем направлениям (исключая выбросы, как вы упомянули)?
Араш Ховайда
Он будет иметь более низкое среднеквадратичное отклонение от остатков, чем метод k-кратного подхода, что подразумевает, если предположить, что функциональная форма модели верна, что в среднем он будет иметь более точные оценки коэффициентов и будет лучше, чем подход с использованием k-кратного коэффициента Правление - если ваша конкретная проблема не указывает на то, что другой критерий, например, средняя абсолютная ошибка, должен быть предпочтительнее MSE.
jbowman
1

Как насчет запуска начальной загрузки? Создайте 100-1000 повторяющихся выборок с частотой выборки 100%, используя неограниченную случайную выборку (выборка с заменой). Запустите модели по репликации и получите медиану для каждого коэффициента регрессии. Или попробуйте среднее. Также посмотрите и распределение каждого коэффициента, чтобы увидеть, меняются ли знаки и какие совокупные значения распределения.

Йонас Биленас
источник