안녕하세요, comalmot 입니다.
최근에 포스팅이 많이 뜸했습니다. 평소에 기록을 하고 그러는 것 보다는 저 혼자 간직하는 것을 좋아하다보니 블로그 포스팅을 잘 안하게 되는 것 같습니다.
이제 길었던 수험생 생활도 끝이 났고, 대학이라는 새로운 발판을 만났으니 기회를 잘 활용하여 더욱 더 멋진 사람이 되고 싶습니다.
제가 최근에 관심을 가지게 된 분야가 있습니다. 바로 머신러닝인데요, 아무래도 정보보안과 머신러닝을 어떻게 활용할 수 있을까를 혼자서 생각하다보니 머신러닝에 대해 많은 관심을 가지게 된 것 같습니다.
이번 포스팅에서는 비트코인의 시세, 정확히는 3가지의 상태(가격 오름, 가격 내림, 가격 변동 없음)를 예측하는 모델을 짜보려고 합니다.
Timestamp, Open, Close를 중요 Feature로 잡고 학습을 진행하였습니다.
해당 데이터는 kaggle의 아래 URL에서 가져왔음을 미리 알려드리며, 혹여 문제가 될 경우 이 글은 비밀글로 전환되거나 삭제될 것임을 미리 알려드립니다.
https://www.kaggle.com/mczielinski/bitcoin-historical-data
Bitcoin Historical Data
Bitcoin data at 1-min intervals from select exchanges, Jan 2012 to Dec 2020
www.kaggle.com
해당 데이터셋은 비트코인이 처음으로 발행된 해인 2009년부터 2020년 12월까지의 비트코인의 시세를 다루고 있습니다. 다만 NaN이라고 표시된 부분은 정보가 없는 부분이기 때문에 해당 데이터를 삭제해주었습니다.
6개의 컬럼으로 이루어져 있으며, 각 컬럼은
Timestamp, Open, High, Low, Close, Volume, Volume(Currency)으로, 아래와 같이 이루어져 있습니다.
- Timestamp : 해당 Window의 시작 시간을 의미하며, Unix Timestamp로 이루어져 있습니다.
- Open : 해당 Window의 시작 시간의 가격을 의미합니다. (저는 블록 생성 시의 시세로 이해하였습니다. 주식으로 치면.. 장 시작할때의 가격이랄까요?)
- High : 해당 Window가 활성 중일 때의 가장 높은 시세를 의미합니다. (저는 블록 생성 ~ 블록 닫힘(?) 상태 사이에서의 최고가로 이해하였습니다.)
- Close : 해당 Window가 활성 중일 때의 가장 낮은 시세를 의미합니다.
- Volume : 기간 내 종가입니다.
- Volume(Currency) : 해당 Window에서 거래된 BTC의 양입니다.
저는 scikit-learn의 SVM(Support Vector Machine) 모듈을 활용하여 데이터셋을 학습시켜 세 가지의 상태로 Classification 하도록 프로그래밍하였습니다. 우선 저의 노트북은 딥러닝을 하기엔 부족한 사양을 가지고 있기 때문에 학습 데이터 1만개, 테스트 데이터 1천개로 정확도를 테스트해보았습니다.

정확도는 43%로, 처참한 수준입니다. 그럼에도 불구하고, 43%를 제 노트북으로 맞췄다는 사실이 중요하겠죠.
다른 알고리즘을 쓰게 되면 어떻게 될까요? Keras를 활용하면 어떻게 될까요?
다음 포스팅에서는 Keras에서 사용하는 Optimizer에 대해서 알아보도록 하겠습니다.
포스팅하려고 했는데.. 이미 있네요..? 다른 주제로 찾아뵙도록 하겠습니다.
* 코드는 나중에 제 Study를 위한 Repository에 올려놓도록 하겠습니다.