2. 데이터 전처리 & 변수 생성
인공지능으로 암호화폐 미래 가격 예측해보기
지난 인공지능으로 암호화폐 미래 가격 예측해보기에서는 인공지능을 통해 암호화폐 미래 가격을 예측하기 위해 암호화폐 가격 데이터를 내려받는 과정을 살펴보았습니다. 일반적으로 최신 인공지능은 많은 발전을 이루어오면서 생성한 데이터를 바로 입력하더라도 생각보다 훌륭한 성능을 보여줄 때가 많습니다. 하지만 생성한 데이터를 바로 인공지능 모델에 사용하기 위해서는 중요한 가정이 몇 가지 필요합니다.
https://brunch.co.kr/@8d1b089f514b4d5/59
첫 번째로 생성한 데이터가 깨끗해야 하며, 두 번째로 인공지능이 스스로 학습하기에 충분한 정보가 데이터에 담겨있어야 합니다. 문제는 실제 데이터를 살펴보았을 때 이 두 가지 전제가 모두 충족되는 경우는 생각보다 그리 흔하지 않다는 점입니다. 생성한 데이터가 깨끗하다는 것은 데이터에 전처리를 가할 내용이 거의 없다는 것을 의미합니다. 그리고 다시 데이터 전처리란 데이터를 활용하기 위해 분석가가 데이터에 필요한 조작을 가하는 모든 과정을 뜻합니다. 즉, 데이터에 결측치가 있거나 잘못 입력된 데이터가 있는 등 데이터 그 자체가 깔끔하지 않을수록 빠르게 데이터를 활용할 수 없습니다.
다만 데이터가 깨끗하지 못한 경우를 생각해보면, 이는 분석가가 어느 정도 전처리에 시간을 쏟음으로써 웬만한 경우는 모두 해결이 가능합니다. 하지만 인공지능이 스스로 학습하기에 충분한 정보가 데이터에 담겨있지 않는 다면 이것은 또 다른 차원의 문제로 전환됩니다. 최악의 경우에는 아예 새로운 데이터가 추가되지 않는 이상 문제 해결이 절대 불가능할 수도 있습니다. 그렇기에 데이터 분석가는 주어진 데이터를 통해 어떻게든 유의미한 정보를 파생시키려고 하며 이 과정을 피처 엔지니어링(Feature Engineering)이라고 합니다.
다시 암호화폐 가격 예측이라는 본래의 주제로 돌아와 우리는 시초가, 고가, 저가, 종가, 거래량, 거래액이라는 정보를 가진 데이터를 생성했습니다. 이때, 데이터 전처리가 필요한 가장 대표적인 사례인 결측치(데이터가 삽입되지 않은 경우)를 살펴보면 아래 그림과 같습니다. 다행히 우리의 데이터에는 단순히 정리를 위해서 데이터 전처리가 필요하지는 않은 것을 알 수 있습니다. 이제 우리가 생각해야 하는 것은 우리의 데이터가 인공지능 모델이 학습을 진행하기에 충분한 정보를 담고 있는가?입니다.
이 문제를 판단하기 위해 가장 좋은 것은 분석가가 충분한 도메인 지식을 가지고 있는 것입니다. 이 사례에서는 암호화폐 가격 예측을 진행하고 있으므로, 암호화폐 시장 혹은 투자 시장에 대한 깊은 지식이 곧 도메인 지식이 됩니다. 이 사례에서는 종가, 거래량 등의 데이터로는 5일 뒤의 암호화폐 가격을 예측하기에 무리가 있다고 판단을 해보겠습니다. 물론 이 데이터를 바로 활용하더라도 인공지능 모델 생성 자체에는 큰 문제가 없을 것이지만 가격 하나의 요소만으로는 복잡한 추세를 예상하기에 현실적으로 무리가 있을 것이기 때문입니다.
현재 데이터에 인공지능이 학습을 할만한 충분한 정보가 담겨있지 않다고 판단이 되면 그다음 단계는 인공지능이 학습을 진행할 수 있도록 유의미한 정보를 억지로라도 생성해주는 것입니다. 즉, 피처 엔지니어링 단계가 필요합니다. 다행히 주식을 포함해 금융 시장에서는 다양한 분석 지표들이 개발되어 있습니다. 이는 각종 전문가들이 가격 추세를 예측하고 설명하기 위해 사전에 만들어 둔 지표로 우리는 그 지표들을 활용해 추가적인 정보를 생성할 수 있습니다. 그리고 여기서는 암호화폐를 포함해 주식, 선물 등 다양한 금융 상품들에 대한 설명 지표로써 역할을 하고 있는 RSI(Relative Strength Index)를 활용해보도록 하겠습니다.
RSI는 우리말로 상대강도지수라고 하며 가격의 상승 정도와 하락 정도의 상대적 강도를 나타내는 지수입니다. 즉, RSI를 정밀하게 구할 수 있으면 이 암호화폐 가격에 상승 압력이 어느 정도 있는지 반대로 하강 압력은 어느 정도 있는지에 대한 정보가 담기게 되어 인공지능에게 훨씬 더 정확한 예측을 기대해볼 수 있습니다. 그리고 구체적으로 RSI(상대강도지수)를 구하는 방법은 아래와 같이 구할 수 있으며 이는 우리의 데이터를 통해 충분히 계산이 가능함을 알 수 있습니다(출처 : 위키백과).
주어진 기간의 모든 가격에 대해서
가격이 전일 가격보다 상승한 날의 상승분은 U(up) 값이라고 하고,
가격이 전일 가격보다 하락한 날의 하락분은 D(down) 값이라고 한다.
U값과 D값의 평균값을 구하여 그것을 각각 AU(average ups)와 AD(average downs)라 한다.
AU를 AD값으로 나눈 것을 RS(relative strength) 값이라고 한다. RS 값이 크다는 것은 일정 기간 하락한 폭보다 상승한 폭이 크다는 것을 의미한다.
다음 계산에 의하여 RSI 값을 구한다.
RSI 계산 공식 : RSI = RS / (1 + RS)
다만, 우리의 데이터는 모두 하루에 1개씩 가격을 표시하도록 세팅되어 있습니다. 이는 모든 데이터를 생성함에 있어 하루 단위로 값을 생성하는 것이 데이터의 통일성에 유리하다는 것을 의미합니다. 그래서 우리는 하루 단위로 각 암호화폐 가격의 RSI 개념을 산출하기 위해 4시간 단위로 데이터를 다시 수집해 하루에 6개의 데이터를 생성하고 이를 통해 RSI를 만들어 다시 하루 단위의 평균적인 RSI를 붙여주는 방식을 이용하겠습니다. 이를 코드를 통해 만들면 아래와 같은 형식으로 구현이 가능합니다.
이 과정을 마쳤다면 RSI라는 새로운 정보를 가진 데이터가 생성이 완료된 것입니다. 다만 데이터 처리 및 생성의 마지막 단계로 데이터의 시간 개념을 다시 곱씹어볼 필요가 있습니다. 우리의 목표는 5일 뒤의 암호화폐 가격을 예측하는 것입니다. 그리고 이를 위해서는 최근 데이터의 흐름을 다양하게 보여주는 것이 유리합니다. 하지만 우리는 하나의 데이터에 하루 동안에 생성되는 정보만을 담고 있습니다. 하루 데이터가 아닌 여러 기간의 데이터를 종합적으로 활용하면 더욱 정밀한 예측 시스템을 만들 수 있다는 것은 누구도 부정할 수 없습니다.
이를 위해 마지막으로 특정 시점을 기준으로 1일 전 데이터, 2일 전 데이터 ~ 30일 전 데이터를 끌고 들어와 새로운 데이터셋을 다시 한번 구성하겠습니다. 이는 머신러닝 분야에서 Lag변수 생성이라고도 불리는 방법입니다. 같은 암호화폐의 이전 시점의 가격 정보를 새로운 컬럼(열)으로 가져와 여러 시점의 데이터를 동시에 활용하는 방식입니다. 최종적으로 위와 같이 과거 시점의 데이터를 생성하고 우리의 목표일 5일 뒤의 암호화폐 가격(종속 변수)을 만들며 데이터 셋 생성 과정을 마무리할 수 있습니다.
위 과정을 모두 거친다면 우리는 약 35,000개의 데이터를 가지며 93개의 정보를 가진 최종 데이터 셋을 생성할 수 있습니다. 이제 데이터를 수집하고 필요한 데이터 처리 작업과 변수 생성 작업을 진행해 데이터 셋 자체의 정돈을 마무리하게 되었습니다. 이제 데이터 셋에 대한 정리가 마무리되었으니 다음은 머신러닝, 딥러닝 등 인공지능 모델을 사용해서 직접적으로 5일 뒤의 암호화폐 가격을 예측하는 일만 남았습니다. 가격 예측을 위한 준비 과정이 모두 끝나고 본 게임이 남은 상황이라 이해할 수 있습니다.
다음 인공지능으로 암호화폐 미래 가격 예측해보기 3편에서는 실제 머신러닝 모델을 통해 가격을 예측하는 작업을 진행해보도록 하겠습니다. 이 과정을 거치면 우리는 인공지능이 생각하는 암호화폐의 5일 뒤 가격을 파악할 수 있게 됩니다.