是否可以使用随机梯度下降进行时间序列分析?
我最初的想法是,给定一系列 (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)