3. 머신러닝 모델링 수행
인공지능으로 암호화폐 미래 가격 예측해보기
인공지능을 통해 암호화폐 미래 가격을 예측하고 싶다면 당연히 인공지능 기법을 사용할 줄 알아야 합니다. 물론 이를 위해 데이터 셋을 준비하고 필요한 변수를 생성하는 데이터 처리 작업이 필요하긴 합니다만 이는 어디까지나 준비 과정일 뿐입니다. 실제 인공지능 모델을 사용하여 생성한 데이터를 통해 학습을 진행하는 것은 인공지능을 구현하는데 가장 중요한 과정입니다. 이를 본 주제인 인공지능을 통한 암호화폐 미래 가격 예측에 적용시켜 보면 인공지능에게 상황 별 암호화폐 가격 추이를 예측할 수 있도록 학습을 진행시키는 것이 그 내용이라 할 수 있습니다.
이 과정 중 가장 중요한 단어를 하나 뽑으라면 단연 학습이라는 단어입니다. 인공지능이 스스로 암호화폐 가격을 예측할 수 있도록 학습을 시켜줄 수 있다면 이를 사용하는 사람의 입장에서는 필요 시마다 데이터를 새로 넣어줘 필요한 시기의 암호화폐 가격 예측 수치를 새롭게 받아볼 수 있습니다. 그리고 우리는 지난 시간에 아래와 같은 형태의 최종 데이터셋을 생성하는 데 성공했습니다. 다만 이 데이터를 모두 인공지능 학습에 사용할 수는 없습니다.
일반적으로 머신러닝, 딥러닝 등 인공지능 학습 과정을 수행할 때는 생성한 데이터의 분할 작업이 필요합니다. 인공지능을 활용하는데 가장 핵심은 향후 새로운 데이터가 들어왔을 때 그 데이터를 기반으로 인공지능이 예측을 할 수 있도록 환경을 구성하는 것입니다. 하지만 현시점에서 가지고 있는 데이터를 모두 학습에만 사용한다면, 향후 새로운 데이터가 들어왔을 때 우리가 생성한 인공지능이 얼마나 높은 정확도를 보이며 예측을 진행할지 알 수 없습니다.
그래서 실제 인공지능 구현을 위해서는 데이터를 학습 데이터 셋과 검증 데이터 셋으로 나누어 학습 데이터만을 이용해 인공지능의 학습을 진행해야 합니다. 학습 데이터 셋을 통해 인공지능에게 학습을 진행하고 학습을 마친 인공지능이 향후 어느 정도의 정확도를 보여줄지를 사전에 떼어 놓았던 검증 데이터 셋을 통해 파악하는 개념입니다. 보통 데이터를 나누는 것에는 다양한 방법이 존재합니다. 우리는 암호화폐 가격 예측을 위한 본 예제에서 다음과 같이 학습, 검증, 테스트의 세 가지로 데이터를 나누는 방식을 활용하도록 하겠습니다.
만약 데이터를 학습용, 검증용 셋으로만 분리한다면 검증용 셋에서 원하는 성과가 나오지 않을 경우 검증용 셋에서 좋은 결과가 나올 때까지 인공지능의 학습을 다시 수행하게 됩니다. 하지만 이는 일반적인 데이터가 아닌 '검증용 데이터셋'에만 적합하게 학습된 모델을 탄생하게 만들 개연성이 높습니다. 따라서 순전히 최종 테스트만을 위한 데이터를 따로 떼어두고 나머지 중 학습과 검증용 셋을 다시 만들어 인공지능 모델을 학습시켜보도록 하겠습니다. 데이터 셋을 분할하는 것은 이해하기에 그 개념이 어려울 수는 있지만 실제 코드는 매우 간단하게 구현하는 것이 가능합니다.
먼저 이 예제에서는 가장 최근의 5일치 데이터를 모두 최종 테스트용 데이터로 이용했습니다. 성능을 점검함에 있어 과거 데이터보다는 최근 데이터를 이용하는 것이 더 합리적이라고 판단했기 때문입니다. 그리고 나머지 데이터 중에서는 랜덤 하게 데이터를 분할했습니다. 테스트 데이터를 제외한 데이터 중 80%를 학습용 데이터로, 나머지 20%는 검증용 데이터로 활용하여 인공지능에게 제공을 할 예정입니다.
다음 단계는 본격적인 학습 단계입니다. 인공지능 분야에는 머신러닝, 딥러닝을 포함하여 매우 다양한 모델들이 존재하고 있습니다. 그리고 그 수많은 모델 중 머신러닝 분야에서는 XGBoost, LightGBM, RandomForest 등의 모델이 유명세와 인기를 얻고 있습니다. 우리는 훌륭한 성능으로 정평이 난 이러한 모델들 중에서 XGBoost와 LightGBM 모델을 활용하여 실제 인공지능 모델을 만들고 학습을 진행시켜보도록 하겠습니다.
XGBoost와 LightGBM은 모두 부스팅이라는 개념을 활용한 인공지능 모델입니다. 다시 부스팅은 앙상블 모델 중 하나로 앙상블은 여러 가지 모델의 결과를 종합하여 사용하는 머신러닝 용어입니다. XGBoost와 Lightgbm은 모두 의사결정 나무(Decision Tree)라는 모델을 복수로 이용하여 앙상블 합니다. 마인드맵처럼 가지를 쳐가며 의사결정을 하는 것을 상상하면 의사결정 나무의 개념을 이해하기 쉽습니다. 또한 앙상블을 할 시 잘못 예측한 경우에 가중치를 두어 데이터셋을 다시 생성하고 학습을 재진행하게 되는데 이를 부스팅 기법이라 합니다. XGBoost와 LightGBM은 의사결정 나무를 만들어나가는 방법에만 차이가 있어 사실상 대동소이한 모델이라 볼 수 있습니다.
XGBoost와 LightGBM이라는 인공지들 모델이 무엇인지 정확히 설명하는 것은 매우 긴 시간이 필요합니다. 하지만 암호화폐 예측을 위해 머신러닝 모델을 당장 구현해야 하는 우리 입장에서는 이를 모두 자세하게 이해할 필요는 없습니다. 다행히 파이썬 프로그램은 간단하게 XGBoost와 LightGBM을 구현할 수 있도록 모든 기능을 제공하고 있습니다. 우리가 해야 할 일은 이 모델들에 어떤 데이터를 주고 그 결과가 어떻게 나오는지를 관찰하는 일입니다. 실제로 XGBoost의 모델 생성과 학습 진행은 실제 코드상에는 아래와 같이 매우 간결하게 나타낼 수 있습니다.
마찬가지로 LightGBM이라는 인공지능 모델 역시 매우 간단하게 구현이 가능합니다. 위의 XGBoost와 마찬가지로 몇 줄만의 코드로 구현을 할 수도 있지만 다른 방식으로 모델을 구현을 하는 것 역시 가능합니다. 다만 암호화폐 가격을 예측하는 본 예제의 경우 실제로 성능 좋은 모델을 생성하는 것보다는 실제 머신러닝 프로세스를 경험해 보는 것에 더 많은 의의를 두고 있습니다. 따라서 구현 방식을 조금 바꾸어 다음과 같이 LightGBM 인공지능 모델을 구현해보도록 하겠습니다.
머신러닝, 딥러닝을 모두 포함하여 인공지능 모델은 하나같이 매우 복잡한 구조를 보이고 있습니다. 때문에 이를 실제로 정확하게 이해하고 설명하기 위해서는 많은 노력이 필요하기도 합니다. 하지만 위의 예제에서 살펴보았듯 실제로 이를 구현하고 활용하는 것에는 그런 지식이 모두 필요 없을 수도 있습니다. 물론 수준 높은 데이터 분석가나 데이터 과학자가 되기 위해서는 모델에 대한 이해는 반드시 필요합니다.
하지만 그러한 사실과는 별개로 실제로 인공지능 모델을 우리가 만들어보고 학습을 진행하는 것은 생각보다 꽤 간단한 일이 될 수 있음을 이 예제를 통해 알 수 있습니다. 그 개념은 생각보다 복잡할 수 있지만 결론적으로 우리는 쉽게 인공지능 모델을 생성해냈고 또 학습까지 진행을 했습니다. 이제 남은 것은 우리가 생성하고 학습시킨 인공지능 모델이 실제로 어떤 성능을 보이는지 확인하는 일입니다.
인공지능으로 암호화폐 미래 가격 예측해보기 다음 편에서는 학습한 인공지능을 최종 데이터셋에 대입하여 어떤 결과를 예측하게 되는지를 살펴보도록 하겠습니다. 또 이러한 인공지능의 예측 결과에게는 어느 정도의 정확도를 기대할 수 있는 것인지, XGBoost와 LightGBM이라는 인공지능 모델은 어떤 데이터를 기반으로 암호화폐 가격을 예측하고 있는 것인지 살펴보며 전체 예제를 마무리해보도록 하겠습니다.