Keras를 사용한 시계열 예측-평균에 가까운 값

타박상 Fa

Keras의 LSTM을 사용하여 데이터 세트에서 15 개의 이전 샘플을 사용하여 한 단계 앞서 예측을 수행하고 있습니다.

데이터 csv 파일은 여기에서 찾을 수 있습니다. ( https://drive.google.com/file/d/0Byiipc0dArG0LVZJelB4NFBucms/view?usp=sharing )

두 번째 열 col [1] 값이 사용됩니다. 첫 번째 열 (타임 스탬프)의 값은 전혀 사용되지 않습니다.

다음 코드를 사용합니다.

# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
        dataX, dataY = [], []
        for i in range(len(dataset)-look_back-1):
                a = dataset[i:(i+look_back), 0]
                dataX.append(a)
                dataY.append(dataset[i + look_back, 0])
        return numpy.array(dataX), numpy.array(dataY)
# fix random seed for reproducibility
numpy.random.seed(7)
# load the dataset
dataframe = pandas.read_csv('node70-3000.csv', usecols=[1],
engine='python', skipfooter=3)
dataset = dataframe.values
dataset = dataset.astype('float32')
# normalize the dataset
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# split into train and test sets
train_size = int(len(dataset) * 0.7)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], 
dataset[train_size:len(dataset),:]
# reshape into X=t and Y=t+1
look_back = 15
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX = numpy.reshape(testX, (testX.shape[0], testX.shape[1], 1))
# create and fit the LSTM network
batch_size = 11
model = Sequential()
model.add(LSTM(32, batch_input_shape=(batch_size, look_back, 1),
stateful=True))      
#model.add(LSTM(32, stateful = True))
model.add(Dense(32))
model.add(Dense(1))
# default lr=0.001
optim = Adam(lr=0.05, beta_1=0.9, beta_2=0.999, epsilon=1e-08,
decay=0.1)
model.compile(loss='mean_squared_error', optimizer=optim)
for i in range(50):
        model.fit(trainX, trainY, nb_epoch=1, batch_size=batch_size,
            verbose=2, shuffle=False)   
        model.reset_states()
# make predictions

문제 :

이 코드를 사용하여주기적이고 깨끗한 시계열을 예측했으며 잘 작동합니다. 그러나이 데이터 세트에는 Adam의 다른 매개 변수 (학습률 등)를 사용했습니다. 그래도 실제 값에서 큰 오프셋이있는 예측을 얻습니다. 예측 값은 항상 데이터 값의 평균에 가까운 것 같습니다. 다음 그래프를 참조하십시오. csv 파일에 1850 개의 데이터 포인트가 있습니다. 이들은 크기 15의 시퀀스로 그룹화됩니다. 입력은 크기 15의 시퀀스입니다. 출력은 예측 된 다음 값이어야합니다. 데이터의 70 %는 학습에 사용되고 나머지는 테스트 데이터 세트입니다. 다음 이미지에서 각각 녹색과 빨간색으로 표시된 기차 및 테스트 데이터 세트에서 예측이 수행됩니다.

( https://drive.google.com/file/d/0Byiipc0dArG0OEN5el9lc0puNGM/view?usp=sharing )

왜 이런 일이 발생하고 원인이 무엇인지 알고 있습니까?

감사!

라파엘 발레

데이터는 이진 데이터 + 노이즈와 매우 유사합니다. 아래는 원시 데이터의 히스토그램과 원시 데이터의 첫 번째 차이에 대한 히스토그램입니다. 예측의 정확한 값이 중요하지 않은 경우 데이터를 바이너리로 만들고 다른 비용 함수 (예 : 바이너리 크로스 엔트로피)를 사용하는 것이 좋습니다.하지만 아래 설명을 제공하는 것이 작동 할 것이라는 데 회의적입니다.

가능한 다음 값이 여러 개인 유사한 시퀀스가있는 경우 네트워크는 평균 값을 예측하려고합니다. 예를 들어 시퀀스 (0,0,1) 및 (0,0,0) 및 (0,0, -1)과 마지막 값을 학습하려는 네트워크를 고려하십시오. 이 장난감 데이터를 사용하면 예측 모델의 가장 좋은 MSE는 마지막 값의 평균을 예측하는 것입니다 (이 경우 0).

목표 값 Y와 예측 된 목표 값 Y_hat을 플로팅하여 네트워크가 무엇을 학습하는지 확인하는 것이 좋습니다. 도움이 되었기를 바랍니다!

원시 데이터 히스토그램 1 차 차이 히스토그램

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Keras를 사용한 시계열 예측-모델 값의 오류

분류에서Dev

열 값에 대한 필터를 사용하여 평균 계산

분류에서Dev

GARCH를 사용한 시계열 예측

분류에서Dev

여러 그룹의 시계열 데이터에 대해 R의 평균 방법을 사용한 단순 예측

분류에서Dev

가장 가까운 이웃 값에 대한 예측?

분류에서Dev

사용자가 입력 한 배열의 평균값과 모든 값의 합계를 구합니까?

분류에서Dev

예측에 사용 된 임계 값

분류에서Dev

통계 모델의 지수 평활이 시계열 예측에 대해 동일한 값을 반환하는 이유는 무엇입니까?

분류에서Dev

Tensorflow에서 RNN을 사용하여 미래 기간의 시계열 값 예측

분류에서Dev

R에서 Forecast ()를 사용할 때 예측 값 가져 오기

분류에서Dev

집계를 사용한 가중 평균

분류에서Dev

Dask에서 GroupBy에 대한 사용자 지정 집계 함수를 추가하는 방법은 무엇입니까? 예 : 평균, 모드, 중앙값, 95 번째 백분위 수 등

분류에서Dev

r의 열에서 가장 가까운 이웃 값의 평균

분류에서Dev

Python에서 평균 예측 값 얻기

분류에서Dev

glmmTMB를 사용하여 모델 출력에서 특정 고정 효과에 대한 예측 평균을 계산하는 방법

분류에서Dev

시계열 예측을위한 평균 mse 최적화 기준 (R에 대한 우화 패키지의 "amse")

분류에서Dev

auto.arima를 사용하여 R에서 여러 시계열 예측

분류에서Dev

분기 별 평균으로 그룹화하고 평균 계산에 사용 된 값 가져 오기 -pandas

분류에서Dev

0 값에 대한 가중 평균을 계산하는 방법

분류에서Dev

롤링 평균을 사용하여 값 창에 대한 계산

분류에서Dev

Datetime 값이있는 'Index'가있는 시계열 데이터에 대해 플롯을 사용하여 예측을 그리는 방법

분류에서Dev

여러 샘플을 사용할 때 Keras에서 다변량 시계열 예측을 사용하는 방법

분류에서Dev

R을 사용하여 시계열에서 결 측값 계산

분류에서Dev

시간별 끝점에 대한 결 측값이있는 평균 xts 개체

분류에서Dev

keras를 사용하여 각각의 새로운 예측에 대해 LSTM을 다시 훈련하려면 어떻게해야합니까?

분류에서Dev

Python-사전에 동일한 키를 가진 모든 키 값 평균

분류에서Dev

시계열 예측에 사용할 가장 좋은 활성화 함수는 무엇입니까?

분류에서Dev

평균에 가장 가까운 값과 위치 C를 검색하는 방법

분류에서Dev

Pandas는 현재 날짜에 가장 가까운 값을 사용하여 그룹별로 평균을 계산합니다.

Related 관련 기사

  1. 1

    Keras를 사용한 시계열 예측-모델 값의 오류

  2. 2

    열 값에 대한 필터를 사용하여 평균 계산

  3. 3

    GARCH를 사용한 시계열 예측

  4. 4

    여러 그룹의 시계열 데이터에 대해 R의 평균 방법을 사용한 단순 예측

  5. 5

    가장 가까운 이웃 값에 대한 예측?

  6. 6

    사용자가 입력 한 배열의 평균값과 모든 값의 합계를 구합니까?

  7. 7

    예측에 사용 된 임계 값

  8. 8

    통계 모델의 지수 평활이 시계열 예측에 대해 동일한 값을 반환하는 이유는 무엇입니까?

  9. 9

    Tensorflow에서 RNN을 사용하여 미래 기간의 시계열 값 예측

  10. 10

    R에서 Forecast ()를 사용할 때 예측 값 가져 오기

  11. 11

    집계를 사용한 가중 평균

  12. 12

    Dask에서 GroupBy에 대한 사용자 지정 집계 함수를 추가하는 방법은 무엇입니까? 예 : 평균, 모드, 중앙값, 95 번째 백분위 수 등

  13. 13

    r의 열에서 가장 가까운 이웃 값의 평균

  14. 14

    Python에서 평균 예측 값 얻기

  15. 15

    glmmTMB를 사용하여 모델 출력에서 특정 고정 효과에 대한 예측 평균을 계산하는 방법

  16. 16

    시계열 예측을위한 평균 mse 최적화 기준 (R에 대한 우화 패키지의 "amse")

  17. 17

    auto.arima를 사용하여 R에서 여러 시계열 예측

  18. 18

    분기 별 평균으로 그룹화하고 평균 계산에 사용 된 값 가져 오기 -pandas

  19. 19

    0 값에 대한 가중 평균을 계산하는 방법

  20. 20

    롤링 평균을 사용하여 값 창에 대한 계산

  21. 21

    Datetime 값이있는 'Index'가있는 시계열 데이터에 대해 플롯을 사용하여 예측을 그리는 방법

  22. 22

    여러 샘플을 사용할 때 Keras에서 다변량 시계열 예측을 사용하는 방법

  23. 23

    R을 사용하여 시계열에서 결 측값 계산

  24. 24

    시간별 끝점에 대한 결 측값이있는 평균 xts 개체

  25. 25

    keras를 사용하여 각각의 새로운 예측에 대해 LSTM을 다시 훈련하려면 어떻게해야합니까?

  26. 26

    Python-사전에 동일한 키를 가진 모든 키 값 평균

  27. 27

    시계열 예측에 사용할 가장 좋은 활성화 함수는 무엇입니까?

  28. 28

    평균에 가장 가까운 값과 위치 C를 검색하는 방법

  29. 29

    Pandas는 현재 날짜에 가장 가까운 값을 사용하여 그룹별로 평균을 계산합니다.

뜨겁다태그

보관