5. …..
…..
KODEX200의 시가, 고가, 저가, 종가를 위 부터 날짜순으로 정렬한 후 날짜가 있는 열과
항목이 있는 행을 제거 한 후 csv 파일로 저장.( 2015. 12. 07 ~ 2018. 05. 18 데이터 )
6. 입력 데이터 reshape -> [598, 1, 4]
입력 데이터 <= 입력 데이터 전체에 대해 입력 데
이터 중 최댓값으로 나누기.
출력 데이터 reshape -> [598, 1]
출력 데이터 <= 출력 데이터 전체에 대해 출력 데
이터 중 최댓값으로 나누기.
학습률 = 0.005
7. 신경망 구조
LSTM 사용 (2048). 입력 크기 = [1, 4].
활성화 함수 = tanh
출력 1개의 값. 활성화 함수 = Linear
Rmsprop & mse 사용
8. 학습 실행시키는 함수
배치 크기 = 64, epoch = 50
예측할 입력 값을 받아 예측 후 결과 값 리턴
p_x = 예측에 사용할 데이터(reshape & 최댓값 나누기)
예측 실행 & 예측 값 리턴
9. 실제 종가 데이터와 예측한 종가 데이터의 그래프
x축은 날짜. 1일 증가 할 때 마다 x축 1 증가.
실제 종가 그래프
예측 종가 그래프
x축은 날짜 증가. 1일 증가시 x축 1 증가.
y축은 종가 데이터.
위의 그래프는 실제 종가에 대한 그래프, 아래의 그래프는 예측 값에 대한 종가 그래프
10. Main 부분
Lstm 학습 실행
Data 읽기 & 처리
LSTM으로 5/21 종가 예측
5/21 실제 종가 = 31645
2015.12.07~2018.05.18 실제 종가 & 예측 종가 그래프
11. 학습률 0.05로 100 epoch 학습시킨 결과
위의 그래프는 실제 종가 그래프
아래의 그래프는 학습된 모델에 대한 종가 그래프
Loss = 0.0030
5.21에 대한 예측 종가는 31789.6원이고
5.21의 실제 종가는 31645원 이다.
학습률을 변경하고 학습을 더 많이 시키면 더 좋은
결과가 나오게 할 수 있다.
12. 학습 데이터에 대해 최댓값을 나눈 코드
학습 데이터에 대해 최댓값을
나누지 않은 코드
학습률 = 0.05로 100epoch 학습
학습률 = 0.05로 100epoch 학습
13. 학습 데이터에 대해 최댓값을 나눈 결과
학습 데이터에 대해 최댓값을
나누지 않은 결과
학습 데이터에 대해 최댓값을 나눈 경우가 더 잘 학습 된 결과를 보여준다.
아래의 경우가 학습 데이터의 크기가 크기 때문에 loss가 더 크게 나타 날 수 있음.
결과 예측 값을 이용한 그래프 비교도 해 볼 필요가 있다.
14. 학습 데이터에 대해 최댓값을 나눈 그래프
아래가 학습 된 그래프
학습 데이터에 대해 최댓값을
나누지 않은 코드
아래가 학습 된 그래프
학습 데이터에 대해 최댓값을 나눈 경우가 더 잘 학습 된 모양의 그래프를 보여준다
15. 입력 데이터들 간에 값의 차이가 크면, 데이터 분포 그래프가 삐뚤어진
모양을 가지게 되어 학습이 잘 이루어지지 않을 수 있다.
일정 범위 안에 데이터가 분포 할 수 있도록 normalization 해주는 것이 좋다.
최댓값을 나누는 것 뿐만 아니라 standardization(z-표준화)과 같은
다양한 normalization 방법이 존재한다.
17. 신경망 크기가 2048인 경우의 결과
신경망 크기가 1024인 경우의 결과
신경망의 크기가 큰 경우가 평균적으로 더 잘 학습 된 결과를 보여준다
(가중치의 초기화 값으로 인해 학습 때 마다 결과 다르게 나타 날 수 있음)
18. 신경망 크기가 2048인 경우의 그래프 신경망 크기가 1024인 경우의 그래프
Loss의 차이가 크지 않기 때문에 그래프의 차이는 크게 나타나지 않는다.
19. 신경망의 크기가 클 수록 복잡한 경우를 학습 할 수 있지만
필요 이상으로 신경망이 커지는 경우
학습 결과값의 차이가 크게 나타나지 않음.
(개인적인 생각.)
20. 입력 데이터들 간에 값의 차이가 크면, 데이터 분포 그래프가 삐뚤어진
모양을 가지게 되어 학습이 잘 이루어지지 않을 수 있다.
일정 범위 안에 데이터가 분포 할 수 있도록 normalization 해주는 것이 좋다.
신경망의 크기가 클 수록 복잡한 경우를 학습 할 수 있지만 필요
이상으로 신경망이 커지는 경우 학습 결과값의 차이가 크게 나타나지 않음.
(개인적인 생각.)
21. 여러 개의 입력 데이터를 사용 할 때 데이터를 일정 범위
안에 분포시키기 위해 normalization이 필요한 경우
가 있다는 것을 알게 되었다.
시가, 고가, 저가, 종가 데이터 이외에 주가에 영향을 주
는 기타 데이터를 추가 해주면 얼마나 더 정확한 결과 값
이 나올지 의문을 가지게 되었다.