딥러닝(LSTM)을 이용한 테슬라 주가 예측 모델 만들기
- 오늘은 딥러닝을 이용한 테슬라 주가 예측 모델을 만들어 보았다.
모델링은 LSTM을 이용하여 진행하였는데, LSTM은 RNN의 한 종류로써 RNN과 비슷하게 기능하지만 LSTM같은 경우는 RNN의 "shot-term memory(단기기억)" 문제를 해결한다. LSTM은 "long shot term memory"(장기기억)을 보존 하는 능력이 있다. 아래 이미지와 같이 그 전 기억들을 기억하면서 출력값으로 나타낼 수 있다.
출처=(Yahoo Finance - Stock Market Live, Quotes, Business & Finance News)
- 예측 할 데이터는 테슬라 주가를 예측 할 예정이고, 데이터는 야후 파이낸스에서 가지고 왔다.
- 우선 가장 기본적으로 예측 할 모델에 대해서 데이터를 가져오고, 데이터가 옳바르게 들어가 있는지 확인을 해본다.
- 399개의 인덱스와 7개 컬럼이 있는 것을 확인 해 볼 수 있고,
이 중에 시가,고가,저가,종가가 있는데, 데이터 예측은 종가로 진행해 보도록 하였다.
- 데이터를 한 눈에 확인해보기 위해 차트를 이용해 시각화도 해보았다.
- 확실히 테슬라 주가가 몇 년 사이에 미친듯이 상승한 것을 볼 수 있다.
- 예측 모델을 하기 위해 숫자같은 경우는 피처스케일링을 해주어서 자릿수를 맞춰주는게 좋은데, 저 같은 경우는 MinMaxScaler로 피처스케일링을 진행하였다. MinMaxScaler은 0,1사이값으로 맞춰주기 때문에 컴퓨터가 모델링을 하기 편하고, MinMaxScaler을 하기 전에는 1차원으로 넣으면 에러가 나기 때문에 위의 이미지와 같이 2차원으로 바꾼 후 넣어주어야 한다.
나중에 값이 예측값이 얼마나 맞는지 확인하기 위해서 학습 할 train값과 test값을 나누어 주어야하는데 위의 이미지와 같이 0.8 : 0.2 비율로 나누어주었다.
- LSTM같은 경우는 모델링을 해줄 때 input_shape값에 3차원 값을 넣어주어야 하기 때문에 모델링을 하기 전에 반드시 shape로 차원을 확인 후 3차원이 아닐 경우 reshape로 3차원으로 변경을 미리해 주어야한다.
- 과거의 데이터를 기억하여 예측해야하는 주식같은 시계열 데이터는 모델링을 LSTM으로 진행하는 것이 적합하여,
LSTM으로 진행하였고, optimizer는 'adam', loss는 MSE로 진행하였다. MSE같은 경우는 숫자가 작을 수록 정답에 가까운 것을 확인 할 수 있기에 정확률을 넣지 않았다.
- 기존값과 비교하기 위해 학습을 시켜보았고, 예측값들이 MinMaxScaler로 인하여 0,1사이로 되있기 때문에 MinMaxScaler을 원래 값으로 변경시켜주는 inverse_transform을 실행시켜 원래 값으로 변경해주었다.
- 기존값과 예측값을 비교해 볼 수 있는데, 주식에서 많은 변수가 있고, 변동사항이 있기 때문에 맞추기는 쉬워보이지 않았다. 좀 더 공부하여 기술을 더 익혀서 주식에서 생길 수 있는 변수값들도 빅데이터로 학습을 시키면 앞으로 더 좋은 모델이 되지 않을 까 하는 생각을 한다. 아래 이미지는 차트로 변경하여 시각화 시켜 데이터프레임보다는 한 눈에 비교할 수 있기 때문에 편하게 볼 수 있게 하였다.