是否可以使用stochastic gradient descent進行時間序列分析?如何使用SGD進行時間序列分析
我最初的想法是,假設有一系列(t,v)對,我希望SGD迴歸器預測與t + 1相關的v,將會將日期/時間轉換爲整數值,然後訓練使用鉸鏈損失函數在此列表上的迴歸器。這是可行的嗎?
編輯:這是在scikit-learn中使用SGD implementation的示例代碼。但是,它無法正確預測簡單的線性時間序列模型。它似乎要做的就是計算訓練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)