モデルを構築するための回帰係数の平均化に理論的な問題はありますか?


12

それぞれが完全なデータのサブセットに基づいた複数のOLSモデルの平均である回帰モデルを構築したい。この背景にある考え方は、このペーパーに基づいています。k個の折り畳みを作成し、それぞれが折り畳みのないデータに基づいてk個のOLSモデルを作成します。次に、回帰係数を平均して最終モデルを取得します。

これは、複数の回帰ツリーが構築されて平均化されるランダムフォレスト回帰のようなものに似ています。ただし、平均化されたOLSモデルのパフォーマンスは、データ全体に1つの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
josh

この投稿もご覧ください。stats.stackexchange.com
q /

回答:


13

kk

オーバーフィットについて-線形モデルは、たとえば、勾配ブースティングマシンと同じようにオーバーフィットする傾向はありません。直線性の施行はそれに見ています。外れ値の数が非常に少ないため、OLS回帰線を本来の位置から十分に引き離せない場合、アプローチはわずかに-わずかに-損傷を改善する可能性がありますが、非常に少数の外れ値、たとえばロバスト線形回帰、または単純にデータをプロットし、外れ値を特定し、削除します(推定に関心のあるパラメーターを持つデータ生成プロセスを実際に代表していないと仮定)。


「アウトパフォームする」とは、係数のより良い推定値を持つことを意味しますか、それとも全面的なkfoldアプローチよりも良いことを意味しますか(あなたが述べたように、外れ値を除く)。
アラシュホワイダ

残差のMSEはkフォールドアプローチよりも低くなります。これは、モデルの関数形式が正しいと仮定すると、平均して係数の推定値が高くなり、kフォールドアプローチよりも優れていることを意味します。ボード-特定の問題が異なる基準、たとえば平均絶対誤差をMSEに優先させることを示していない限り。
jbowman

1

ブートストラップの実行はどうですか?無制限のランダムサンプリング(置換によるサンプリング)を使用して、100%のサンプリングレートで100-1000の複製サンプルを作成します。複製によりモデルを実行し、各回帰係数の中央値を取得します。または平均を試してください。また、各係数の分布を調べて、符号が変化するかどうか、どの累積分布値になるかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.