인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Bax님의 프로필 이미지
Bax

작성한 질문수

시계열 분석과 예측

딥러닝 스칼라 시계열 예측 (Python 실습)

예제를 실행하여 나온 결과가 영상과 살짝 다른 부분 질문

해결된 질문

작성

·

64

·

수정됨

1

안녕하세요. 덕분에 시계열LSTM 예측을 할 수 있어 감사합니다.

다름아니라
딥러닝 스칼라 시계열 예측 (Python 실습) 강의의 예제 코드를 그대로 실행하였는데요. 영상에서 나온 예측결과(14:45)와 예제에서의 예측 결과가 다릅니다.

코드는 달라진점이 없고 다른점은 텐서플로우 버전(2.17.0)인것 같은데 버전에 따라 예측결과도 달라지는지 아니면 다른 문제로 결과가 다른지 여쭙고 싶습니다.

  • 영상의 예측결과

image.png
  • 예제코드를 수정없이 그대로 실행시킨 예측결과

image.png


답변 3

1

루비네 코딩님의 프로필 이미지
루비네 코딩
지식공유자

안녕하세요.

좋은 질문 주셔서 감사합니다 😄

먼저 TensorFlow의 버전 이슈는 아닌것 같습니다.

모통 딥러닝 모델의 파라미터 (가중치와 바이어스)는 랜덤으로 초기화 됩니다.

그래서, 매번 새롭게 train 하고 test 해보면 결과 (오류)가 조금씩 다른 것을 알 수 있습니다.

대다수의 경우에는, 경미한 차이이기 때문에 무시하고는 합니다.

그런데 이 경우에는 조금 도드라지게 보이는 것 같기도 하네요 ㅠㅠ

그래서 다음과 같이 랜덤 시드 (seed)를 설정해서 모든 랜덤적 요소를 제거해 보세요.

  1. 노트북 상단에 새롭게 셀을 삽입하고 (4번 째 셀), 다음과 같이 설정합니다.

answer_11.png
  1. 아래와 같이 모델 파라미터를 초기화 해주는 kernel_initializer (Dense, LSTM layer), recurrent_initializer (LSTM layer)인자에도 랜덤 시드들 설정해 줍니다. 또한 bias는 0 값으로 초기화 되도록 합니다.

answer_12.png

주의1: 모든 시드값이 꼭 일치할 필요는 없습니다. 여기에서는 단지 관리가 쉬워서 같은 값으로 설정했습니다 (my_seed=1234). 시드값들이 서로 다르더라도 매번 동일한 조건이 적용된다는 것이 중요합니다.

주의2: bias는 시드를 설정하지 않았고 그냥 0 값으로 초기화 해 보았습니다.

여러번 세션을 새롭게 시작해서 실행해보았는데 MAPE가 소수점 이하 4자리 까지 매번 같은 값이 나오는 것을 확인해 보았습니다.

시드 (my_seed)를 바꾸어 보시면 더욱 만족스러운 MAPE가 나오는 경우가 있습니다. 그 값으로 고정해 두시고 사용하면 되겠습니다.

정리해 보면, 딥러닝 모델의 파라미터는 랜덤적으로 초기화 되지만 시드를 설정해서 "매번 똑같이 반복되는" pseudo-random (유사 난수) 조건을 만들어 준 것입니다. "유사 난수"이기 때문에 MAPE는 재현되지만 실행해 보아야 실제 그 값을 알 수 있습니다 (!) 체계적으로 낮추는 방법은 없고 만족스러운 조건이 만들어 지도록 시드값 (my_seed)를 바꾸어 try 해보는 수 밖에는 없습니다.

도움이 되었기를 바래봅니다. 😀

루비네 코딩~

 

 

 

 

0

Bax님의 프로필 이미지
Bax
질문자

버전이 문제가 아니라(영향이 없진 않겠지만 여기선 아닌것 같습니다.)

- 아래 코드부터 실행할 때 마다 매법 예측 MAPE가 계속 올라갑니다.

# 예측 루프.
# 24 시간 예측.
n_predict= 24
for i in range(n_predict):
    X = data_seed_scaled
    y_pred = my_model.predict(X)
    y_last= y_pred[0,-1,0]             # 마지막 출력이 바로 y.
    data_seed_scaled = np.concatenate((data_seed_scaled, np.array([y_last]).reshape(1,-1,1)), axis=1)
  • 모델 학습부터 다시 쭉 실행해보았더니 예측 MAPE가 다시 낮아졌습니다. 이후 다시 예측 루프를 돌릴때마다 예측 MAPE는 계속 올라갑니다.


    이렇게 된다면 모델 학습해봤자 예측은 한번만 쓸모있게 되는건지 여쭙고 싶습니다.
    (모델을 기껏 학습했지만 예측을 여러번 실행할 수록 예측이 점점 잘 안되니깐요.)

    제가 지식이 많이 부족하여 질문이 두서없는부분 양해바랍니다.

0

Bax님의 프로필 이미지
Bax
질문자

텐서플로우 버전을 2.15.0으로 바꾸니깐 다음과 같이 바뀌네요. 버전 문제였던것 같습니다. (추가로 버전이 다르면 예측결과가 다른 이유를 알 수 있을까요?)

image.png

또한 버전을 맞추어도 예측 MAPE는 4.72로 영상과 약간 다른 부분도 이유 알 수 있을까요?

Bax님의 프로필 이미지
Bax
질문자

텐서플로우 버전을 다시 2.17.0으로 바꾸니깐 이번엔 더 잘 예측되는것 같습니다. 이유가 무엇일까요?

image.png


이번에는 예측 MAPE가 3.82으로 나왔습니다.

Bax님의 프로필 이미지
Bax

작성한 질문수

질문하기