테키테크 TEKITECH

[스파르타코딩클럽] 3주차 숙제 : GAN-LSTM 모델로 주가예측 해보기 - 1. 개념 복습 및 학습 데이터 준비 본문

Tech/ML·DL

[스파르타코딩클럽] 3주차 숙제 : GAN-LSTM 모델로 주가예측 해보기 - 1. 개념 복습 및 학습 데이터 준비

TEKI 2021. 9. 21. 00:31

원래 지난주에 4주 차 진도를 끝내고 이번 주에는 5주 차 강의를 듣고 있어야 했다. 일이 바빠서 수업을 계속 미뤘더니 결국 지난 토요일에 찐-한 관리 매니저에게 전화가 왔다!! 그래서 이렇게 밀린 강의와 함께하는 행복한 추석 연휴를 보내게 되었다 :D

목차


1. 개념 복습 및 학습 데이터 준비
    1-1. 학습 데이터
    2-2. 학습 모델
    3-3. 질문

2. Colab에서 GAN-LSTM 모델로 주가예측 해보기 (tensorflow)
3. 질문 해결하기


 

학습 데이터

이번 숙제에서는 Yahoo Finance에서 제공하는 Bank Of America의 1년 치 주가 데이터를 사용했다.

Yahoo Finance - Bank Of America 주가 정보 조회 페이지 (사진 눌러서 페이지 이동)

 

Filter
종목 Bank of America Corporation (BAC)
NYSE - Nasdaq Real Time Price. Currency in USD
기간 Sep 20, 2020 - Sep 20, 2021
항목 Historical Price / Dividends Only / Stock Splits / Capital Gain
단위 Daily / Weekly / Monthly

 

Yahoo Finance에서 먼저 종목을 고르면, 해당 종목의 과거 주가 정보를 "Historical Data" 메뉴에서 "Time Period (기간)", "Show (조회 항목)",  "Frequency (조회 단위)"을 선택할 수 있다. 선택한 조건을 "APPLY" 버튼을 눌러 적용하면 아래에 결과 데이터가 나오고, "Download" 버튼을 눌러 CSV 파일로 다운로드할 수 있다. 

 

 

학습 모델

주가는 시계열 특성을 가진 데이터이다. 따라서 이번 숙제에서 주가 예측을 위해 가장 실제에 근접한 예측을 할 수 있다고 평가받는 딥러닝 모델인 GAN에 트렌드 분석을 위한 LSTM을 결합한 GAN-LSTM 모델을 사용한다. 시계열 분석에는 LSTM 외에도 RNN이나 GRU와 같은 모델도 사용된다고 한다. 또, GAN을 시계열 최적화하여 응용한 Facebook의 Prophet 등 다양한 모델이 있다고 한다. 이러한 모델들은 나중에 더 알아보기로 하고 오늘은 GAN과 LSTM 모델에 대해 복습 겸 정리해보았다.

 

[1] GAN (Generative Adversarial Networks)

GAN 모델을 처음 제안한 Ian Goodfellow는 이 모델의 원리를 화폐 위조범과 경찰 비유를 들어 설명했다. 경찰은 화폐 중에서 위조 화폐를 찾아내려고 한다. 경찰에게 적발되지 않기 위해서 범인은 더 진짜 같은 위조 화폐를 만들기 위해 노력한다. 이때, 범인이 만들어내려고 하는 가장 완벽한 위조 화폐는 경찰이 진위를 맞힐 확률이 반, 틀릴 확률이 반이 된다는 것이 GAN의 기본 아이디어이다. Ian G. 의 설명을 듣다 보니 영화 <Catch Me If You Can>이 생각난다. 그래서 디카프리오와 톰 행크스를 넣은 GAN 모델을 그려보았다.

 

GAN Model with &amp;lt;Catch Me If You Can&amp;gt;

 

Description
1 Z Generator의 Input으로, Generator가 Fake Data를 생성하기 위해 사용하는 랜덤 noise를 생성하기 위한 임의의 벡터값
2 X 학습을 위해 사용하는 Real Data로, Discriminator가 Real이라고 판단해야 하는 진짜
3 G(Z) Generator가 Z를 사용해서 만들어낸 Fake Data로, Discriminator가 Fake라고 판단해야 하는 가짜
4 Loss(G) GAN의 Loss Function 중 완벽한 Fake Data를 만들도록 하는 것
즉, Discriminator가 틀린 판단을 하도록 하는 것
5 Loss(D) GAN의 Loss Function 중 Discriminator가 완벽하게 정확한 판단을 하도록 하는 것
6 D(G(Z)) Discriminator가 Fake Data인 G(Z)를 판단한 결과
7 D(X) Discriminator가 Real Data인 X를 판단한 결과

 

[2] LSTM (Long Short Term Memory Network)

LSTM은 RNN 모델에서 시간 차이가 커질수록 기억하기 어렵다는 단점을 보완한 시계열 최적화 모델로, long-term과 short-term memory를 아우른다는 뜻에서 Long Short Term Memory Network라 부른다고 한다. LSTM는 2주차에 다루었기 때문에(업로드 준비중) 넘어간다.

 

 

▣ 질문

1. GAN에서 Generator가 가짜 데이터를 생성하기 위해 Z 이외에 어떤 데이터를 input으로 받고 사용하는가?
- G와 D가 한 차례 핑퐁을 하고 나면 그 결과를 기반으로 G가 더 발전한 가짜 데이터를 생성한다. 이 때, 어떤 식으로 결과를 받고 활용하는건지 코드를 보지 않아서 잘 이해가 되지 않는다. 

 

 


※ 참고 자료와 이미지 출처 ※

더보기

[1] Yahoo Finance - BOA
[2] Goodfellow, I. (2016). NIPS 2016 Tutorial: Generative Adversarial Networks. arXiv preprint arXiv:1701.00160.
[3] 시계열 분석 이론의 기초

 

※ 학습 데이터와 모델 선택은 스파르타 코딩클럽 <실무에 바로쓰는 AI 예측/추천> 수업을 따름
※ Python 코드는 스파르타 코딩클럽 <실무에 바로쓰는 AI 예측/추천> 수업에서 제공한 코드를 바탕으로 함

 

반응형
Comments