모델을 만들기 위해 평균 회귀 계수에 이론적 인 문제가 있습니까?


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
당신은 사용하여 시도 할 수 있습니다 중간 계수 값보다는 평균 계수 값을. 이 기술이 때때로 더 나은 결과를 얻을 수 있다는 것을 알았습니다.
James Phillips

아마도 성능 향상을 제공하지 않거나 피팅을 과도하게 줄이지 않지만 다른 유용한 응용 프로그램이 있습니다. 이 챕터는 스트리밍 된 시계열 데이터에 대한 올바른 트렌드를 선택하는 데 사용합니다. youtube.com/watch?v=0zpg9ODE6Ww&index=64&list=WL
josh

답변:


14

OLS가 모든 비 편향 선형 추정기 (Gauss-Markov 정리에 의해) 사이의 잔차 MSE를 최소화하고, 비 편향 선형 추정기의 가중 평균 (예를 들어, 각각에서 추정 된 선형 함수 )은 그 자체가 편향되지 않은 것을 고려할 때 선형 추정량의 경우 우연히 두 결과가 동일한 결과를 제공하지 않는 한 전체 데이터 세트에 적용된 OLS가 선형 회귀 의 가중 평균을 능가해야 합니다.kkk

과적 합에 관해서-선형 모델은 예를 들어 그라디언트 부스팅 머신과 같은 방식으로 과적 합하는 경향이 없습니다. 선형성의 시행은 그것을 본다. OLS 회귀선을 원래 위치에서 벗어나게하는 매우 적은 수의 특이 치가있는 경우 접근 방식이 약간만 약간만 개선 될 수 있지만 그 문제를 처리하는 데 훨씬 뛰어난 접근 방식이 있습니다. 매우 작은 수의 특이 치, 예를 들어 강력한 선형 회귀 또는 단순히 데이터를 플로팅하고 특이 치를 식별 한 다음 제거합니다 (실제로 매개 변수 추정에 관심이있는 데이터 생성 프로세스를 나타내지 않는다고 가정).


"성능이 뛰어나다"는 것은 계수에 대한 더 나은 추정치가 있거나 보드 전체의 kfold 접근법보다 우수하다는 것을 의미합니까?
Arash Howaida

k- 접근법보다 잔차의 MSE가 낮습니다. 이는 모형의 기능적 형태가 정확하다고 가정 할 때 평균적으로 계수의 추정치가 더 좋고 k- 접근법보다 우수함을 의미합니다. 보드-특정 문제가 다른 기준 (예 : 평균 절대 오차)이 MSE보다 선호되어야한다는 것을 나타내지 않는 한.
jbowman

1

부트 스트랩 실행은 어떻습니까? 무제한 무작위 샘플링 (대체로 샘플링)을 사용하여 100 % 샘플링 속도로 100-1000 복제 샘플을 생성합니다. 모형을 반복하여 실행하고 각 회귀 계수의 중앙값을 구합니다. 또는 평균을 시도하십시오. 또한 각 계수의 분포를 살펴보고 부호가 변경되는지 여부와 누적 분포 값을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.