4

時系列分析に確率的勾配降下法を使用することは可能ですか?

SGD リグレッサーに t+1 に関連付けられた v を予測させたい一連の (t, v) ペアを考えると、私の最初のアイデアは、日付/時刻を整数値に変換し、このリストでリグレッサーをトレーニングすることです。ヒンジ損失関数を使用します。これは実現可能ですか?

編集: これは、scikit-learnのSGD 実装を使用したサンプル コードです。ただし、単純な線形時系列モデルを適切に予測することはできません。トレーニング Y 値の平均を計算し、それをテスト Y 値の予測として使用するだけです。SGD は時系列分析には適していませんか、それとも間違って定式化していますか?

from datetime import date
from sklearn.linear_model import SGDRegressor

# Build data.
s = date(2010,1,1)
i = 0
training = []
for _ in xrange(12):
    i += 1
    training.append([[date(2012,1,i).toordinal()], i])
testing = []
for _ in xrange(12):
    i += 1
    testing.append([[date(2012,1,i).toordinal()], i])

clf = SGDRegressor(loss='huber')

print 'Training...'
for _ in xrange(20):
    try:
        print _
        clf.partial_fit(X=[X for X,_ in training], y=[y for _,y in training])
    except ValueError:
        break

print 'Testing...'
for X,y in testing:
    p = clf.predict(X)
    print y,p,abs(p-y)
4

2 に答える 2

0

時系列予測の選択方法は、時系列について知っていることによって異なります。タスクに特定の方法を選択する場合は、信号の性質と信号を生成したシステムの種類について常に暗黙の仮定を行います。どの方法も常にシステムのモデルです。信号とシステムについて先験的に知っているほど、それをより適切にモデル化できます。

たとえば、信号が確率的性質のものである場合、通常はARMAプロセスまたはカルマンフィルターが適切な選択です。それらが失敗した場合、他のより決定論的なモデルが役立つかもしれません、与えられた、あなたはあなたのシステムについてのいくつかの情報を持っています。

于 2012-06-01T08:10:42.383 に答える