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


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 от того места, где она должна быть, ваш подход может немного - или немного - уменьшить ущерб, но существуют гораздо более эффективные подходы к решению этой проблемы в контексте очень небольшое количество выбросов, например, устойчивая линейная регрессия, или просто построение графика данных, идентификация, а затем удаление выбросов (при условии, что они действительно не являются репрезентативными для процесса генерирования данных, параметры которого вы хотите оценить).


Под «превосходством» вы подразумеваете, что у него будут лучшие оценки коэффициентов или что он будет лучше, чем подход kfold по всем направлениям (исключая выбросы, как вы упомянули)?
— Араш Ховайда

Он будет иметь более низкое среднеквадратичное отклонение от остатков, чем метод k-кратного подхода, что подразумевает, если предположить, что функциональная форма модели верна, что в среднем он будет иметь более точные оценки коэффициентов и будет лучше, чем подход с использованием k-кратного коэффициента Правление - если ваша конкретная проблема не указывает на то, что другой критерий, например, средняя абсолютная ошибка, должен быть предпочтительнее MSE.
— jbowman

1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.