時系列分析の相互検証


37

R のキャレットパッケージを使用して、分類と回帰の予測モデルを構築しています。Caretは、クロス検証またはブートストラッピングによってモデルハイパーパラメーターを調整するための統一されたインターフェイスを提供します。たとえば、分類のために単純な「最近傍」モデルを構築している場合、いくつの近傍を使用する必要がありますか?2?10?100?Caretは、データを再サンプリングし、さまざまなパラメーターを試し、結果を集計して、どれが最良の予測精度をもたらすかを決定することにより、この質問に答えるのに役立ちます。

モデルハイパーパラメーターを選択するための堅牢な方法論を提供し、最終ハイパーパラメーターを選択すると、分類モデルの精度を使用して、モデルがどれだけ「良い」かを相互検証した推定値を提供するため、このアプローチが好きですおよび回帰モデルのRMSE。

おそらくランダムフォレストを使用して、回帰モデルを構築したい時系列データがいくつかあります。データの性質を考慮して、モデルの予測精度を評価するための優れた手法は何ですか?ランダムフォレストが実際に時系列データに適用されない場合、時系列分析用の正確なアンサンブルモデルを構築する最良の方法は何ですか?


質問は本当に興味深いものでした。質問にマークを付けてフォローする方法はありますか?
マリアナソファー

1
@mariana soffer上/下矢印の下にある[星]アイコンをクリックします。
ザック

4
キャレットは時系列の相互検証をサポートするようになりました-r-bloggers.com/time-series-cross-validation-5
captain_ahab 14

1
@Zachこれは古い投稿ですが、新しい考えはありますか?逐次モデル検証に関する最近の研究を知っていますか?
horaceT

回答:


10

「古典的な」k回交差検証手法は、利用可能なデータセットの各サンプルがモデルのトレーニングに(k-1)回使用され、モデルのテストに1回使用されるという事実に基づいています。「将来の」データで時系列モデルを検証することは非常に重要であるため、このアプローチはモデルの安定性に寄与しません。

多くの(ほとんど?)時系列の1つの重要な特性は、隣接する値間の相関です。IrishStatが指摘したように、以前の読み取り値をモデル候補の独立変数として使用する場合、この相関(または独立性の欠如)は重要な役割を果たし、k回の交差検証が良い考えではないもう1つの理由です。

この問題を克服する1つの方法は、データを「オーバーサンプリング」し、データを無相関化することです。無相関化プロセスが成功した場合、時系列で相互検証を使用しても問題は少なくなります。ただし、将来のデータを使用してモデルを検証する問題は解決しません

明確化

将来のデータでモデルを検証するということは、モデルを構築し、モデルの構築、テスト、微調整などで利用できなかった新しいデータを待って、その新しいデータで検証することを意味します。

データをオーバーサンプリングすることにより、実際に必要な頻度よりもはるかに高い頻度で時系列データを収集することを意味します。たとえば、1時間ごとの変更に本当に関心がある場合、5秒ごとに株価をサンプリングします。ここで、「サンプリング」と言うとき、「補間」、「推定」などの意味ではありません。データをより高い周波数で測定できない場合、この手法は無意味です。


将来のデータでモデルを検証する「古典的な」方法は何ですか?「オーバーサンプリング」とはどういう意味ですか?ありがとうございました!
ザック

TppT

@bgbg私は非常によく似た問題に直面しており、あなたの投稿を見つけました。時系列データのオーバーサンプリングと無相関化に関する参考文献を引用できますか?時系列のメモリが十分に短い場合(アリマに適合していることを示すことができます)、「オーバーラップしない」サンプルを取得し、通常の相互検証を行うことができると思います。どんな考えでも感謝します。
horaceT

9

http://robjhyndman.com/researchtips/crossvalidation/には、時系列の相互検証の簡単なヒントが含まれています。時系列データにランダムフォレストを使用することについて....モデルがブートストラップサンプルを使用して適合していることを考えると、奇妙な選択のように見えますが、確かではありません。使用できる古典的な時系列方法(例:ARIMA)があり、ニューラルネット(例pdf)のようなML技術も使用できます。おそらく、時系列の専門家の中には、時系列固有のアルゴリズムと比較してMLテクニックがどれだけうまく機能しているかについてコメントする人がいるかもしれません。


2
これはほとんど頭の爪に当たります。機械学習の手法を時系列分析に適用しようと考えています。
ザック

以前、予測にランダムフォレストを使用して成功しました。チェックアウト:biomedcentral.com/1471-2105/15/276
captain_ahab

6

ここではいくつかあるのコード例のクロス検証を時系列モデルのは。私はブログでこのコード拡張しforeachパッケージを組み込んで物事をスピードアップし、クロス検証でxreg用語の可能性を考慮しました。

Rob Hyndmanのブログのコードのコピーを次に示します。

library(fpp) # To load the data set a10
plot(a10, ylab="$ million", xlab="Year", main="Antidiabetic drug sales")
plot(log(a10), ylab="", xlab="Year", main="Log Antidiabetic drug sales")

k <- 60 # minimum data length for fitting a model
n <- length(a10)
mae1 <- mae2 <- mae3 <- matrix(NA,n-k,12)
st <- tsp(a10)[1]+(k-2)/12

for(i in 1:(n-k))
{
  xshort <- window(a10, end=st + i/12)
  xnext <- window(a10, start=st + (i+1)/12, end=st + (i+12)/12)
  fit1 <- tslm(xshort ~ trend + season, lambda=0)
  fcast1 <- forecast(fit1, h=12)
  fit2 <- Arima(xshort, order=c(3,0,1), seasonal=list(order=c(0,1,1), period=12), 
      include.drift=TRUE, lambda=0, method="ML")
  fcast2 <- forecast(fit2, h=12)
  fit3 <- ets(xshort,model="MMM",damped=TRUE)
  fcast3 <- forecast(fit3, h=12)
  mae1[i,1:length(xnext)] <- abs(fcast1[['mean']]-xnext)
  mae2[i,1:length(xnext)] <- abs(fcast2[['mean']]-xnext)
  mae3[i,1:length(xnext)] <- abs(fcast3[['mean']]-xnext)
}

plot(1:12, colMeans(mae1,na.rm=TRUE), type="l", col=2, xlab="horizon", ylab="MAE",
     ylim=c(0.65,1.05))
lines(1:12, colMeans(mae2,na.rm=TRUE), type="l",col=3)
lines(1:12, colMeans(mae3,na.rm=TRUE), type="l",col=4)
legend("topleft",legend=c("LM","ARIMA","ETS"),col=2:4,lty=1)

結果


こんにちはザック。時系列の回帰モデルの適切な数の項を検出するために、少し異なるバージョンのHyndmanのコードを実装しました。残念ながら、CVエラープロットはいくつかの極小値を示したため、用語の数を正しく選択する方法について疑問が生じました。完全な問題はここで説明されています。以前に似たようなことに直面したことがありますか?
jroberayalas

5

時系列データがある場合、「自由度の問題」が発生する可能性があります。たとえば、1時間間隔で4つの観測値を取得し、1分間隔で241の観測値を使用することにした場合、241の観測値がありますが、必ずしも独立しているわけではありません。これらの241の値/測定値を分析パッケージに送信すると、パッケージは特定の魔法を実行するためにこれらが241の独立した値であると予想する場合があります。時系列データがある場合は、分析をアップグレードする必要があります。参照するプログラムはわかりませんが、テスト(Fテスト/ Tテスト...など)が問題セットに適用されない可能性があることは、私の側では合理的な推測です(間違っているかもしれません!)。


1

オンラインで読むことができる2つの興味深い論文をお勧めします 1.ストリーミング学習:ワンパスSVM、Piushush Rai、Hal Daum´e III、Suresh Venkatasubramanian 2.ストリーミングk-means近似、Nir Ailon

あなたのアイデアが少し明確になることを願っています


それらの論文へのリンクを提供できますか?ありがとう。
ザック

ザックは、ここで最初にsnowbird.djvuzone.org/2008/abstracts/180.pdfおよびその他のですwww1.cs.columbia.edu/~rjaiswal/ajmNIPS09.pdf。それが役立つことを願っています
マリアナ・ソファー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.