AutoML을 위한 PyCaret
이번 포스팅에서는 PyCaret에 관한 내용을 공유해보려고 합니다. 간단한 예시를 통해 실습해보도록 하겠습니다.
PyCaret 이란?
PyCaret은 Machine Learning Workflow를 자동화하는 오픈소스 라이브러리 입니다. scikit-learn 패키지를 기반으로하고 있으며 Classification, Regresison, Clustering 등의 Task에서 사용하는 여러 모델들을 동일한 환경에서 한 번에 한 줄의 코드로 실행할 수 있도록 자동화한 라이브러리 입니다. 여러 모델을 비교할 수 있으며, 각 모델 별로 튜닝을 진행할 수 있습니다.
그렇다면 간단한 예제로 실습해보겠습니다.
DataSet 준비 및 Setup
PyCaret에서 제공하는 get_data 함수로 juice 데이터를 불러옵니다. 데이터를 불러오면 자동으로 .head()를 실행하여 5개의 row를 출력합니다.
from pycaret.datasets import get_data
dataset = get_data('juice')
이제 setup()이라는 함수를 통해 필요한 모든 환경을 initialize합니다.
from pycaret.classification import *
setup_clf = setup(data=dataset, target='Purchase')
실행 결과로 아래와 같이 모든 column에 대한 자료형이 나오는데 확인 하고 Enter를 하면 자동으로 setup된 모든 세팅 값이 출력됩니다.
모델 생성
1) create_model() create_model() 함수로 특정 ML을 만들고 학습할 수 있는데요, 지원하는 ML과 파라미터로 넣어야 하는 이름은 다음과 같습니다.
rf = create_model('rf', fold=5)
2) compare_models() 위에서 하나의 ML 모델을 생성해서 학습하는 방법을 알아봤으니, pycaret의 강력한 기능인 모든 ML기법을 활용해서 비교하는 방법을 알아보겠습니다. compare_models()라는 함수로 지원하는 대부분의 ML모델들을 자동으로 학습하여 결과를 띄워줍니다. 이때 파라미터로 원하는 metric으로 정렬을 할 수 있고, 사용을 원하는 모델의 개수를 지정해 줄 수 있습니다. 위에 열거된 모델 들 중 Accuracy 기준으로 성능이 좋은 3개의 모델만 top3 변수에 입력합니다.
top3 = compare_models(sort='Accuracy', n_select=3)
모델 Tuning 및 Blending
Model Tuning : 그럼 이제 위에서 선택된 5개의 모델을 tuning해보겠습니다. pycaret에서 지원하는 tune_model() 함수를 사용합니다. 기본 파라미터로 튜닝할 모델 변수를 입력하면 됩니다. 이외에도 다양한 파라미터가 있지만 기본 옵션으로 진행해보겠습니다.
tuned_top3 = [tune_model(i) for i in top3]
Blending 이제 위 3개 모델의 혼합한 모델을 생성합니다. blend_models() 함수를 사용하여 위에서 튜닝한 tuned_top3 변수를 입력합니다.
모델 컴파일
blender_top3 = blend_models(estimator_list=tuned_top3)
평가
마지막으로 모델 평가입니다. check_metric을 import 하고, gt와 prediction을 각각 입력하고, 확인하고 싶은 metric을 입력하면 결과값을 확인할 수 있습니다. Accuracy의 Mean 값이 조금 상승하는 것을 확인할 수 있습니다.
from pycaret.utils import check_metric
check_metric(prediction['Purchase'], prediction['Label'], metric = 'Accuracy')
참고 자료