오늘은 내가 관심있는 비트코인가격예측과 머신러닝 모두를 다룬, 한 개발자의 오피니언 글을 보고 포스팅해본다.

 

추후, 나도 머신러닝으로 가상화폐 가격예측을 개인프로젝트로 구상중인데, 매우 유용할 것 같았다.

 

< 나의 생각 정리 >

 

처음 데이터셋을 보고 "타임스탬프와 가격만으로 예측이 가능할까?" 의아했다.

아래 개발자 글의 결과를 보고 타갯밸류(가격)와 높은 상관관계를 가질만한 피쳐를 좀 더 추가해야겠다는 생각이 들었다.

 

해당 글은 자바스크립트 애플리케이션에서 텐서플로우를 사용했는데, 이를 파이썬에서도 사용해봐야겠다고 생각했다.

파이썬에서 회귀모델 xgboost,catboost,lgbm등의 싸이킨런 머신러닝 모델들만 사용해본 나로써 텐서플로우는 색다른 접근방법이었다.

 

AI모델에 사용된 데이터의 형태를 어떤식으로 만들어 사용했는지 알게되어,

나중에 프로젝트할 때 참고해야겠다고 생각했다.

 

텐서플로우를 사용하여 예측해보고 내가 기존에 사용했던 모델들의 앙상블 예측 중 어떤것이 더 예측이 좋은지도 비교해봐야겠다.

 

 

< 개발자 글 내용 >

글의 대략적인 내용은 신경망을 학습시켜 기존 비트코인 가격의 변동데이터를 토대로 가격 예측을 수행한다는 것이다.

그리하여 실제 비트코인 가격과 비교하는 과정이다.

 

인공지능 알고리즘을 사용하여 '퀀트'라는 직군에도 관심이 많았던 나는 

과연 어떤 방법을 사용했을까? 매우 궁금했다.

 

노드(Node) 버전인 TensorFlow.js를 사용하여 자바스크립트 애플리케이션 환경에서 텐서플로우를 쓰는 방법이었다.

먼저 Node/NPM을 설치하고 텐서플로우를 설치한다.

 

-> 나는 파이썬을 주로 사용하기에, 이 오픈소스를 GPT4.0으로 변환시키며 어떻게 사용할지 고민해봐야겠다.

 

과거데이터는 CoinGecko API를 사용했다.

 

-> 코인게코는 내가 가상화폐 트레이딩을 할 때 정보를 얻기위해 자주 사용했던 사이트이다.

 

 

 

fetchPriceData와 trainAndPredict 모듈을 사용해 가격 데이터를 가져오고 AI를 실행한다.

 

 

< fetchPriceData 모듈의 반환 3가지 항목 >

- 타임스탬프와 가격의 배열

- 비트코인 가격 예측에 사용된 타임스탬프

- 그 시점의 실제 가격 ( AI예측값과 비교하기 위함 )

 

 

 

* 가격 데이터 가져오기

JSON구조로 실제 가격 목록을 얻어오고 [timestamp, price] 구조로 저장된다.

 

 

 

* 학습 및 예측

이런 형태로 처리하면 AI모델이 나머지로 학습할 수 있다고 한다.

 

 

* 텐서플로우를 통하여 모델학습을 시작하고 예측한다.

-> 기재된 구체적인 오픈소스 코드를 파이썬으로 변환하여 분석해봐야겠다.

 

시간과 가격, 두 개의 데이터요소를 개별적인 변수로 추출한 다음 정규화 한다. -> (정규화를 사용한 데이터전처리)

두 데이터 집합의 분산이 서로 근접하도록 하기 위함이다.

-> 두 데이터 집합값을 0~1범위로 압축하여 최소 오차를 찾는 경사하강 알고리즘의 효율성이 높아지고, 국지적국소 (로칼 미니마)에 갇히지 않게 방지해준다.

 

두 값에 대한 정규화 연산은 최대 및 최솟값을 찾고 실제 값에서 최솟값을 뺀 다음 최댓값에서 최솟값을 빼서 나오는 값으로 나누는 과정으로 구성된다. 다음으로, 데이터를 사용해 텐서플로우의 기본적인 빌딩 블록인 텐서를 만든다. 텐서는 n-차원으로 벡터를 강화한 것과 같다. 텐서는 차원 간의 상호작용을 위한 복잡한 연산을 지원한다. 텐서플로우를 사용하면 데이터를 텐서로 모델링한 다음 이 데이터를 사용해 모델을 학습시킬 수 있다.

 

다음은 신경망을 만들고 레이어를 추가한다.

 

텐서플로우를 통해, 간단한 '순차 네트워크'를 사용한다. (model.add, dense)

열에 각 레이어가 있고 추가할 수 있다. 각각은 신경망의 뉴런 레이어다.

dense : 각 뉴런이 다음 레이어의 다른 모든 뉴런과 연결된다는 것을 의미.

 

끝으로 옵티마이저를 “sgd”(확률적 경사 하강)로 설정하고 평균 제곱 오차 손실 함수를 사용해 모델을 컴파일한다

 

 

* 결과

 

예측성이 매우 떨어진다. 이유는 타임스탬프와 가격간에 아무런 실질적 관계가 없기 때문.

 

 

< 출처 >

https://www.itworld.co.kr/mainnews/307663

 

 

+ Recent posts