2013-04-02 7 views
4

저는 파이썬 언어로 지원 벡터 회귀를 사용하여 시계열 예측 도구를 구현하려고했습니다. 비선형 벡터 지원에 대한 scikit-learn의 SVR 모듈을 사용합니다. 그러나 나는 미래 사건의 예측에 심각한 문제가있다. 회귀 직선은 (알려진 데이터에서) 원래의 함수에 적합하지만, 향후 단계를 예측하자 마자 마지막 단계에서 값을 반환합니다.지원 벡터 회귀를 사용한 시계열 예측

내 코드는 다음과 같습니다

import numpy as np 
from matplotlib import pyplot as plt 
from sklearn.svm import SVR 

X = np.arange(0,100) 
Y = np.sin(X) 

svr_rbf = SVR(kernel='rbf', C=1e5, gamma=1e5) 
y_rbf = svr_rbf.fit(X[:-10, np.newaxis], Y[:-10]).predict(X[:, np.newaxis]) 

figure = plt.figure() 
tick_plot = figure.add_subplot(1, 1, 1) 
tick_plot.plot(X, Y, label='data', color='green', linestyle='-') 
tick_plot.axvline(x=X[-10], alpha=0.2, color='gray') 
tick_plot.plot(X, y_rbf, label='data', color='blue', linestyle='--') 
plt.show() 

어떤 아이디어?
미리 감사드립니다. Tom

답변

4

당신은 실제로 시계열 예측을 수행하지 않습니다. 의 단일 요소에서 Y의 각 요소를 예측하려고합니다. 즉, 표준 커널화 회귀 문제 만 해결할뿐입니다.

또 다른 문제는 벡터 범위 [[0],[1],[2],...]에 대해 RBF 커널을 계산할 때 커널 매트릭스의 대각선을 따라 양의 값의 대역을 얻게되는 반면 대각선에서 멀리 떨어진 값은 0에 가까워집니다. 커널 매트릭스의 테스트 세트 부분은 대각선에서 멀리 떨어져 있기 때문에 모든 SVR 예측이 바이어스 항에 가까워 지도록 0에 매우 가깝습니다.

시계열 예측을 위해 나는, 이전의 요소 창에서 시퀀스의 미래 요소를 예측하려고한다

x[0]=Y[0:K]; y[0]=Y[K] 
x[1]=Y[1:K+1]; y[1]=Y[K+1] 
... 

로 설정 훈련 테스트를 구축하는 것이 좋습니다.

+0

고마워요, 정말 도움이되었습니다. T. –

+0

@ user1149913,이 소중한 도움을 주시면 감사하겠습니다. http://stackoverflow.com/questions/40357805/prediction-time-series-prediction-of-future-events-using-svr-module. – Mahsolid

관련 문제