4

stochastic gradient descent을 시계열 분석에 사용할 수 있습니까?SGD를 사용하여 시계열 분석을하는 방법

SGD 회귀 분석기에서 t + 1과 연결된 v를 예측하기를 원하는 일련의 (t, 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) 

답변

3

알고리즘은 LMS입니다. 예측이나 다른 작업에 사용할 수있는 적응 형 위너 필터입니다. LMS는 확률 적 구배 강하를 기반으로합니다. NLMS, Leaky LMS, Sign LMS와 같은 다른 많은 변종들도 있습니다.

0

글쎄, 이것은 실제로 프로그래밍 질문이 아닙니다. 그러나 어쨌든 ...

시계열 예측을위한 방법은 시계열에 대해 알고있는 내용에 달려 있습니다. 자신의 과제에 맞는 특정 방법을 선택하면 신호의 성격과 신호를 생성 한 시스템의 종류에 대해 항상 암묵적인 가정을합니다. 모든 방법은 항상 시스템의 모델입니다. 신호와 시스템에 대한 선험적 인 지식이 많을수록 모델을 잘 표현할 수 있습니다.

예를 들어 신호가 확률적인 성격을 지닌 신호라면 일반적으로 ARMA 프로세스 또는 칼만 필터가 좋은 선택입니다. 그러한 것들이 실패하면,보다 결정 론적 인 다른 모델이 도움이 될 수도 있습니다. 주어진, 여러분의 시스템에 대한 정보가 있습니다.