데하! 안녕하세요 DevStone입니다!
코인 자동매매를 이대로 끝내기에는 아쉬운 거 같아서
요즘 핫한 딥러닝 기술을 사용하여 코인의 가격을 예측해 보겠습니다.
사용언어 : Python
우선 사용 모듈은 위와 같습니다.
pyupbit는 이제 설명안해도 모두 아실 거라 생각하고!
우선 fbprophet모듈 안에 있는 Prophet 함수를 가져옵니다.
여기서 fbprophet Prophet란 페이스북에서 제공하는 시계열 데이터 분석 라이브러리입니다.
또한 표를 사용하여 시각적으로 보여주기 위해 plot 또한 추가로 가져와 줍니다.
업비트 시세조회를 사용하여 대표 코인인 비트코인 데이터를 1시간 단위로 200개
총 200시간 데이터를 가져와 줍니다.
그 후 데이터 프레임을 만들어 주기 위해 시간과 종가만 남겨 줍니다.
데이터셋까지 준비했으니 이제 본격적으로 학습을 해야겠죠?
model.fit(data)를 사용하여 학습을 시작합니다.
학습이 완료된 후 앞으로 24시간 동안의 흐름을 예측합니다.
periods, freq 옵션을 변경하여 앞으로 1시간 혹은 하루 단위 등
다양한 옵션으로 변경이 가능합니다.
이제 예측한 주가를 그래프로 표시합니다.
검은색 점이 실제 가격이고 파란색 선이 생성한 모델이 예측한 가격입니다.
빨간색 점선은 추세가 변환되는 지점을 표시합니다.
이렇게만 봤을 때 뭔가 정확도가 떨어진다 라는 생각이 들지 않으신가요??
여기서 우리는 모델을 튜닝해야 한다는 걸 느끼고 다시 위로 돌아가 모델 튜닝을 진행합니다.
제가 튜닝한 값이 절대로 정답이 아닙니다. 각자 공부하여 적절한 수치를
찾는 것이 제일 중요합니다. 옵션 값을 하나씩 설명해 보자면
seasonality_mode는 ‘additive ‘ or ‘multiplicative’ 둘 중 하나를 설정해 줘야 합니다.
쉽게 설명하자면 additive는 주기가 일정할 때 사용하고
multiplicative는 주기가 규칙적이지 않을 때 사용합니다.
코인은 워낙 변동이 크기 때문에 multiplicative로 옵션을 지정해 줍니다.
※default 값은 additive입니다.
다음으로
changepoint_prior_scale는 changepoint(trend)의 유연성 조절입니다.
changepoint_prior_scale를 0.5 정도로 올려 조금 더 민감하게 감지하도록 설정하였습니다.
changepoint_prior_scale를 과도하게 올릴 경우 실제 가격과 예측 가격이 상당히 일치하게 됩니다.
하지만 결국 학습된 데이터기 때문에 미래 예측에 오히려 정확도가 떨어지게 됩니다.
이를 overfitting(과적합) 상태라고 합니다. 따라서 값을 적당하게 조절하여
언더 피팅과 오버 피팅을 방지하고 적절한 수치를 찾아야 합니다.
※과적합 상태란 machine learning에서 학습 데이터를 과하게 학습하는 것을 뜻합니다.
※defalut 값은 0.05입니다.
다음으로 changepoint_range
prophet은 전체 데이터에서 변동점을 찾는 것이 아니라 overfitting(과적합)을 피하기 위해
학습 데이터의 앞부분 80% 정도의 데이터를 사용하여 예측합니다.
이때 changepoint_range를 바꾸면 조정이 가능합니다.
※default 값은 0.8입니다.
튜닝 후 결과입니다.
보기 좋게 changepoint를 지워 보겠습니다!
이전 모델보다 상당히 정확도가 올라간 걸 확인하실 수 있습니다.
트렌드를 그래프로 표시해 보겠습니다.
우리는 여기서 트렌드는 상승을 예측하는 것을 알 수 있으며
하루 24시간 동안 몇 시 부근이 가격이 낮고 높은 지를 확인할 수 있습니다!
마지막으로 제일 중요하죠? 예측가에 대하여 출력해 보았습니다.
딥러닝을 한다고 100퍼센트 정확한 건 아닙니다.
해당 글은 투자 권유 글이 아니며 단지 딥러닝을 활용하여 예측해볼 수 있다.
그 이상 그 이하도 아닙니다. 모든 투자는 본인에게 책임이 있으며 해당 프로그램을 맹신하여서는 안됩니다!
앞서 포스팅했던 자동매매 방법으로 자신의 로직을 구현 후 딥러닝은 그저 참고 자료로 활용하는 걸 추천합니다!
위의 소스는 조금 수정하시면 주식 예측에도 사용 가능합니다.
해당 소스는 git에서 확인하실 수 있습니다.
https://github.com/Maker-Kim/Study/blob/master/python/Coin_Ai.ipynb
Maker-Kim/Study
Contribute to Maker-Kim/Study development by creating an account on GitHub.
github.com
'개발 > AI' 카테고리의 다른 글
가위바위보 게임AI (0) | 2021.06.16 |
---|