是否可以使用随机梯度下降进行时间序列分析?
我的初步想法是,给定一系列(t,v)对,我希望一个SGD回归器预测与t + 1相关联的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)