요즘 코로나 바이러스가 엄청나게 유행이다. 파이썬을 이용해서 코로나 바이러스 확진자를 예측해보자.
1. Technology
-
Python3
-
google colab
- pandas
- plotly
- facebook Prophet
- Data
1-1. google colab
코딩의 가상 환경을 코랩으로 잡았다. 그 이유는 크게 3가지다. 첫 번째는 개인적으로 편해서이다. 개발은 파이참(Pycharm), 연구는 코랩, 주피터 노트북을 많이 사용한다. 그렇기 때문에 딥러닝은 물론 전반적인 파이썬 프로그래밍에 가장 많이 사용되는 코랩을 가상환경으로 잡았다. 두 번째는 GPU가 약한 PC에서도 무료로 GPU, TPU를 사용할 수 있기 때문이다. 다만, 내 컴퓨터가 아니므로 새로 설치한 패키지가 저장되지 않는다는 점과 사용한 예제 파일이나 가중치 값이 유실될 수 있다는 단점이 있다. 마지막으로 GitHub 등과의 연동을 통해 자유롭게 소스를 올리고 가져올 수 있는 개발 환경을 제공한다는 것이다. 필자는 이 마지막 장점을 데이터를 가져오거나 연구할 때 가장 많이 이용한다.
이제부터 간단하게 사용될 기술들을 설명할 것이다.
1-2. Python3
인공지능 개발 및 딥러닝 기술에서 1위를 달리고 있는 언어이다. 대부분의 사람들이 인공지능 개발은 Python3로 한다. 가장 큰 장점은 라이브러리 및 프레임워크의 사용이 유리하기 때문이다. 매우 많은 양의 내장 라이브러리가 인공지능 개발 및 딥러닝 연구를 위해 존재한다는 것이 가장 큰 장점이다. 특히 Tensor Flow(높은 수준의 딥러닝 라이브러리), scikit-learn(데이터 분석 및 마이닝), konlpy(자연어 처리를 위한 한국어 태깅 라이브러리) 등 여러 수준 높은 라이브러리가 존재하기 때문이다. 요즘 자바나 자바스크립트로 Tensor flow-lite나 여러 기술들을 가져다 쓰지만 Python의 수준에 미치지 못한다. 그리고 무엇보다 가장 쉬운 언어 중 하나가 Pyhton이기 때문이다.
1-3. Pandas
Pandas는 많은 데이터를 처리하기 위해 Python에서 제공하는 데이터 분석 라이브러리다. Pandas는 고성능의 사용이 쉬운 데이터구조와 프로그래밍을 위한 데이터 분석 도구들을 제공한다. 데이터 분석에 있어 Pandas는 꼭 빠지지 않는다. 필자도 마찬가지다. 우리는 전 세계 코로나 바이러스 데이터 중 한국 데이터만 뽑아내야 하기 때문에 Pandas 사용을 빼놓을 수 없다. 우리의 데이터는 시계열 데이터기 때문에 Pandas를 사용할 것이다.
*Pandas의 장점: 통합된 시계열, 비시계열 데이터들을 함께 다룰 수 있다. 산술 연산과 한 축의 모든 값을 더하는 등 데이터 축약 연산을 수행할 수 있다. 데이터베이스처럼 데이터를 다룰 수 있다. 이것 이외에 여러 장점들이 많다. Pandas 또한 Python이 AI 개발에 빠지지 않는 것처럼 데이터 분석 분야에서 빠지지 않는 기술 중 한 가지이다.
1-4 Plotly
많은 개발자, 비개발자 분들이 사용하는 그래프, 매트랩 등을 표시하고 나타내기 위해 사용하는 라이브러리는 matplotilb이다. 하지만 필자는 Plotly를 사용할 것이다. 왜냐하면 우리의 데이터는 시계열 데이터이다. 코로나 바이러스 확진자를 예측하기 계절성을 부여하기 위해선 Plotly만한 기술이 없다. 이를 통해 그래프 상으로도 각각의 계절성, 확진자 수 등 여러 가지를 확인할 수 있다.
1-5. facebook Prophet
가장 중요한 기술이다. 많은 데이터를 전처리하여 고급의 데이터를 얻을 수 있다. 하지만 예측 모델의 파워나 올바른 모델을 사용하지 못한다면 정확도는 기하급수적으로 하락한다. 코로나 바이러스 확진자 데이터는 시계열 데이터이다. 시계열 데이터기 때문에 그에 가장 잘 맞는 라이브러리이다. 필자도 이 라이브러리를 사용하기엔 많은 시간이 걸렸다. RNN이나 LSTM 같이 직접 모델을 개발해서 사용한 경험밖에 없었기 때문이다. 그렇기 때문에 여러 커뮤니티에 질문을 올리고 검색한 결과 시계열 예측 라이브러리인 Prophet을 사용하게 되었다. Prophet의 가장 큰 장점은 정확도가 높고 빠르며 직관적인 파라미터로 모델 수정이 용이하다는 장점이다. 또한 많은 코딩이 필요한 모델 작업을 간단한 코딩만으로도 정확성이 높은 모델을 구현할 수 있다. 이것만으로도 엄청난 장점이다.
*필자가 추후 Prophet을 따로 정리하여 글을 올리겠다. ( 공식 논문 참고 할 예정.)
1-6. Data
이것도 Prophet만큼 가장 중요한 것이다. 데이터 = AI의 정확도 라고 생각해도 무방하다. 데이터를 잘 처리하는 이유가 뭔가? 바로 높은 정확도를 자랑하는 모델을 만들기 위해서다. 그렇기 때문에 데이터의 질, 양 또한 매우 중요하다. 필자는 존스홉킨스 대학에서 제공하는 전 세계 지역별 확진자, 회복자, 사망자 데이터를 사용했다. 구글 검색 및 공홈 방문, 깃 헙에 있는 코로나 바이러스 데이터를 사용해도 된다.
*그중에서 한국(Republic of korea)의 데이터만 사용해도 무방하다. 꼭 한국 데이터가 정확한 데이터인지 확인하자.
첫 번째 시간에는 사용될 기술과 기술의 장점 등을 알아보았다. 다음 시간은 데이터를 처리하는 과정을 소개할 것이다.
아래 사진은 필자의 최종 예측 결과이다.