時系列分析に確率的勾配降下法を使用することは可能ですか?
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)