실제 주가를 RNN으로 구성해보자
1. 주가 데이터 모집
삼성전자의 주식 가격과 KOSPI200의 가격을 이용해, 내일의 삼성전자 주가를 예측하는 모델을 만들어 보자.
성능 비교하기
- 삼성전자 한 가지만을 가지고 DNN, LSTM으로 구성한 모델과 입력 데이터가 두 가지 (삼성전자, KOSPI200 지수)이므로 두 가지 데이터를 단순 DNN, LSTM으로 구성한 모델과 비교
- 앙상블(다:1)로 구성해서 비교
데이터는 삼성전자 주가 데이터와 KOSPI20지수를 csv파일로 다운로드 받는다
2. 데이터 저장
데이터를 효과적으로 사용하기 위해 csv 파일을 불러와서 numpy파일로 저장하여 작업한다
3. panda를 numpy로 변경 후 저장
pandas 데이터를 numpy로 바꾸는 방법은 pandas 데이터에 '.values'를 붙여주면 된다
데이터들을 각각 kospi200.npy, samsung.npy 데이터를 저장한다. 앞으로 npy데이터를 불러서 작업하면 된다.
https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH11/11_2.py
4. numpy 데이터 불러오기
앞에서 저장한 데이터들을 numpy로 불러오기
5. DNN 구성하기
삼성전자의 데이터만 가지고 DNN구성(다:1)해보기
사용할 데이터는
x값: 삼성전자의 시가, 고가, 저가, 종가. 거래량
y값: 삼성전자의 종가
x의 컬럼은 총 5개이고, y의 컬럼은 총 1개이므로 총 426일분의 데이터를 Split()이용해 5개씩 잘라서 데이터셋을 구성한다.
을 이용해 세 번째 컬럼(종가) 데이터만을 y값에 준다.
5-1. 데이터 전처리
사이킷 런의 train_test_split()이용해서 train, test를 분리하고,
사이킷 런의 StandardScaler를 이용해 전처리를 한다 -> StandardScaler는 2차원 데이터만 작업 가능하기 때문에 꼭 reshape을 통해 처리해줘야 함
5-2. 컴파일 및 훈련, 완성
개선이 없는 에포가 20회 이상 나오면 조기 종효 하도록 훈련하기
3~5까지의 전체 코드
https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH11/11_5.py
6. LSTM 구성하기
완성된 삼성전자 DNN 모델 활용해 LSTM 모델 구성하기
데이터의 shape을 수정하면 됨
: 데이터 전처리 이전에 데이터를 shape(None, 5, 5)를 (None, 25)로 reshape한 전처리 이후 데이터를 다시 (None, 5, 5,)로 reshape하여 데이터 부분 하단에 추가하면 된다!
실행 결과를 확인하면 기존 Dense모델보다 훨씬 많은 시간이 소요되지만, loss값이 줄지 않는 걸 확인할 수 있다.
https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH11/11_6.py
7. DNN 앙상블 구현하기
삼성전자 데이터에 KOSPI200 데이터를 엮어서 앙상블 모델을 DNN으로 구성해보자
https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH11/11_7.py
8. LSTM 앙상블 구현하기
삼성전자와 KOSPI200지수를 앙상블로 LSTM 2개를 엮어서 삼성전자의 주가를 예측해보자
이전 소스의 shape부분을 LSTM의 shape에 맞춰서 (None, 5, 5)로 변경한다
https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH11/11_8.py
이대로 하면 결과값 중 Mse값이 매우 높고, 예측도 오히려 DNN이나 단순 LSTM보다 좋지 않게 나오기 때문에 하이퍼파라미터 튜닝이 꼭 필요하다. 시간이 나면 성능 개선되도록 하이퍼파라미터 튜닝 지속적으로 해보기!
이 교재를 완주하면서 테스트해본 소스코드는 모두 아래 저의 깃허브 링크에서 확인할 수 있습니다:)
https://github.com/yenyen31/Artificial-Intelligence-in-Finance
'DeepLearning' 카테고리의 다른 글
딥러닝으로 걷는 시계열 예측 [CH10] RNN 모델 정리 (0) | 2023.06.29 |
---|---|
딥러닝으로 걷는 시계열 예측 [CH08] 케라스 모델의 파라미터들과 기타 기법들 (0) | 2023.06.20 |
딥러닝으로 걷는 시계열 예측 [CH07] RNN (0) | 2023.05.31 |
딥러닝으로 걷는 시계열 예측 [CH06] 회귀 모델 총정리 (0) | 2023.05.24 |
딥러닝으로 걷는 시계열 예측 [CH05] 앙상블 (0) | 2023.05.23 |